diff --git a/0CC-readme.txt b/0CC-readme.txt deleted file mode 100644 index 0240e9558..000000000 --- a/0CC-readme.txt +++ /dev/null @@ -1,945 +0,0 @@ -0CC-FamiTracker Mod -Readme / Manual -Written by HertzDevil -Version 0.3.14.5 - Jan 16 2017 - --------------------------------------------------------------------------------- - - +=========+ - | About | - +=========+ - -0CC-FamiTracker is a modified version of FamiTracker that incorporates numerous -new features that work in exported NSFs and interface improvements. The name -"0CC" comes from the author's favourite arpeggio effect command. The current -version includes: - -- Partial FamiTracker 0.5.0 beta support -- Sound engine extensions: - - Ad-hoc multichip NSF export - - Echo buffer access - - Polyphonic note preview -- New effects: - - Hardware volume envelope effects - - Delayed channel effects - - FDS automatic FM effects - - N163 wave buffer access effect -- Instrument extensions: - - Arpeggio schemes - - Instrument recorder - - Compatible sequence instruments -- Interface extensions: - - Find / replace tab - - Transpose dialog - - Split keyboard -- Extra module contents: - - Detune settings - - Groove settings - - Bookmark manager - - Linear pitch mode - -See the change log for the full list of changes made in 0CC-FamiTracker. - -This program and its source code are licensed under the GNU General Public -License Version 2. Differences to the original FamiTracker source are marked -with "// // //"; those to the ASM source with ";;; ;; ;" and "; ;; ;;;". Since -version 0.3.12, the source code is no longer included within the download; -always consult the Github page for up-to-date source code files. - -The current build is based on the version 0.5.0 beta 5 release of the vanilla -FamiTracker. 0CC-FamiTracker will be ported to newer vanilla releases once they -become available; features added in 0CC-FamiTracker may not have identical -behaviour as the corresponding features on the vanilla branch. - - - - +=========+ - | Links | - +=========+ - -- http://hertzdevil.info/programs/ - The download site for all versions of 0CC-Famitracker. -- http://0cc-famitracker.tumblr.com/ - The official development log of 0CC-FamiTracker. -- http://hertzdevil.info/bug/main_page.php - The official bug tracker for all of HertzDevil's projects, including this - tracker. Feature requests and bug reports can be sent here. -- http://github.com/HertzDevil/0CC-FamiTracker - The Git source repository for the tracker. -- http://github.com/HertzDevil/0CC-FT-NSF-Driver - The Git source repository for the NSF driver. - - - - +==================================+ - | FamiTracker 0.5.0 Beta Support | - +==================================+ - -0CC-FamiTracker 0.3.14.3 and above support the loading of modules created in any -beta build of vanilla FamiTracker 0.5.0. See -https://gist.github.com/HertzDevil/c158d826a344e5ffbc0c0989e1c96a24 for the -current status of porting 0.5.0 beta module features. - -The current implementation of the Sunsoft 5B chip is different from the vanilla -beta in the following ways: - -- Commands V00 - V03 disable the envelope output and V04 - V07 enable it. -- Hx0 does not affect whether the current channel produces envelope output. - Only Vxx and the instrument noise / mode sequence may be used to control the - envelope flag. -- The envelope generator is retriggered whenever a note triggers on a channel - with envelope output enabled, or any Hxy effect command is issued. - -0CC-FamiTracker continues to save modules in the format version that is readable -by vanilla version 0.4.6. There is no guarantee that any 0.5.0 beta module saved -in the current version of 0CC-FamiTracker can be opened in the beta again. - - - - +===============================+ - | Ad-hoc Multichip NSF Export | - +===============================+ - -The Module Properties dialog now uses the same expansion chip selector as ipi's -mod (http://famitracker.com/forum/posts.php?id=5235). Each expansion chip can be -individually toggled on or off using the check boxes. Unlike the original build, -after the expansion chip configuration is modified, the pattern data move to the -correct channel positions so that data loss is prevented. (See below for a -description of the pitch mode setting.) - -Since 0.3.6, 0CC-FamiTracker also allows ad-hoc exporting of multichip NSFs by -temporarily enabling all expansion chips. - - - - +======================+ - | Echo Buffer Access | - +======================+ - -0CC-FamiTracker supports an echo buffer for each channel. Upon playing, the echo -buffer is emptied; whenever the channel encounters a note or a note halt, that -event is pushed into the echo buffer. Then, using the corresponding echo buffer -access note (which must be manually assigned to a key in the configuration menu -by default), entries in the echo buffer can be retrieved. Effectively, "^x" -skips x notes above and retrieves that note event. All access note events are -processed during run-time in exported NSFs. - -The skip amount is determined by the octave number during inserting an echo -buffer access note, and is restricted between 0 and 3. These notes cannot be -modified while transposing in a selection, but can be "transposed" if the -selection contains only the access note. - -When a transposing effect is used, the first entry in the echo buffer will also -change accordingly. Currently, these effects have this behaviour: Qxy, Rxy, Txy - - - - +===========================+ - | Polyphonic Note Preview | - +===========================+ - -In 0CC-FamiTracker 0.3.14.2 and above, when edit mode is disabled, notes that -are input at the pattern editor (not at the instrument editor) will be -automatically queued to groups of equivalent channels, so that multiple notes -can be played simultaneously without breaking channel limits. The following -channel groups are available: - -- 2A03 pulse channels and MMC5 pulse channels -- 2A03 triangle -- 2A03 noise -- 2A03 DPCM -- VRC6 pulses -- VRC6 sawtooth -- VRC7 FM channels -- FDS channel -- N163 channels -- 5B square channels - -Notes are always queued to the currently selected channel first, then the -channels to the right. If the number of played notes exceeds the channel count -within the current group, the earliest played notes will be interrupted by new -ones. - -When previewing N163 instruments that load multiple waves, it is often necessary -to insert appropriate Zxx effects somewhere in the pattern, then play that -single row to reserve different positions in the wave buffer so that notes do -not interfere with each other. Similarly, channel volume commands might be -needed to reduce the volume of some sound chips while playing. - - - - +====================================+ - | Hardware Volume Envelope Effects | - +====================================+ - -The following effects have been added to access several features on the 2A03 -chip and the MMC5 pulse channels: - -- EE0 - EE3 - Bit 0 toggles the hardware envelope on the pulse channel or the noise - channel, which causes the channel volume to affect the channel's decay rate - instead of the output amplitude. Smaller values give a faster decay. If the - length counter is disabled (see below), the output amplitude warps, otherwise - it stays at 0 after the decay finishes. On the triangle channel, this bit - also toggles the linear counter since both must be active at the same time. - Bit 1 toggles the length counter on the pulse or noise channel. On the - triangle channel, both this and the linear counter may cut the channel's - output after a fixed number of counter clocks have elapsed, whichever comes - first. -- E00 - E1F - Sets the length counter to the value listed below, and enables the length - counter if it was disabled. Works on the pulse, triangle, or noise channel. - On the triangle channel, this effect also initializes the linear counter; - whichever is shorter will terminate the triangle output first. On - initialization, this value is set to be 0x01 (254). - | 0 1 2 3 4 5 6 7 8 9 A B C D E F - ----+--------------------------------------------------------------- - +00 | 10 254 20 2 40 4 80 6 160 8 60 10 14 12 26 14 - +10 | 12 16 24 18 48 20 96 22 192 24 72 26 16 28 32 30 -- Sxx - On the triangle channel, resets the linear counter to (xx - 0x80). If xx is - smaller than 0x80, this effect disables the linear counter and the length - counter, then behaves as the usual delayed note cut effect. S80 - SFF as the - original effect has been disabled on all channels since NSF export does not - work. - -Currently, the hardware envelope and the linear counter are clocked at 240 Hz, -and the length counter at 120 Hz on 2A03 channels, 240 Hz on MMC5 channels. All -are independent from the module's engine speed. Volume mixing between the -channel volume and the instrument sequence still takes place while hardware -envelope is enabled! - -The following effects have been added to access the volume envelope unit of the -FDS sound hardware: - -- E00 - E3F - Enables the hardware volume envelope, sets the direction to positive (attack - envelope), and sets the rate to the effect parameter. A smaller rate value - corresponds to a faster envelope. -- E40 - E7F - Enables the hardware volume envelope, sets the direction to negative (decay - envelope), and sets the rate to the effect parameter, minus 0x40. A smaller - rate value corresponds to a faster envelope. -- EE0 - Disables the hardware volume envelope and returns volume control to the - tracker's sound driver. - -When the hardware volume envelope is enabled on the FDS, every time a note is -triggered, the FDS channel returns to that initial volume, and then yields -control to the envelope unit. The envelope can also be enabled during a note, so -that the attack/decay takes effect immediately. All volume changes not due to -the envelope unit still remain in the memory; as soon as the EE0 effect is -issued, this volume value is instantly recalled. - - - - +===========================+ - | Delayed Channel Effects | - +===========================+ - -The following effects have been added to 0CC-FamiTracker that perform certain -actions after x or xx frames have elapsed: - -- Lxx - Issues a note release, triggering the release part of the sequences used by - the current instrument, or triggering the release command of VRC7 patches, or - halting DPCM samples without writing to the DPCM bias. The delay amount must - be less than 0x80. -- Mxy - Sets the channel volume to y. This effect has been reserved in the effects - enumeration since vanilla 0.3.5. Both parameters must be nonzero for - 0CC-FamiTracker to recognize this effect. - After a delayed channel volume effect is issued, the next note will restore - the original channel volume if the Axy volume slide effect is not active. The - effect can still set the channel volume even though new notes appear before - the x frames that follow, but the counter is always reset when a new Mxy - effect is encountered before the previous one overwrites the channel volume. -- Txy - Transposes the channel by y semitones, upwards if bit 7 is clear, and - downwards if bit 7 is set. Here x has an effective range of 0 to 7 frames, so - any value larger than 7 would be subtracted by 8 and the direction would be - taken as downward. - - - - +============================+ - | FDS Automatic FM Effects | - +============================+ - -0CC-FamiTracker overloads the FDS effects in FamiTracker so that the FM rate of -the FDS channel may be realized as a multiple of the carrier frequency during -run-time. These effects are: - -- Ixy - When x is not equal to 0, enables auto-FM, and sets the modulator frequency - to the carrier frequency multiplied by x / (y + 1). -- Hxx - When xx is 0x80 or larger, sets the modulator multiplier's numerator to xx, - so that the multiplier becomes xx / (y + 1) where y is previously set by an - Ixy command. This effect command does nothing if auto-FM is disabled. - FamiTracker's effect evaluation order is from left to right (except for Gxx), - thus no Ixy effects should appear to the right of any Hxx effect on the same - row for it to become effective. -- Zxx - Sets the modulator frequency bias, which is an FM analog of the Pxx effect; - the bias is added to the value resulting from modulator multiplication as the - final register value. The default value of the modulator bias is 0x80. No - special handling is done when the current module uses linear pitch. - -Automatic FM does not apply to the FDS channel if the current instrument uses a -non-zero FM rate. All effects are stateful, so they do not have to be issued for -each individual note; using the existing forms of the FDS effects will disable -auto-FM immediately, but the modulator bias value remains effective once auto-FM -is enabled again. - - - - +==================================+ - | N163 Wave Buffer Access Effect | - +==================================+ - -0CC-FamiTracker has a new effect, Zxx, exclusive to the N163 channels, that -allows controlling the wave buffer more effectively: - -- Z00 - Z7E - Sets the channel's wave buffer position to the effect parameter, overriding - the wave position of N163 instruments. All read / write operations on the - wave buffer use the sample position determined by the effect parameter times - 2 (each byte holds 2 samples) until the reset effect below is encountered. - 0CC-FamiTracker performs bounds checking to ensure that the N163 channels - will not read from the non-wave registers, but the exported NSFs do NOT - perform this check. Use this effect at your own risk. -- Z7F - Returns the wave buffer control to N163 instruments, allowing N163 - instruments to read and write to their default wave positions. This command - takes effect immediately; the current instrument will write to the wave - buffer at the position designated by the current instrument as soon as this - effect command is encountered. - -This effect is shown as Yxx in version 0.3.7 and 0.3.8. These will be converted -to the chip-specific form of Zxx automatically upon loading a module. - - - - +====================+ - | Arpeggio Schemes | - +====================+ - -Arpeggio schemes are a generalization of the 0xy arpeggio effect command which -allows the arpeggio sequences of instruments to carry variable entries modified -by the 0xy effect. - -To use arpeggio schemes, they must be input using the MML field of the arpeggio -sequence editor. (The use of the Sunsoft 5B noise sequence editor is planned.) -The MML field accepts terms formed by "x" added to, "y" added to, or "y" -subtracted from any numeral between -27 and +36 inclusive. These occurrences of -"x" and "y" will be substituted with the respective parameters of the 0xy effect -whenever FamiTracker encounters these in patterns. Alternatively, by holding any -numpad key as below while clicking on the graph editor, a specific arpeggio type -can be accessed from the graph: - -- 0 -> None -- 1 -> +x -- 2 -> +y -- 3 -> -y - -As an example, given the following absolute arpeggio sequences: - -- {| 0 12 4 16 7 19} -- {| 0 12 3 15 7 19} -- {| 0 12 5 17 9 21} - -These can be replaced with one single arpeggio scheme: - -- {| 0 12 x x+12 y y+12} - -By using 047, 037, and 059, all three sequences can be invoked from one arpeggio -scheme. "x" and "y" can go before or after the numerals in each sequence term. -"-y" is valid but "-x" is not; thus these terms are all effective: - - x+12 12+x y+12 12+y -y+12 12-y - x-12 -12+x y-12 -12+y -y-12 -12-y - - - - +=======================+ - | Instrument Recorder | - +=======================+ - -0CC-FamiTracker allows logging the output of sound channels to new instruments, -providing a new way to create instruments from pattern data. Right-clicking any -channel header or going to the Tracker menu from the main menu bar shows an -option to mark the current channel as ready for recording; the next time the -tracker plays the song, temporary instruments are created, whereas data will be -continuously appended to the sequences used by these instruments, which are -added to the instrument list once the song stops or the sequence size reaches -the designated amount. - -The final volume and pitch are logged to the current instrument on every tick; -except for the features listed below, this instrument would replicate the output -of the recorded channel by assuming a channel volume of F and the current detune -settings. Inconsistent tracker settings might produce different results. - -The instrument recorder only allows logging output that may be represented by -the respective instrument type of the sound chip; in particular, only sequence -instruments are supported right now. The following features are recorded only -once on the _final_ tick of each instrument upon playing: - -- The FDS instrument waveform; -- The frequency modulation parameters for an FDS instrument; -- The wave position for an N163 instrument. - -The following features will not be recorded: - -- The DPCM channel and any VRC7 channel; -- Half of the volume values for the VRC6 sawtooth channel, if accessible - otherwise; -- Hardware features accessible only by pattern effect commands; -- The FDS modulation table; (might be cached in the future) -- FDS waveform changes; -- More than 63 waveforms per N163 instrument, as well as any waveform whose - size is different from the first recorded value, in which case the waveform - of the previous tick is used. - -Below the "Record to Instrument" option, "Recorder Settings" brings up a dialog -where parameters for the instrument recorder can be changed: - -- Sequence length - The maximum number of sequence terms per instrument logged. This value is - limited below the maximum sequence size (252 ticks), and customarily limited - above 24 ticks. -- Maximum instrument count - The number of instruments generated by the recorder before logging - automatically stops during playing. The recorder may emit as many new - instruments as possible until the current module cannot contain any more - data. -- Re-initialize settings upon stopping - If checked, the recorder resets to 252 ticks and 1 maximum instrument after - the current recording session ends. - -Extremely high refresh rates may cause the recorder to discharge instruments too -quickly or crash the tracker; Excessive use of this feature can easily lead to -instrument data overflow during NSF export; use with care. - - - - +===================================+ - | Compatible Sequence Instruments | - +===================================+ - -The NSF driver already allows instruments to be used interchangeably on several -chips to a certain degree in exported NSFs, namely those from 2A03, VRC6, N163, -FDS, or 5B; these sound chips and MMC5 share a unified sequence instrument type. -(N163 does not actually work because it injects data before sequence settings.) -Since version 0.3.13, 0CC-FamiTracker adds full tracker-side support for using -these sequence instruments across expansion chips, while handling the duty/wave -setting for the respective chip appropriately. - -Instruments from the sound chips listed above can be used across these chips. -Their volume, arpeggio, and (hi)-pitch sequences are processed according to the -target chip configuration. The following rules for duty cycle conversion apply: - -- 2A03, MMC5 - VRC6 duty cycles from 6.25% to 12.5% become 12.5%, duty cycles from 43.75% to - 50% become 50%, and the rest become 25%. N163 wave indices are processed as - is. 5B duty cycles always become 50%. There is no special handling of the - duty cycle value regarding the noise generator of 2A03 or 5B. -- VRC6 - 2A03 75% becomes 25%, the rest remain the same. N163 wave indices are - processed as is. 5B duty cycles always become 50%. There is no special - handling related to the sawtooth channel. -- FDS - Non-FDS sequence instruments do not write to the wave buffer nor alter the - FDS channel's frequency modulation parameters. FDS instruments on non-FDS - channels do not affect the wave buffer. -- N163 - Non-N163 sequence instruments do not write to the wave buffer nor alter the - current channel's wave parameters. N163 instruments on non-N163 channels do - not affect the wave buffer. Duty cycle does not affect the current channel - when the currently playing instrument is not from N163. -- 5B - All non-5B instrument duty values enable tone output, plus disable the noise - and envelope outputs. 5B intruments on non-5B channels do not affect the - envelope/noise generator. - -Duty conversion occurs only through duty/wave instrument sequences; the Vxx -effect modifies the duty cycle/wave index directly, without invoking any -conversion method. Instruments may work even if the respective sound chip is -absent from the current module/NSF, and for this reason instrument sequences on -unused sound chips remain in the current module file when saved. - -Except for the duty sequences, all other sequence types are raw; no conversion -takes place to account for the differences in the volume and pitch registers -between sound channels. - - - - +======================+ - | Find / Replace Tab | - +======================+ - -The Find / Replace tab is an addition to 0CC-FamiTracker, toggled by Ctrl+F by -default, that allows quick searching and replacement of pattern data in a -module. - -The four query fields are: - -- Note, the note field, which could be one of the following: - - The note as notated in the pattern editor, possibly without an octave. The - noise channel can be searched if and only if the note field is identical - to any noise note (e.g. "4-#", "C-#"); - - "-" or "---" for note rest; - - "=" or "===" for note release; - - "^", possibly followed by a buffer index, for echo buffer access; - - an integer between 0 and 95 representing the absolute note from C-0 to - B-7; - - "." for any note event, or ".-#" for any note on the noise channel. -- Inst, the instrument index, which could be any hexadecimal number between 0 - and 3F, or "." for any non-empty index; -- Vol, the channel volume, which could be any hexadecimal digit, or "." for any - non-empty value; -- FX, the effect command, which could be any valid effect character or the - character "." for any non-blank effect, possibly followed by a hexadecimal - effect parameter. - -Above each field is a button which, when not depressed, indicates that the -respective field will be ignored in the query. If the field is enabled and -empty, the query contains a blank field for that part of the note. For the -search query, both fields are required to be blank in order to search blank -fields. - -Below three of the search query fields are optional fields that allow one to -specify the range of the respective query. Either field can be used if range -searching is not need; the top field does not necessarily have to represent a -greater value than the bottom field. For example, the query below finds all rows -with a note between A-3 and G-4, using instrument 05 and a volume of 7 or less: - - Note Inst Vol FX - A-3 (blank) 7 (disabled) - G-4 05 0 - -There is currently no range searching for the effect parameter. Range search -queries do not allow wildcards of any form; for the note query this includes -commands with no specified octave value. - -The search scope can be modified by using the dropdown menu, which can limit the -search area to the current track, channel, frame, pattern, or selection. The -menu to the right determines which effect columns to look for while searching -and replacing data; if set to "All", 0CC-FamiTracker finds rows containing at -least one visible effect that matches, and automatically determines the correct -effect columns for replacement. - -The find / replace tab contains a few options: - -- Vertical-first searching - By default, 0CC-FamiTracker searches across the channels on a row, and then - moves to the next row. When this option is checked, the search direction - within a frame becomes moving along all the rows in a channel, then to the - next channel. -- Remove original data - When checked, replacement takes place after the target row is emptied. -- Negate search - When checked, the tracker finds rows that do not match the search query. If - the note query is used, the tracker never matches notes on a noise channel - with a melodic note and vice versa, regardless of whether this option is - enabled. - - - - +====================+ - | Transpose Dialog | - +====================+ - -0CC-FamiTracker 0.3.14.0 adds a transpose dialog under the Song menu, which -allows quickly transposing entire songs while keeping most non-melodic notes -unchanged. This is achieved by ignoring the noise and DPCM channels, as well as -selected instruments. - -The following options are available: - -- Semitones - The number of half-steps to transpose. -- Raise / Lower - Whether the track(s) is/are to be transposed up or down. -- Transpose all tracks - If enabled, the transposition applies to all tracks in the current module; - otherwise only the current track is transposed. -- Exclude these instruments - An array of checkboxes next to instrument indices. If an instrument with a - given index exists in the module, the corresponding checkbox will be enabled; - checking the box will cause the transposition to ignore all notes containing - the given instrument index, regardless of the channels these notes are on. - These settings are remembered even after the dialog is closed. -- Reverse - Changes all indices from enabled to disabled, and vice versa, including - disabled checkboxes. -- Clear All - Enables transposition for all instruments, including disabled checkboxes. - -Out-of-bound notes clip at C-0 or B-7. The undo history will be reset after -transposition. (For transposition on selected channels, enable multi-frame -selection in the configuration menu.) - - - - +==================+ - | Split Keyboard | - +==================+ - -0CC-FamiTracker allows splitting keyboard notes into two ranges, similar to how -MIDI keyboards enable playing with two instruments at the same time. The split -keyboard settings dialog, which is accessible under the Edit menu, contains -these options: - -- Enable split keyboard - Unless this option is checked, all split keyboard functionality will be - disabled. -- Split point - The highest note of the split region. -- Channel - The channel to play the notes in the split region when edit mode is disabled. - This option does nothing when editing the module, or if this option is set to - "Keep". -- Instrument - The instrument to use for all notes within the split region. If set to - "Keep", notes in the split region use the currently selected instrument; - otherwise, this instrument index is shown on the status bar next to the - selected instrument. -- Transpose - The number of semitones to add to all notes within the split region. - -When the noise channel is selected, notes could be moved outside using the -"Channel" option, and vice versa; but the "Instrument" and "Transpose" options -do not apply to notes on the noise channel. - - - - +===================+ - | Detune Settings | - +===================+ - -Since version 0.3.2, 0CC-FamiTracker is able to generate a detune settings block -for each individual module, containing information on adjusting the period or -frequency register of each individual note on each lookup table. Below "Module" -on the menu bar, clicking "Detune Settings" brings up a dialog where the detune -tables can be manipulated. - -The octave slider, note slider and chip radio buttons select the current detune -table entry to modify. The note field accepts both "#" and "-" as accidentals. - -The offset slider adjusts the fine pitch value of the current note on the lookup -table. Negative values have lower pitch and positive values have higher pitch. -The slider's range is -128 ~ 128, but using the offset field directly, any -integer can be used as the fine pitch value. - -A value of 1 on these tables is equivalent to the finest pitch offset available -in FamiTracker's sound engine, which are in turn equivalent to Pxx effects -except for the N163 table, where Pxx on N163 channels is much coarser. The N163 -detune table does not scale with the number of enabled N163 channels. - -The Reset button initializes the target detune tables with zeroes. The Tune -button will overwrite the target detune tables with an equal temperament table -lower than the 440 Hz concert pitch by the number of cents specified. Either the -current sound chip's detune table or all six tables can be chosen as the target -detune tables. - -The Import and Export buttons load and save external comma-separated values for -exchange of detune tables across modules. - - - - +===================+ - | Groove Settings | - +===================+ - -Since version 0.3.4, 0CC-FamiTracker modules may store an extra data block which -contains grooves as in Little Sound Dj, or speed sequences. While the sound -engine is loaded with a groove, at each row update the sound engine cycles -through the groove, reads a groove entry and then uses it as the song speed. -Below "Module" on the menu bar, clicking "Groove Settings" brings up a dialog -where the grooves can be manipulated. - -The groove list is be used to reorder grooves, as well as delete one or all of -them. The groove editor is used to modify the entries in the selected groove. -Grooves may be copied and pasted as space-separated values. - -Expanding the groove halves the groove's average speed and works only if all -entries are greater than or equal to 2. Shrinking the groove doubles the average -speed and works only when the groove length is a multiple of 2. - -Padding inserts the specified entry after each groove entry, so that the average -speed is halved. All entries in the groove must be greater than the pad amount. - -The Oxx effect applies the groove with index xx on the current row, starting -from the first entry; when the Fxx effect modifies the song speed, it cancels -the song groove at the same time. - -Each track can now use either a default speed or a default groove; songs using a -default groove index of 0 cannot be opened in vanilla builds. - -Each module may store up to: - -- 32 grooves; -- 255 groove bytes; (each non-empty groove uses 1 byte per entry plus 2 bytes) -- 128 entries per groove. - - - - +====================+ - | Bookmark Manager | - +====================+ - -0CC-FamiTracker allows each module to contain its own list of bookmarks for -quick navigation. Bookmarks of the current track can be accessed and manipulated -by clicking "Bookmark Manager" below "Module" on the menu bar. - -Each bookmark contains: - -- A name, which defaults to "Bookmark" and comes with an index if created from - the pattern editor directly; -- A frame index and a row index, which indicate the position of the bookmark. - Bookmarks reposition themselves upon performing frame actions such as - inserting or removing frames; -- Highlight settings which override the previous value of the track if enabled. - Using bookmarks, it is possible to change the row highlight intervals in the - middle of a track. Disabling "Apply to all following frames" will keep the - highlight distance to the current frame, so that the next frame will not use - the settings of this bookmark. - -Pressing "Create New" appends the current bookmark to the bookmark list of the -current track, and the corresponding row of the pattern editor will be marked on -the row index column. Each song of a module contains its own bookmark list, and -there is no limit to how many bookmarks a module can contain. Bookmarks can be -sorted by position or by name. - -The bookmark list supports these keyboard shortcuts: - -- Ctrl + Up / Down for moving the currently selected bookmark; -- Insert for creating a new bookmark; -- Delete for removing the currently selected bookmark. - -0CC-FamiTracker also supports pattern editor shortcuts for toggling on/off the -bookmark on the current row, and navigating to the next/previous bookmark. The -respective menu commands are available under [Edit] -> [Bookmarks]. - - - - +=====================+ - | Linear Pitch Mode | - +=====================+ - -Vanilla FamiTracker 0.4.0 and above contain unused code that would treat all -pitch effects on melodic channels uniformly; as with many other sound engines, -it achieves this by right-shifting the current pitch register in order to -approximate a linear pitch space. The linear pitch mode in 0CC-FamiTracker -improves the accuracy of this behaviour by subdividing each semitone into 32 -equal parts as the smallest pitch unit for all pitch calculations. For each -melodic channel, the final period / frequency register is calculated only after -all pitch effects have been applied in the linear space, which allows all -melodic channels to use the same pitch effects regardless of the current pitch -and their pitch register implementations (in particular, the number of enabled -N163 channels). - -Additionally, the number 0x20 corresponds to exactly a semitone in pitch -effects, thus the following statements about pitch effects hold: - -- 120 increases the current note by a semitone every tick, and similarly for - 220 and 320; -- All 4xy commands have the same amplitude regardless of the current pitch and - the vibrato mode; -- PA0 transposes upward by one semitone, and P60 downward by one semitone; -- Since QFy and RFy both instantiate a 31F command to the target note, the - slide speed will be almost the same as a semitone per tick; -- All instrument pitch sequences may use the value 32 to increase or decrease - the current note by a semitone; -- As a result of the above and compatible instrument sequences, positive - entries always denote an increase in pitch and vice versa, so existing - instruments for sound chips using period registers need to have their - sequence values inverted; -- The hi-pitch sequence corresponds exactly to quarter tone offsets. - -The linear pitch mode depends on linear interpolation between two adjacent pitch -register values; the detune table must be assumed to be smooth enough so that -pitches are as evenly spaced as possible. In this mode, slide effects no longer -automatically silence the channel on zeroing the period or frequency register, -since there is always a highest or lowest note available on the pitch lookup -table. - -If, during the pitch interpolation, the difference between two pitch registers -is less than 32, then the sound engine guarantees that the pitch of any detuned -note is different from that of the correctly tuned note below this pitch. Unless -the difference is less than 2, the pitch will also be different from the -correctly tuned note above. For example, P81 is always different from P80, but -P7F is the same as P80 for the entire octave 7 on any 2A03 channel. - -The pitch mode setting can be selected on the module properties dialog. As this -mode was indeed planned in the vanilla build, the source code contains commented -out code that would change the format of the PARAMS data block; therefore, -0CC-FamiTracker saves this flag separately in a PARAMS_EXTRA data block whenever -this mode is used, to ensure that modules using linear pitch mode do not become -incompatible. - - - - +===================================+ - | New Configuration Menu Settings | - +===================================+ - -The following options have been added to the General tab of the configuration -menu: - -- Warp pattern values - When checked, using Shift+Mouse Wheel on the instrument, channel volume, or - any effect parameter will cause these fields to overflow appropriately when - the minimum or maximum is reached. Each digit of a two-parameter effect warps - independently from the other unless they are inside a selection. -- Cut sub-volume - In NSFs exported with older versions of FamiTracker, volume values between 0 - and 1 caused by the Axy and 7xy effects will be truncated, while in later - versions these values round up to 1. When checked, the old behaviour will be - used for all channels in the tracker. This option does not affect the volume - table in exported NSFs. (As of version 2.11 of the NSF driver, only some - expansion chips use the rounding-up behaviour.) -- Use old FDS volume table - Since 0CC-FamiTracker 0.3.8, the tracker uses the same volume table as in - exported NSFs, which is slightly louder, especially at high instrument volume - and low channel volume. When checked, the existing volume table will be used - in the tracker. This option does not affect the table in exported NSFs. -- Retrieve channel state - When checked, 0CC-FamiTracker will search backward in the module to restore - the effect parameters of all effect commands that have memory, and apply them - at once before playing begins. This option does not check for global effects - that affect the playing order (such as Bxx or Dxx with non-zero parameters). -- Overflow paste mode - When checked, pattern data in the clipboard may be moved to subsequent frames - if the destination row exceeds the number of rows in the current frame. -- Show skipped rows - In previous versions of FamiTracker, rows truncated by skip effects are - displayed if and only if "Preview next/previous frame" is disabled. Since - 0CC-FamiTracker 0.3.9 this behaviour is separated from the preview option. -- Hexadecimal keypad - When checked, the following numpad keys are treated as hexadecimal digits A - - F in the pattern editor: Divide, Multiply, Subtract, Add, Enter, Decimal. - These keys are effective only if no shortcuts using them are defined in the - configuration menu (in particular, Enter / Return must not be assigned to any - shortcut). -- Multi-frame selection - When checked, selections in the pattern editor can span across multiple - frames. This behaviour is always enabled since 0.3.9, but requires manual - enabling since 0.3.11. -- Check version on startup - When checked, where an internet connection can be established, - 0CC-FamiTracker checks against the releases on the Github repository to see - if any newer version is available, and prompts the user to download the new - version if any. - - - - +=========================+ - | New Shortcut Commands | - +=========================+ - -The following shortcuts have been added to 0CC-FamiTracker: (parenthesized key -combinations are the default hotkeys if provided) - -- Paste overwrite / insert - Pastes the clipboard content at the given cursor position for pasting. In - "Overwrite", all non-empty fields in the clipboard will be pasted, regardless - of whether the target fields contain non-empty data; in "Insert", pattern - data below the pasted content is pushed downwards. -- Deselect (Esc) - Deactivates the current selection, if any. This shortcut exists in the - vanilla build but is not assignable there. -- Select row/column/pattern/frame/channel/track - Selects the entire area of the given scope containing the cursor. Multi-frame - selections must be enabled for the "Channel" and "Track" scopes. -- Select in other editor - If the pattern editor is active, moves the current selection to the frame - editor, or vice versa. -- Go to row (Alt+G) - Brings up a dialog which allows moving the cursor to any position in the - current song. -- Toggle / Solo chip (Ctrl+Alt+F9, Ctrl+Alt+F10) - Similar to "Toggle / Solo channel", but applies to the entire sound chip. -- Record to instrument - Selects the current channel for recording to new instruments. -- Toggle bookmark (Ctrl+K) - Creates a bookmark on the current row if none exists, otherwise removes all - bookmarks on the current row. -- Next / Previous bookmark (Ctrl+PgDown, Ctrl+PgUp) - Navigates to the first bookmark below / above the current row, and displays - its information on the status bar. -- Type instrument number - When pressed, the two following keypresses will be treated as a hexadecimal - instrument index, and the tracker selects the instrument with the given index - if it exists. -- Mask volume (Alt+V) - Toggles the volume mask setting. This shortcut exists in the vanilla build - but is not assignable there. -- Stretch patterns - Stretches the data in the current active selection using a user-defined map. -- Duplicate current pattern (Alt+D) - Copies the pattern below the cursor to an unused blank pattern, then modifies - the current frame to use that new pattern index. -- Coarse decrease / increase values (Shift+F3 / Shift+F4) - Increases or decreases all pattern fields except for note values by 16. -- Toggle find / replace tab (Ctrl+F) - Shows or hides the find / replace tab. -- Find next / previous - Finds the first occurrence of the search query after / before the current - row. -- Recall channel state - Searches backward in the module and accumulates the channel state, then - reports it on the status bar, as if by the "Retrieve channel state" option. - This command also reports the current groove position if a groove is used. -- Compact View - Shrinks the pattern editor so that only the note field is displayed; if a row - contains no notes, the fields to the right will be displayed grayed out. -- Toggle N163 multiplexer emulation (Ctrl+Shift+M; not configurable) - Enables or disables the old N163 emulation without the multiplexer hiss found - in early versions of FamiTracker. - - - - +=================+ - | Miscellaneous | - +=================+ - -The "Compact view" button hides all pattern columns except the note columns, and -displays greyed out text for the hidden columns for rows that do not contain a -note. This view is useful for recording videos with a lot of channels. - -"Merge Duplicated Patterns" now applies only to the current track. - - - - +================+ - | Known issues | - +================+ - -- When the triangle channel's linear counter is enabled, the high byte of the - period cannot be changed; this is intended behaviour because any write will - reset the linear counter -- MMC5's length counter depends on the 2A03's frame counter -- In exported NSFs, the echo buffer is updated as Txy effects are applied; in - the tracker this happens upon encountering Txy effects - - - - +===========+ - | Credits | - +===========+ - -- jsr: Original developer -- Alexander283: Original arpeggio scheme proposal -- ImATrackMan: FDS / 5B NSF hardware recordings -- ipi: Original implementation of the Lxx effect and expansion chip selector, - "Usual Day" demo module -- jsr: Partial implementation of the Sunsoft 5B chip and linear pitch mode -- m9m, MrKyurem, Patashu, Phroneris, retro_dpc, techel, Threxx, w7n, - Xyz_39808, YobaHere: Bug testing -- jfbillingsley: N163 waveform manager design - --------------------------------------------------------------------------------- - -For enquiries mail to nicetas.c@gmail.com diff --git a/Dn-FamiTracker.rc b/Dn-FamiTracker.rc index c114ea2fa..807c9bb23 100644 --- a/Dn-FamiTracker.rc +++ b/Dn-FamiTracker.rc @@ -553,12 +553,12 @@ BEGIN BEGIN VALUE "CompanyName", "Dn Programming Core Management" VALUE "FileDescription", "Dn-FamiTracker, Extension of FamiTracker" - VALUE "FileVersion", "0.5.1.1" + VALUE "FileVersion", "0.5.2" VALUE "InternalName", "Dn-FamiTracker.exe" VALUE "LegalCopyright", "(c) jsr 2005-2020, HertzDevil 2014-2018, Dn Programming Core Management 2020-2025. All rights reserved." VALUE "OriginalFilename", "Dn-FamiTracker.exe" VALUE "ProductName", "Dn-FamiTracker" - VALUE "ProductVersion", "0.5.1.1" + VALUE "ProductVersion", "0.5.2" END END BLOCK "VarFileInfo" @@ -2127,11 +2127,11 @@ FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "Update",IDOK,115,175,50,14 PUSHBUTTON "Cancel",IDCANCEL,170,175,50,14 - LTEXT "A new version of Dn-FamiTracker is now available.",IDC_STATIC,7,7,162,8 + LTEXT "A new version of Dn-FamiTracker has not been found.",IDC_VERSION_STATIC,7,7,174,8 LTEXT "Version (released on )",IDC_VERSIONDATE_MSG,7,21,213,8 - LTEXT "Release notes:",IDC_STATIC,7,36,49,8 + LTEXT "Release notes:",IDC_VERSION_STATIC2,7,36,213,8 EDITTEXT IDC_RELEASE_MSG,7,52,213,80,ES_MULTILINE | ES_READONLY | WS_VSCROLL | NOT WS_TABSTOP,WS_EX_TRANSPARENT - LTEXT "Pressing ""Update"" will launch the Github web page for this release.",IDC_STATIC,7,140,213,8 + LTEXT "Pressing ""Update"" will open the GitHub page for the latest release.",IDC_VERSION_STATIC3,7,140,213,8 CONTROL "Do not remind me again.",IDC_UPDATE_REMIND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,156,213,10 END diff --git a/Dn-help b/Dn-help index 71630dc8b..b45d3001e 160000 --- a/Dn-help +++ b/Dn-help @@ -1 +1 @@ -Subproject commit 71630dc8ba01799f7a6ab1ef2c16aaf17f4df818 +Subproject commit b45d3001e87c53ecdd9f262cca433ab0c9ba9740 diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 000000000..67f599f44 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,89 @@ +# Licenses + +The application is distributed under the +[GPLv3+ license](https://www.gnu.org/licenses/gpl-3.0.en.html), or any later +version. + +```_ +Dn-FamiTracker - NES/Famicom sound tracker +Copyright (C) 2020-2025 D.P.C.M. +FamiTracker Copyright (C) 2005-2020 Jonathan Liss +0CC-FamiTracker Copyright (C) 2014-2018 HertzDevil + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +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 +version. + +- FamiTracker + - Copyright (C) 2005-2020 Jonathan Liss + - Licensed under + [GPLv2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html), or any + later version. +- 0CC-FamiTracker + - Copyright (C) 2014-2018 HertzDevil + - 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 + - Licensed under the [MIT license](https://mit-license.org/). +- FDS and N163 sound emulator from Mesen + - Copyright (C) 2014-2024 Sour + - Licensed under + [GPLv3](https://www.gnu.org/licenses/old-licenses/gpl-3.0.en.html), or any + later version. +- 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++) + - Copyright (C) 2017 Project Nayuki + - Licensed under the + [MIT license](https://mit-license.org/). +- JSON for Modern C++ + - Copyright (C) 2013-2024 Niels Lohmann + - Licensed under the [MIT license](https://mit-license.org/). +- libsamplerate + - Copyright (C) 2012-2016, Erik de Castro Lopo . + 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). diff --git a/README.md b/README.md index 6aed685c2..5ee1b2e03 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,15 @@ -![Dn-FamiTracker banner logotype](docs/dn_logo.svg) +# ![Dn-FamiTracker banner logotype](docs/dn_logo.svg) -Dn-FamiTracker is a fork of 0CC-FamiTracker that incorporates numerous fixes and features. - -The meaning of the name "Dn" is "Derivative n", which alludes to this fork being the nth derivative of the original FamiTracker program. +Dn-FamiTracker is a fork of 0CC-FamiTracker that incorporates numerous fixes and +features. --- +## About + +The meaning of the name "Dn" is "Derivative n", which alludes to this fork being +the nth derivative of the original FamiTracker program. + ## Notable additions - New effects: `Nxx`, `=xx`, `Kxx` @@ -14,80 +18,52 @@ The meaning of the name "Dn" is "Derivative n", which alludes to this fork being - Fixed metadata support on NSF 2.0 and NSFe export - Complete text import/export - DPCM sample bit order reversal -- Multitrack per-channel export +- Multitrack per-channel `.wav` export - More accessible DPCM pitch preview - More accessible VRC7 patch and envelope editing - Improved FDS, N163 VRC7 and 2A03 emulation -- Restored Help manual, now under maintenance at [Dn-help](https://github.com/Dn-Programming-Core-Management/Dn-help) -- and more to come, see the [release page](https://github.com/Dn-Programming-Core-Management/Dn-FamiTracker/releases) and the [changelog](docs/CHANGELOG.md) for more info +- Restored Help manual, now under maintenance at + [Dn-help](https://github.com/Dn-Programming-Core-Management/Dn-help) +- and more to come, see the + [release page](https://github.com/Dn-Programming-Core-Management/Dn-FamiTracker/releases) + and the [changelog](docs/CHANGELOG.md) for more info ## Downloads -- Download releases: [![GitHub all releases](https://img.shields.io/github/downloads/Dn-Programming-Core-Management/Dn-FamiTracker/total?logo=github&style=flat-square)](https://github.com/Dn-Programming-Core-Management/Dn-FamiTracker/releases) -- GitHub Actions automated builds: [![GitHub Actions](https://img.shields.io/github/actions/workflow/status/Dn-Programming-Core-Management/Dn-FamiTracker/build-artifact.yml?style=flat-square)](https://github.com/Dn-Programming-Core-Management/Dn-FamiTracker/actions/workflows/build-artifact.yml) -- Github Actions automated release builds: [![GitHub](https://img.shields.io/github/actions/workflow/status/Dn-Programming-Core-Management/Dn-FamiTracker/build-release-artifact.yml?style=flat-square)](https://github.com/Dn-Programming-Core-Management/Dn-FamiTracker/actions/workflows/build-release-artifact.yml) -- Legacy AppVeyor Gumball2415 builds: [![AppVeyor](https://img.shields.io/appveyor/build/Gumball2415/dn-famitracker-legacy?logo=appveyor&style=flat-square)](https://ci.appveyor.com/project/Gumball2415/dn-famitracker-legacy/history) -- Legacy AppVeyor automated D.P.C.M. builds: [![AppVeyor](https://img.shields.io/appveyor/build/Gumball2415/dn-famitracker?logo=appveyor&style=flat-square)](https://ci.appveyor.com/project/Gumball2415/dn-famitracker/history) -- AppVeyor notices: - - Due to delayed AppVeyor reintegration, builds for commits `dc4c9e86` to `21413603` are not available. - - Due to delayed AppVeyor branch reconfiguration, builds for commits `bc46c86c` to `a591d154` are not available. - - Due to less reliability, AppVeyor builds beyond `2c997736` are not available. +- Latest release: + - [![Latest release](https://img.shields.io/github/v/release/Dn-Programming-Core-Management/Dn-FamiTracker?sort=semver&display_name=release&logo=github&style=flat-square)](https://github.com/Dn-Programming-Core-Management/Dn-FamiTracker/releases/latest) +- GitHub Actions automated builds: + - [![GitHub Actions](https://img.shields.io/github/actions/workflow/status/Dn-Programming-Core-Management/Dn-FamiTracker/build-artifact.yml?logo=github&style=flat-square)](https://github.com/Dn-Programming-Core-Management/Dn-FamiTracker/actions/workflows/build-artifact.yml) + +### AppVeyor CI build notice + +- Due to delayed AppVeyor reintegration, builds for commits `dc4c9e86` to + `21413603` are not available. +- Due to delayed AppVeyor branch reconfiguration, builds for commits `bc46c86c` + to `a591d154` are not available. +- Due to less reliability, AppVeyor builds beyond `2c997736` are not available. + +### Legacy AppVeyor automated builds + +- Legacy AppVeyor automated D.P.C.M. builds: + - [![AppVeyor](https://img.shields.io/appveyor/build/Gumball2415/dn-famitracker?logo=appveyor&style=flat-square)](https://ci.appveyor.com/project/Gumball2415/dn-famitracker/history) +- Legacy AppVeyor Gumball2415 builds: + - [![AppVeyor](https://img.shields.io/appveyor/build/Gumball2415/dn-famitracker-legacy?logo=appveyor&style=flat-square)](https://ci.appveyor.com/project/Gumball2415/dn-famitracker-legacy/history) ## Licenses -The application and the source code are distributed under the [GPLv3+ license](https://www.gnu.org/licenses/gpl-3.0.en.html). - -Copyright (C) 2020-2024 D.P.C.M. - -### Tracker software and libraries - -- FamiTracker - - Copyright (C) 2005-2020 Jonathan Liss - - Licensed under [GPLv2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html). -- 0CC-FamiTracker - - Copyright (C) 2014-2018 HertzDevil - - Licensed under [GPLv2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html). -- 2A03 sound emulator from NSFPlay - - 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 - - Licensed under the [MIT license](https://mit-license.org/). -- FDS and N163 sound emulator from Mesen - - Copyright (C) 2014-2024 Sour - - Licensed under [GPLv3](https://www.gnu.org/licenses/old-licenses/gpl-3.0.en.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++) - - Copyright (C) 2017 Project Nayuki - - Licensed under the [MIT license](https://mit-license.org/). -- JSON for Modern C++ - - Copyright (C) 2013-2024 Niels Lohmann \ - - Licensed under the [MIT license](https://mit-license.org/). -- libsamplerate - - Copyright (C) 2012-2016, Erik de Castro Lopo \. All rights reserved. - - Licensed under the [BSD-2-Clause license](https://www.freebsd.org/copyright/freebsd-license/). - -### NSF Driver - -On the FamiTracker website, the NSF driver code is distributed separately from the rest of the source code. This is because jsr wanted to license the driver under a more permissive license than GPL 2, but didn't seem to get around doing so. - -HertzDevil erroneously licensed the modified 0CC-FamiTracker NSF driver code under GPL v2, which restricts anyone sharing compiled NSFs and binaries without sharing the assembly source. - -Therefore, Dn-FT NSF driver changes are distributed under a separate MIT-0 license, while 0CC FT NSF driver changes are distributed under GPL v2. - -The remaining original FT driver code is not under any license. - -See [the license file](Source/drivers/asm/LICENSE) for more information. +The application is distributed under the +[GPLv3+ license](https://www.gnu.org/licenses/gpl-3.0.en.html), or any later +version. + +For more details, view the [license](LICENSE.md). ## Contributing -[Contributing and compiling](docs/CONTRIBUTING.md) +[Contributing and compiling](./docs/CONTRIBUTING.md) -## See also: +## Program lineage -- nyanpasu64 0CC-FamiTracker (archived): https://github.com/nyanpasu64/j0CC-FamiTracker/ -- 0CC-FamiTracker: https://github.com/HertzDevil/0CC-FamiTracker/ -- FamiTracker: https://famitracker.com/ +- nyanpasu64 0CC-FamiTracker (archived): +- 0CC-FamiTracker: +- FamiTracker: diff --git a/Readme.txt b/Readme.txt new file mode 100644 index 000000000..ef2115692 --- /dev/null +++ b/Readme.txt @@ -0,0 +1,64 @@ + ___ ___ __ __ __ ___ _____ ___ __ ___ _ _____ ___ + /=| \ _ _ ___ | __/_ | \/ |_ _|_ _| _ \ /_ |/ __| |/ / __| _ \===/ + / | |) | ' \|___|| _/ _ | |\/| || | | | | / / _ | (__| ' <| _|| / / +/===|___/|_||_| |_/_/ _|_| |_|___| |_| |_|_\/_/ _|\___|_|\_\___|_|_\=/ + +Version 0.5.2 - August 18, 2025 + +-------------------------------------------------------------------------------- + +Dn-FamiTracker is a fork of 0CC-FamiTracker that incorporates numerous fixes and +features. + +The meaning of the name "Dn" is "Derivative n", which alludes to this fork being +the nth derivative of the original FamiTracker program. + + + +Notable additions +----------------- + +- New effects: `Nxx`, `=xx`, `Kxx` +- Support for OPLL-as-VRC7 +- NSF 2.0 and NSFe export support +- Fixed metadata support on NSF 2.0 and NSFe export +- Complete text import/export +- DPCM sample bit order reversal +- Multitrack per-channel .wav export +- More accessible DPCM pitch preview +- More accessible VRC7 patch and envelope editing +- Improved FDS, N163 VRC7 and 2A03 emulation +- Restored Help manual, now under maintenance at Dn-help + - + + + +License +------- + +The application and source code are distributed under the GPLv3+ license, or any +later version. + + + +For more details, view the LICENSE.md file. + + +Uninstalling and misc. +---------------------- + +To uninstall, run "Dn-FamiTracker.exe /unregister". This will remove the file +association. + +If you have problems viewing the help manual (Dn-FamiTracker.chm), right click +it and open properties, then click the "Unblock" button in the general tab. + + + +Contact and links +----------------- + +GitHub repo: https://github.com/Dn-Programming-Core-Management/Dn-FamiTracker +Help manual repo: https://github.com/Dn-Programming-Core-Management/Dn-help +FamiTracker: http://famitracker.com/ +FamiTracker.org community Discord: https://discord.gg/3fBEEyKfMn diff --git a/Source/FamiTracker.cpp b/Source/FamiTracker.cpp index 8d4cc122e..d9ef18ca9 100644 --- a/Source/FamiTracker.cpp +++ b/Source/FamiTracker.cpp @@ -426,7 +426,7 @@ void CFamiTrackerApp::LoadLocalization() WORD Major, Minor, Build, Revision; if (GetFileVersion(DLL_NAME, Major, Minor, Revision, Build)) { - if (Major != VERSION_API || Minor != VERSION_MAJ || Revision != VERSION_MIN || Build != VERSION_REV) // // // + if (Major != VERSION_API || Minor != VERSION_MAJ || Revision != VERSION_MIN || Build != VERSION_BLD) // // // return; m_hInstResDLL = ::LoadLibrary(DLL_NAME); @@ -569,7 +569,10 @@ void CFamiTrackerApp::UnregisterSingleInstance() void CFamiTrackerApp::CheckNewVersion(bool StartUp) // // // { - //return; + // !! !! This member will be overwritten. + // we do this so the "no new updates" pop-up will only show if the user checks + // also, why do we need to pass this to the version checker thread if we're gonna return it again? + m_bStartUp = StartUp; m_pVersionChecker = std::make_unique(StartUp); // // // } @@ -746,15 +749,21 @@ BOOL CFamiTrackerApp::OnIdle(LONG lCount) // // // if (CWinApp::OnIdle(lCount)) return TRUE; - if (m_pVersionChecker && m_pVersionChecker->IsReady()) - if (auto pChecker = std::move(m_pVersionChecker); auto result = pChecker->GetVersionCheckResult()) - { + if (m_pVersionChecker && m_pVersionChecker->IsReady()) { + if (auto pChecker = std::move(m_pVersionChecker); auto result = pChecker->GetVersionCheckResult()) { m_pVersionURL = result->URL; m_pVerInfo = result->VerInfo; m_pVerDesc = result->VerDesc; m_bStartUp = result->StartUp; + m_bNewVersion = true; OnVersionCheck(); } + else { + m_bNewVersion = false; + m_pVersionURL = "https://github.com/Dn-Programming-Core-Management/Dn-FamiTracker/releases/latest"; + if (!m_bStartUp) OnVersionCheck(); + } + } return FALSE; } diff --git a/Source/FamiTracker.h b/Source/FamiTracker.h index 259690d91..6ce33fc02 100644 --- a/Source/FamiTracker.h +++ b/Source/FamiTracker.h @@ -178,6 +178,7 @@ class CFamiTrackerApp : public CWinApp public: std::unique_ptr m_pVersionChecker; // // // std::string m_pVersionURL, m_pVerInfo, m_pVerDesc; + bool m_bNewVersion; bool m_bStartUp; #ifdef SUPPORT_TRANSLATIONS diff --git a/Source/VersionChecker.cpp b/Source/VersionChecker.cpp index 1d009ec0d..0c1f9f970 100644 --- a/Source/VersionChecker.cpp +++ b/Source/VersionChecker.cpp @@ -89,14 +89,14 @@ namespace { using ft_version_t = std::tuple; std::pair FindBestVersion(const nlohmann::json& j) { - ft_version_t current = { VERSION_API, VERSION_MAJ, VERSION_MIN, VERSION_REV }; + ft_version_t current = { VERSION_API, VERSION_MAJ, VERSION_MIN, VERSION_BLD }; const nlohmann::json* jPtr = nullptr; for (const auto& i : j) { ft_version_t ver = { }; - auto& [api, maj, min, rev] = ver; + auto& [api, maj, min, bld] = ver; const std::string& tag = i["tag_name"]; - ::sscanf_s(tag.data(), "Dn%u.%u.%u%*1[.r]%u", &api, &maj, &min, &rev); + ::sscanf_s(tag.data(), "Dn%u.%u.%u%*1[.r]%u", &api, &maj, &min, &bld); if (ver > current) { current = ver; jPtr = &i; @@ -162,10 +162,8 @@ void CVersionChecker::ThreadFn(bool startup, std::promiseEnableWindow(false); + } if (theApp.m_bStartUp) SetDlgItemText(IDC_UPDATE_REMIND, _T("Do not remind me again. (may be re-enabled in config menu)")); //set visible the message diff --git a/Source/drivers/asm/LICENSE b/Source/drivers/asm/LICENSE deleted file mode 100644 index 070ccf7d5..000000000 --- a/Source/drivers/asm/LICENSE +++ /dev/null @@ -1,374 +0,0 @@ -On the FamiTracker website, the NSF driver code is distributed seperately from -the rest of the source code. This is because jsr wanted to license the driver -under a more permissive license than GPL 2, but didn't seem to get around doing -so. - -HertzDevil erroneously licensed his modified NSF driver code under GPL v2, -which restricts anyone sharing compiled NSFs and binaries without sharing the -assembly source! - -Therefore, Dn-FT NSF driver changes are distributed under a seperate MIT-0 -license, while 0CC FT NSF driver changes are distributed under GPL v2. The -remaining original driver code is not under any license. - -The texts for the MIT-0 and GPL v2 licenses are listed below: - -MIT No Attribution - -Copyright 2024 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. - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. - diff --git a/Source/drivers/asm/LICENSE.md b/Source/drivers/asm/LICENSE.md new file mode 100644 index 000000000..7d4900d54 --- /dev/null +++ b/Source/drivers/asm/LICENSE.md @@ -0,0 +1,21 @@ +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 +permitted, and attribution is recommended. + +[^1]: +[^2]: +[^3]: +[^4]: + +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-FT NSF driver modifications are under GPL v2. + +Dn-FT NSF driver modifications are under the same license as 0CC-FT NSF driver +modifications. diff --git a/Source/drivers/asm/driver.s b/Source/drivers/asm/driver.s index 38eecfa26..2adc4ce7e 100644 --- a/Source/drivers/asm/driver.s +++ b/Source/drivers/asm/driver.s @@ -7,9 +7,9 @@ ; declared in `driver.s`'s Custom Build Tool Additional Dependencies. .define DRIVER_NAME "Dn-FT " -; version 2.15 +; version 2.16 .define VERSION_MAJ 2 -.define VERSION_MIN 15 +.define VERSION_MIN 16 ; ; Assembler code switches diff --git a/changelog.txt b/changelog.txt deleted file mode 100644 index cd799aecd..000000000 --- a/changelog.txt +++ /dev/null @@ -1,1859 +0,0 @@ -Notice: changelog.txt will no longer be maintained as of 10/23/2023. -For further changelog updates, please go to docs/CHANGELOG.md - -Dn-FamiTracker Mod -Change Log -Written by Persune - -Version 0.5.0.1 - May 10, 2023 - --------------------------------------------------------------------------------- - -Dn0.5.0.1 - 05/10/2023 - -Important changes: -- Module breaking bugs have now been fixed. (@Gumball2415 #195) -- Fix effects type order bug (@Threxx11 @Gumball2415 #184 #195) -- Fix custom OPLL patch entry bug (@galap-1 @Gumball2415 #176 #195) -- Fix N163 mixing bug (@recme @Gumball2415 #174 #195) - -Improvements: -- Implement proper commandline support (@TheRealQuantam #168 #181) - -Bug fixes: -- Fix NSF driver S5B envelope autoperiod (@N-SPC700 @Gumball2415 #186 #189) -- Fix NSF driver arpeggio sequence note overflow (@N-SPC700 @Gumball2415 #189) -- Fix NSF driver VRC7 note cut behavior to match in-tracker (@MovieMovies1 - @Gumball2415 #189) -- Fix effects type order bug (@Threxx11 @Gumball2415 #184 #195) -- Fix custom OPLL patch entry bug (@galap-1 @Gumball2415 #176 #195) -- Fix N163 mixing bug (@recme @Firespike33 @Gumball2415 #174 #195) -- Fully initialize device level offset object (@Gumball2415 #195) -- Prevent module compatibility mode reinitialization (@Threxx11 @Gumball2415 - #184 #195) -- Reinitialize OPLL patchset (@galap-1 @Gumball2415 #203 #195) -- Initialize PlaybackRate and PlaybackRateType (@N-SPC700 @Gumball2415 #202 - #195) - -Internal: -- Update build tools, VS solution, CMake lists, and corresponding documentation - (@Gumball241 #186) -- Add version increment documentation (@Gumball2415 #194) -- Update VC++ program database file name in build script (@Gumball2415 #204) -- Improve Appveyor build version info (@Gumball2415 #204) -- Add Github Actions for build artifacts (@Gumball2415 #204) -- Use Windows 10 SDK version 2104 (10.0.20348.0) to avoid unexpected linker - failure (@Gumball2415 #204) - - - -Dn0.5.0.0 - 12/19/2022 - -Important changes: - -- Dn-FamiTracker modules are no longer backwards compatible with "vanilla" and - 0CC FamiTracker. -- Dn-FamiTracker Demo Compo 1 modules are now added -- N163 emulation core is replaced with Mesen's -- New effects: =xx, and Nxy -- Exports are now updated (text, NSF/NSFe, binary, asm) -- NSF2 export added -- External OPLL option (export only available for NSFe/NSF2) -- Per-module expansion mixing (export only available for NSFe/NSF2) -- Hardware-based module expansion mixing (export only available for NSFe/NSF2) -- DirectSound backend now replaced with WASAPI - -Additions: - -- Add FDS waveform view (@EulousDev #113) -- Add invalid note indicator (@EulousDev #119) -- Add Dn-FT Demo Compo 1 Modules (@Gumball2415 #153) -- Target volume slide effect (Nxy) (@ipidev #109) -- Implement Kxx and =xx in NSF driver (@Gumball2415 - nyanpasu64/j0CC-FamiTracker#122, #156) -- Add supplemental NSF data on bin/asm export (NSF header, config, period tables - and vibrato tables) (@Gumball2415 #156) -- Add mixe chunk support and per-module device mixing (@Gumball2415 #68, #156) -- Add hardware-based expansion audio mixing (@Gumball2415 #156) -- Implement external OPLL patchset editing (@Gumball2415 #68, #156) -- Implement VRC7 NSFe chunk (@Gumball2415 #156) - -Improvements: - -- Register view improvements (@Gumball2415 @nyanpasu64 @EulousDev #118, #120) -- Replace N163 audio core with Mesen (@Gumball2415 - nyanpasu64/j0CC-FamiTracker#151, #111, #138, #152) -- Refactor FDS auto-FM overflow fix (@Gumball2415 #80, #65, - #nyanpasu64/j0CC-FamiTracker#133, #156) -- Refactor Pxx overflow fix (@Gumball2415 #80, #156) -- Refactor Gxx overflow fix (@Gumball2415 #80, nyanpasu64/j0CC-FamiTracker#129, - #156) -- Reset FDS modulator phase on new note (@Gumball2415 #156) -- Refactor period table calculation (@Gumball2415 #156) -- Update text import/export parity (@Gumball2415 #161, #162, #156) - -Bug fixes: - -- Prevent ctrl/shift+wheel edit outside edit mode (copyrat90 #87) -- Fix random crash when exporting channels as WAV (@nyanpasu64 #92, #93) -- Fix module reload on config confirmation (@Gumball2415 #89, #97) -- Fix N163 volume meter level (@EulousDev #99, #103) -- Fix VRC7 data race and use-after-free when reloading/closing modules - (@nyanpasu64 #106) -- Update source code copyright declaration and GPL 2.0+ notice (@Gumball2415 - #116) -- Fix wave export dialog refresh rate to GUI rate (@Gumball2415 #108) -- Fix high-res spectrum visualizer at small buffer sizes (@nyanpasu64 #126) -- Fix use-after-free race condition in visualizer (@nyanpasu64 #130) -- Fix crash when starting program with pattern editor off-screen (@nyanpasu64 - #128, #129) -- Fix periodic noise showing cents when muted (@Gumball2415 #139) -- Stop rejecting valid files using features missing from vanilla FT (@nyanpasu64 - #150) -- Fix N163 instrument pointer data overflow (@Gumball2415 #156) -- Fix NSFe export from using incorrect DATA chunk size (@Gumball2415 #110, - nyanpasu64/j0CC-FamiTracker#5, #156) -- Fix 5B Wxx being overwritten by blank duty macros (@Gumball2415 #160, - nyanpasu64/j0CC-FamiTracker#105, #156) -- Fix N163 multiplex state desync (@Gumball2415 #163, #156) -- Dn-FamiTracker modules are no longer backwards compatible with "vanilla" and - 0CC (@Gumball2415 #156) -- FamiTracker 0.5.0 beta modules no longer conflict with Dn-FamiTracker 0.5.0.0 - modules (@Gumball2415 #156) - -Internal: - -- Revise README (@Gumball2415 #114) -- Replace DirectSound backend with WASAPI (@nyanpasu64 #124) -- Remove unused files, add headers to CMakeLists.txt (@nyanpasu64 #142) -- Eliminate audio thread blocking on GUI messages and main thread (@nyanpasu64 - #134, #137) -- Add WASAPI resampling so all sampling rates work (@nyanpasu64 @Gumball2415 #143) -- Fix crash when activating non-initial song then opening document with expansion - chip(s) (@nyanpasu64 #147, #148) -- Fix mostly-theoretical data race when popping from SPSC queues (@nyanpasu64 - #149) -- Properly terminate stuck audio thread when closing the program (@nyanpasu64 - #155) - - - -Dn0.4.0.1 - 09/14/2021 - -Patch fixes: - - - Fix internal version numbering (@Gumball2415) - - - -Dn0.4.0.0 - 09/13/2021 - -Important changes: - - - New file extension format for modules: *.dnm (@Gumball2415 #71) - - New file extension format for instruments: *.dni (@Gumball2415 #71) - - Support for Windows XP has been dropped (@Gumball2415, @nyanpasu64, - @N-SPC700 #82, #84) - -Additions: - - - Add new D.P.C.M. organization info, links and metadata (@Gumball2415 #71) - - New instrument names are blank on creation (@Gumball2415) - - Add empty instrument in newly created modules (@Gumball2415, @nyanpasu64, - @N-SPC700 #77) - -Improvements: - - - Adjustable frame editor channel view limit (@Gumball2415 #72) - - Fix frame editor channel view truncation (@Gumball2415 #72) - -Bug fixes: - - - Fix Gxx delay command overflow in NSF driver (@Gumball2415, @smbhacks #80) - - Fix FDS automatic modulation overflow in NSF driver (@Gumball2415, @galap-1 - #65, #80) - - Fix period calculation overflow in NSF driver (@Gumball2415, @smbhacks #80) - - Reset VRC7 emulator core on channel handler reset (@Gumball2415, @TakuikaNinja - #79) - - Flush file to disk before renaming to prevent module corruption - (@Gumball2415, @nyanpasu64 #81) - - Fix commandline parameter processing when flags are used (@Gumball2415) - -Internal: - - - Fix CString::Format() memory corruption bug on Wine (@nyanpasu64 #56) - - Fix uninitialized echo buffer values (@nyanpasu64 #56) - - Clarify nsfplay value_or() (@nyanpasu64 #56) - - Clarify integer widths in CBookmark::Distance() (@nyanpasu64 #56) - - Fix broken Open dialog after launching Dn by opening a file (@nyanpasu64 #74, - #76) - - Fix out-of-bounds read in oscilloscope (@nyanpasu64 #85) - - - -Dn0.3.1.0 - 06/30/2021 - -Important changes: - - - N163 and 5B expansion audio mixing has been restored to 0.2.1 levels - (@nyanpasu64 #66) - - Adjusted APU 2 levels to match blargg's original formula (@Gumball2415 #69) - -Additions: - - - Added a textbox for patch editing within the VRC7 instrument editor - (@Gumball2415 #60) - -Improvements: - - - Edit NSF export format to allow adding more effects (@Gumball2415, - @nyanpasu64 #46) - -Bug fixes: - - - Fix VRC7 hardware patch bank presets not reading properly (@Gumball2415 #60) - - Fix crash when increasing engine speed with VRC7 enabled (@nyanpasu64 #62) - - Fix N163 and 5B mixing levels which were swapped in 0.3.0 (causing N163 to be - louder and 5B to be quieter) (@nyanpasu64 #66) - -Internal: - - - Update VRC7 emulator core (emu2413) to v1.5.6 (@Gumball2415 #59) - - Port CVRC7 to CSoundChip2 (@Gumball2415 #59) - - Refactor VRC7 hardware patch bank swapping (@Gumball2415 #59) - - - -Dn0.3.0.0 - 04/03/2021 - -Important changes: - - - Reenabled version checking, which can also be accessed in the Help popup - - Replaced FDS emulation core with Mesen's version (@nyanpasu64 #32) - - Replaced 2A03 emulation core with NSFPlay's version (@nyanpasu64 #32) - - Added back the help manual, with additional updated info contributed by: - - Blue Mario for Sunsoft 5B information (@N-SPC700 #12) - - Compass Man for providing updated screenshots (#12) - -Additions: - - - Added FastTracker 2 (JP106) keymap (@sdhizumi #8) - - Adjustable idle refresh rate in configuration - - Emulation tab in Configuration, which currently includes: - - Toggleable N163 multiplexing - - Swappable VRC7 hardware patches - - Adjustable FDS cutoff filter (@nyanpasu64 #42) - - Added the Kxx multiply frequency effect, not currently supported in NSF - export (@nyanpasu64 #16) - - Adjustable channel view in frame editor - -Improvements: - - - Enable DPI scaling for pattern editor (@nyanpasu64 #5) - - Updated About information - - Export wave shortcut (Ctrl + Shift + E) - -Bug fixes: - - - Fixed DC drifting (when no highpass is applied) due to rounding errors in - Blip_Buffer calculation (@nyanpasu64 #27) - - Fixed N163 detuning when multiplexing is disabled (@nyanpasu64 #31) - - Fixed undoing "delete frame" adding a new frame (#43) - - Fixed VRC7 note cuts being inconsistent with in-tracker note cuts - (@Kouzeru #47) - -Internal: - - - Fixed CMake MFC detection and link flag conflicts (@nyanpasu64 #6) - - Removed more occurences of old program name and renamed more files to Dn - (@nyanpasu64 #7) - - Replaced the application icon (design by Compass Man) - - Enabled x64 build compiling in the Visual Studio files - - Updated the VRC7 emulation core to emu2413 v1.5.2 - - Include changelogs of vanilla, j0CC, and Dn in changelog.txt - - Moved resource.h and Dn-FamiTracker.rc back to root folder due to HTMLHelp - compilation - - Corrected paths on case-sensitive filesystems (@nyanpasu64 #18) - - Removed header files from CMake (@nyanpasu64 #26) - - Replaced Blip_Buffer with an improved fork (@nyanpasu64 #27) - - Added emulation clock-skipping until next level change to save CPU, - currently implemented in 2A03 and FDS emulator cores (@nyanpasu64 #32) - - Fixed file extension association in Dn-FamiTracker.reg (@Raphaelo24 #36) - - - -Dn0.2.1.0 - 09/13/20 - -Additions: - - - Adjustable preview pitch. - -Improvements: - - - Readjusted the DPCM sample editor dialog size limit. - -Bug fixes: - - - Fixed drag-scrolling not working. - - Readjusted the DPCM sample editor dialog size limit. - -Internal: - - - Changed the project and corresponding project file names accordingly to - Dn-FamiTracker. - - - -Dn0.2.0.0 - 09/07/20 - -Additions: - - - Multiple .wav per-channel export (#2) - - Adaptive register state refresh rate(≈60fps during playback, otherwise 10fps) - -Bug fixes: - - - DPCM sample bit reversal now includes the first bit of the sample - - Fixed the version numbering - -Internal: - - - Changed most of the internal names from j0CC-FamiTracker to Dn-FamiTracker - - Use precompiled headers in CMake builds (@nyanpasu64 #3) - - - - -Dn0.1.0.0 - 08/05/20 - -Additions: - - - DPCM sample bit order reversal (located in the DPCM sample editor) (#1) - --------------------------------------------------------------------------------- - - - -j0CC-FamiTracker Mod -Change Log -Written by Persune - -Version 0.6.3 - August 1 2020 - --------------------------------------------------------------------------------- - -0.6.3 - 08/01/20 - -This will be the final release. This program has been effectively dead for -months to years, as my priorities have moved elsewhere, to building a new -tracker from scratch, freed from MFC and being chained to Win32, freed from -DirectSound and 40-70 ms of audio latency, freed from a fixed row grid that -falls apart as soon as you try to use triplets... - -Additionally I can't let this program continue under its current name. I can't -have people talking to me about the program under its current name. I should've -renamed the program earlier, but never picked one. - -As a parting gift, I've attached a 64-bit build from CMake as well. This may be -compatible with Wine on macOS Catalina (though you'll have to either build Wine -yourself or look for prebuilt packages, maybe -https://www.reddit.com/r/wine_gaming/comments/er28u5/is_there_anyway_to_run_wine_in_macos_catalina/ff14rns/ ). - -I invite the community to fork the program, possibly under a name like -FamiTracker-Next. I may participate if I regain interest. - - - Fix 5B instrument recording (#138, @Teuthida255) - - Re-add ability to disable "retrieve channel state" (#146) - - Remove popup message box when enabling linear pitch mode (#144) - - Removed 'Transpose Song' instrument check (#147, @Teuthida255) - - Refactor sound output code (DirectSound code) (#143) - - Remove build dependency on DXSDK and dxguid.lib (#160) - - Enable 64-bit builds (#154) - - Fix memory corruption on Wine during find-and-replace (#164) - - Fix out-of-bounds read (garbage data or crashes) with N163 Vxx effects over - 0x80 (#165) - - - -j0.6.2 - 06/16/19 - -the version number in the .exe is wrong. Ignore it. - - - Update VRC7 preset patches (#135) (by @Teuthida255) - - Fix crash when pasting large selections near the rightmost channel (#137) -See https://ci.appveyor.com/project/nyanpasu64/0cc-famitracker/history for dev -builds. - - - -j0.6.1 - 09/30/18 - -Bugfixes: - - - Fix crash when saving files on Wine. - - Fix playback/WAV export desync, when FDS channel is enabled. - - Every instrument switch would cause the frame to take longer than usual. - -Internal: - - - Globally renamed application from 0CC-FamiTracker to j0CC-FamiTracker. - - - -j0.6.0a - 07/08/18 - -j0.6.0a is identical to j0.6.0, except with correct .exe version number, and -.pdb debug info available in release builds, to help debug crash dumps. - -Changelog: - - - Add =00 effect (VRC6 phase reset) (no effect on NSF) - - Add configurable font size scaling (without changing row height) - - Always enable Retrieve Channel State (remove config option) - - Every time you begin playback, j0CC loads the current volume and active - effects. - - Validate Vxx and DPCM (Zxx) effects, mark out-of-bounds parameters as red - - eg. V04 and above in 2A03, Z80 and above in DPCM - - Add confirmation dialog when clearing recent files - - Interface text improvements to improve information and clarity - -Bugfixes: - - - Fixed 5B noise bug where non-noise instruments overwrite noise period (0CC - playback) - - Fixed 5B noise-period envelopes when exporting NSF files - - Note: 5B Wxx effect (noise period) has no effect in NSF - - Fix theme color importing bug, where "Highlighted background 2" would - overwrite "Highlighted background" (also "Highlighted pattern text 2") - - Fix crash when cancelling "export to WAV" dialog - -Internal: - - - Now generates .pdb debug info for release builds, to help debug crash dumps. - - CLion (CMake) build support - - Move NSF driver source into this repository, add build script - - To reduce repository clutter, move resource.h and 0CC-FamiTracker.rc to res/ - - - -j0.5.3 - 06/01/18 - -Changelog: - - - Improved descriptions for 1xx and 2xx effects. - -Bugfixes: - - - Fix bug where Xxx effect (DPCM retrigger) waited xx frames for first - retrigger, subsequently xx+1 frames. - - Still broken in NSF export - - Center N163 output about sample=8, when volumes change (hardware-accurate). - - Previously centered about sample=0, creating loud pops when changing volume) - - Fixed bug where VRC7 Ixx (custom instrument) effect didn't work, when Channel - 1 contains default instruments. - - Not broken in NSF export - - Fixed bug where N163 Zxx (wave position) effects would fail when switching - instruments. (Removed Zxx error checking, since it checked the old wave - size) - - Fixed bug where "Ignore Step when moving" wouldn't take effect until changing - step size. - - - -j0.0.5.2 - 04/29/18 - -Changelog: - - - FTM, NSF, and text exports share "most recent path". - -Bugfixes: - - - Reset N163 level offset in sound engine, when switching files. - - N163 dialog no longer crashes program, when pasting >64 waves. - - - -j0.0.5.1 - 04/16/18 - -Changelog: - - - Fix bookmark "sort by position" (from HertzDevil) - - Enable "Retrieve channel state" as default for new users. - - Fix default FDS sine modulator, so it plays properly on NSF. - - - -j0.0.5 - 04/13/18 - -Changelog: - - - N163 file-specific mixing level offset. - - Enable through the Module Properties dialog (Ctrl+P). - - Typing Pxx (or FDS Zxx) defaults to P80. - - Enable ASLR and DEP/NX (for added "security"). - -Bugfixes: - - - Save TXT export path properly. - - Fix color scheme import. - - - -j0.0.4 - 03/22/18 - -Changelog: - - - Reinstate high-resolution FFT display, without crashing. - - Add placeholder tips to "find and replace" dialog. - - Warn user when replacing with Edit Mode disabled. - -Bug fixes: - - - Fix crash on refresh rates below 25 FPS. - - Fix configuration menu not applying changes. - - - -j0.0.3 - 03/02/18 - - - Disabled update checking (may reenable checking this repo later). Changed the - version number. - - Fixed #10 and #11 for Wine users. - - -j0.0.2 - 03/02/18 - - - Fixed a crashing issue in debug builds, and reported to occur in release - builds. (Caused by hires FFT) - - - -j0.0.1 - 03/02/18 - -Bugfixes: - - - Don't corrupt memory when entering MML volume sequences over 252 items long - (instead truncate). - - Fix bug where find-replacing anything with an empty effect creates " 00" - effect. - - Fix text import instrument loop/release (@owomomo, fixed in 0.3.15.1). - - Update channel count after importing text (like master). Mark file as - modified. - -Enhancements: - - - N163 wave editor's copy/paste buttons copy all waves at once, - separated/terminated with semicolons. This allows for highly efficient - Audacity-N163 import workflows(see - https://gist.github.com/nyanpasu64/424110eab84dad50cf1a6646a72b2627). - - Hi-res FFT spectrogram (like master). - - - -n163-2018-02-10 - 02/12/18 - -My changes: - - Fixed importing FTI instruments containing DPCM samples where length's - bytes >= 0x80. This fixes Extends Levant bass. - - Fix memory corruption when entering MML volume sequences over 252 items long. - - Modify N163 dialog buttons to copy/paste all waveforms at once, separated by - semicolons. A very useful import format for Audacity wavetable exporting, - and copy-pasting between instruments. - -Bugfixes from HertzDevil: - - Changing channels does not clear bookmarks. - - Changing grooves does not crash (I think). - - RAM usage decreased for large files. - -Known bugs: - - Oscilloscope is partially flatlined. - - Setting engine speeds <= 24 Hz causes memory corruption and crashes. - (long-standing bug) - - Clearing File/Recent Files results in memory corruption, crashing, and system - freezes. - - - --------------------------------------------------------------------------------- - -0CC-FamiTracker Mod -Change Log -Written by HertzDevil - -Version 0.3.15.3 - May 20 2018 - --------------------------------------------------------------------------------- - -V0.3.15.3 - 05/20/18 - -Bug fixes: - -- Fixed a fatal issue that caused drag and paste operations to create incorrect - pattern selections - - - -V0.3.15.2 - 05/20/18 - -Additions: - -- Added JSON export (experimental) -- Arpeggio scheme sequence editor now includes a mode selector, use left / right - mouse button to cycle forward / backward -- Module import options for instruments are grooves are now more granular: - - Do not import - - Duplicate and import (same as existing behaviour, indices fill empty slots) - - Import and overwrite (resources from new module replace existing resources, - indices do not change) - - Import missing entries (similar to above, but import only if existing slot - is not occupied) - -Improvements: - -- Tracker now uses UTF-8 encoding, this also fixes garbled text at various - places -- Tracker now retrieves song state when playing a single row -- The following actions are now undoable: - - Add / remove / rename instrument - - Swap instruments - - Clear patterns -- CPU usage display on the performance dialog is now more accurate -- Changing frame count no longer deletes bookmarks beyond the last frame, they - are now greyed out on the bookmark settings dialog -- Add / Remove DPCM assignment buttons on 2A03 instrument editor now work across - octaves -- NSF export no longer modifies current document -- Sequence editor now draws straight lines when moving cursor across multiple - items at once -- Clicking loop or release point on the sequence editor now removes the point on - the sequence -- 5B noise sequence editor is now closer to 0.5.0 beta's implementation -- Fxx speed / tempo split point is now adjustable on the module properties - dialog -- DPCM samples and instrument sequences are no longer imported if instruments - are not imported -- "Spectrum analyzer (fine)" visualizer is now finer than before -- Replaced FDS emulation core with NSFPlay's upstream version -- Replaced Fast Fourier Transform code with new one licensed under MIT - -Bug fixes: - -- Improved tracker responsiveness when scrolling across multiple patterns -- Fixed unused patterns claiming memory unnecessarily -- Tracker no longer freezes when searching for a non-existent groove index less - than the current groove index on the song settings panel -- Fixed crash when loading instruments while importing text files -- Fixed crashes when importing FTIs for sequence instruments -- Fixed text exporter writing additional text for FDS instruments -- Tracker now reads N163 FTIs properly that include auto-wave position - information from 0.5.0 beta (but still does not implement it) -- Fixed find / replace dialog not recognizing hexadecimal strings -- BPM display and wave file renderer no longer run twice as fast -- Drag and drop across tracker instances now displays the correct number of rows - in the selection -- Fixed tracker erasing pattern selection after dragging and dropping to the - same location -- Theme import / export now handle hexadecimal strings properly -- Fixed "Clear All" on groove dialog removing groove 1F from the list -- Fixed "Auto arpeggiate chords" option not working when current song is not - playing -- Fixed row highlight sometimes not aligning with first row of the current - bookmark region / beginning of the song -- Fixed swap channels dialog sometimes not allowing swap when 2A03 is selected -- Fixed several incomplete error messages when loading invalid modules -- Fixed VRC7 Hxx and Ixx not working if a non-custom patch is played before a - custom patch -- VRC7 volume meter no longer flickers on "fast" decay rate -- Fixed instrument recorder behaviour on VRC6 PUlse 2 -- Fixed "x:y" and "x:y:z" syntax not working with note names for fixed arpeggio - MML input -- Version checker now always looks for the most recent version number -- Player no longer retrieves song state of current row to be played - - - -V0.3.15.1 - 10/30/17 - -Bug fixes: - - Fixed pattern block corruption for songs containing more than 256 rows - - - -V0.3.15.0 - 10/30/17 - -Important Changes: - - Custom exporter support has been dropped because of lack of use - -Additions: - - Added the ability to render WAV files from the command line - -Improvements: - - The following actions are now undoable: - - Changing title / artist / copyright fields - - Changing comment settings - - "Populate Unique Patterns" - - Player now moves to the queued frame if it loops the current pattern - - Saved modules will now completely skip empty data blocks - -Bug fixes: - - Added workaround for Wine in the instrument editor and the configuration menu - - Fixed crash from using "x:0" or "x:0:z" entries in sequence editor MML fields - - Changing to a new song now resets the row marker - - Tracker no longer queues notes to other channels if auto-arpeggio is enabled - - Fixed forum link display on the About dialog - - Reverted a change that caused new notes on N163 channels to sometimes not - reload the wave with the correct indices - - Exporting multi-chip NSFs no longer modifies the current module - - - -V0.3.14.5 - 01/16/17 - -Important Changes: - - Effect indices are now remapped to match new effects in vanilla 0.5.0 beta - - 5B implementation is basically complete, so previous 0CC-FT 5B modules may - become incompatible - -Additions: - - Ported the following features from 0.5.0 beta: - - Reading 0.5.0 beta FTI instrument files - - VRC7 Hxx / Ixx / Vxx pattern effects - - 5B Wxx pattern effect - - Added one-past-the-end frame editor row - -Improvements: - - Swapped 5B Hxy / Jxx and inverted noise pitch values to match 0.5.0 beta - - 5B Wxx effect can be used on any 5B channel - - 5B automatic envelope frequency now rounds off instead of rounds down - - Exported multichip NSFs no longer contain data for unused sound chips - - Changes to pattern indices now respect active frame selections - - Creating a frame selection now always sets the focus to the frame editor - - BPM display now follows current highlight settings - - Groove settings dialog now shows a "*" for non-empty grooves - -Bug fixes: - - Fixed tracker failing to read registry settings if the key "FamiTracker" does - not exist - - Fixed crashes due to deleting instruments while they are being used by the - player - - Fixed tracker crashing when reading from any 0.5.0 beta module containing - note data on row 0x80 or below - - Fixed VRC7 channels not resetting the pitch after note cuts during an active - 3xx command - - Fixed groove settings dialog not restoring previous values after selecting - "Cancel" - - Instrument editor now displays "-y" properly for arpeggio schemes - - Fixed undo operations for changing pattern indices - - Fixed Ctrl / Shift + Mouse Wheel not working without an active selection in - the pattern editor while playing with follow mode disabled - - Fixed "Populate Unique Patterns" command and changes to expansion chip - configuration erasing song names - - - -V0.3.14.4 - 08/04/16 - -Bug fixes: - - Fixed recent file list not updating the registry if cleared without being - viewed again at least once - - Fixed Vxx on blank instruments being overridden by instrument duty sequences - - Fixed most bugs related to portamento effects on the VRC7 channels in the - tracker - - - -V0.3.14.3 - 08/03/16 - -Additions: - - Ported the following features from 0.5.0 beta: - - Reading 0.5.0 beta FTMs and importing 0.5.0 beta text files - - 5B Hxx / Ixx / Jxy pattern effects (H and J swapped according to 0CC-FT) - - && hold instrument command - - Absolute instrument pitch sequences - - 64-step instrument volume sequences for VRC6 sawtooth - - Module global tuning - - Player bookmark (as "row marker") - -Improvements: - - Ported the following changes from 0.5.0 beta: - - Sunsoft 5B code using Blip_Buffer - - MML field entry for 5B noise / mode sequences - - Removing octave setting in DPCM assignment editor - - Average BPM display - - [WIP] Fast volume meter decay rate - - Saving / loading themes - - Reset button in mixer configuration menu - - Registry entry for frame editor font - - Movable toolbars - - New tracker identity: - - Tracker now fully uses "0CC-FamiTracker" as application title and uses its - own registry key (loads default values from official FamiTracker) - - New application icon and document icon - - New visualizer display - - Added support for DPI scaling - - Selections in the frame editor now have channel scope - - Added a command to move the current selection to the active editor window - - "Paste & Duplicate" and drag & drop cloning for the frame editor now reuse - common pattern indices within selection - - Overwrite pasting and range selection commands now work in the frame editor - - Added a pseudo-term "$$" for MML fields which treats all subsequent terms as - hexadecimal even without an explicit "$" or "x" prefix - - Fixed arpeggio sequences may accept note names in the MML field - - Added buttons to toggle 5B envelope output in the graph editor for 5B noise / - mode sequences - - Redone detune dialog - - "Strict" is now above "Official" for module error levels - -Bug fixes: - - Fixed tracker crashing when retrieving the state of a non-existent groove - - Fixed pattern editor not allowing C-0 in polyphonic note preview - - Fixed pattern editor not moving to the new frame after dragging a selection - outside the current frame - - Fixed "Left Edge" and "Right Edge" on the pattern editor's horizontal scroll - bar - - Fixed tracker using parent directory as last used folder after loading - multiple instrument files or DPCM samples - - Fixed N163 instrument wave editor displaying 40 as the wave size if it used - a wave size of 4 - - Fixed C-1 and C#1 on the search query's note field matching note release and - note cut respectively - - Fixed search wildcards not working for insturment and volume fields - - Fixed search results dialog moving the cursor to the incorrect channel for - expansion chips - - Fixed DPCM channel playing note C-0 if it contains an active note after - retrieving the channel state - - Fixed "Recall channel state" command crashing on retrieving the state of a - non-existent groove - - Fixed instrument recorder not working for the FDS channel - - Exx effect now works on the triangle channel - - Fixed VRC6 sawtooth outputting sound in exported NSFs when the instrument - volume is 0 - - Fixed VRC7 using an incorrect pitch lookup table in exported NSFs - - Fixed VRC7 not making any sound in exported NSFs after using a note release - - - -V0.3.14.2 - 05/23/16 - -Additions: - - Added linear pitch mode (originally from official 0.4.0) - - Added split keyboard settings dialog - -Improvements: - - Keyboard input now queues notes to different channels of identical type when - edit mode is disabled - - Undoable actions now remember the selection information immediately before - and after performing the action - - Added "Find All", "Find Previous" and "Replace Previous" commands - - Added "Selection" as the find / replace scope - - Changed "Any" effect column scope to "All" - - "Replace All" and changes to highlight settings are now undoable - - Register state now uses colours for N163 waveform display - - Module properties dialog can now insert songs at current position or delete - multiple songs - - Added configuration settings item to check for new versions on startup - - [WIP] Added module error levels - - Shortcuts menu now checks for conflicts between shortcut commands - - Alert prompts for non-undoable commands now select "No" as the default - option - - Added menu command to clear the most recently used file list - - Added shortcut to select instrument by typing instrument number - -Bug fixes: - - Fixed file save dialog not displaying .ftm files when saving modified - untitled files while loading another document - - Undoable actions no longer overwrite the redo state information every time - they are undone - - Transposing and scrolling pattern values no longer create a selection under - the cursor - - Fixed Insert and Backspace keys not working properly if an active selection - spans across multiple frames or does not begin in the current frame - - Fixed tracker resetting bookmark positions after moving frame up or down - - Fixed repeat key inputting invalid notes after using ^0 echo buffer access - note - - Fixed find query not working if note field contains only note name - - Fixed replacement query not allowing note cut or note release in the note - field - - Fixed find / replace dialog replacing current note if the search query is - modified after the previous query matched - - Fixed performance dialog not displaying after opening once and then closing - - Fixed tracker not stopping notes from keyboard input if octave is changed - while depressing keyboard key - - Fixed 2A03 channels not using PAL period table when PAL is used - - Fixed DPCM channel not playing if a VRC6 or 5B instrument is loaded as the - current instrument - - Fixed MMC5 channels not playing sound when switching to another song where - the period high byte remains unchanged - - Fixed VRC6 pulse channels and 5B channels using incorrect period tables for - the instrument recorder - - DPCM data always outputs to same directory as music data instead of tracker - root when exporting BIN data and current module contains no DPCM samples - - Fixed 3xx effect commands causing pitch bends when issued no notes are being - played on the channel - - Fixed 3xx effect commands on VRC7 channels ignoring the current octave - register value - - Fixed N163 loading the waveform of the currently selected instrument if the - channel has not used any instrument - - Fixed VRC7 channels inverting the 4xy vibrato pitch offset in the tracker - - - -V0.3.14.1 - 04/09/16 - -Improvements: - - Tracker now pads DPCM samples with invalid size on opening a module - - Added shortcuts to toggle or solo the currently selected sound chip - - Vxx effect commands on muted N163 channels now write to the wave buffer when - retrieving channel state - - Noise channel now performs slide effects with no pitch limits - - Cxx effect now finishes playing the current row before halting - - The 2A03 frame counter is now clocked at exactly 240 Hz (slightly more - accurate than before) - -Bug fixes: - - Tracker no longer validates invalid notes (according to official build) - - Fixed frame editor not moving the cursor to the clicked channel when clicking - on its left/right edges - - Fixed module properties dialog not moving bookmark lists when moving songs up - or down - - Fixed transpose dialog crashing on selecting "Transpose all tracks" - - Fixed tracker not updating the vibrato table after loading a new module - - Changing the module's highlight settings or vibrato style is now recognized - as a file change - - Fixed DPCM editor not saving changes - - Fixed VRC7 and 5B not using the refresh rate of the current module - - Fixed tracker not producing sound after rendering a WAV file until player - begins - - Fixed WAV render omitting last tick when rendering by a time amount - - Fixed find dialog not working properly when some ranges are omitted - - Fixed FDS and MMC5 not producing sound in exported multichip NSFs unless both - are enabled - - Fixed relative instrument arpeggio sequences clipping the channel note at A#7 - in exported NSFs - - Fixed noise channel clipping at 0-# of an octave below in exported NSFs when - using download portamentos - - N163 channels no longer update the wave buffer on every frame - - Fixed new notes on N163 channels not updating the wave buffer in exported - NSFs if instrument does not use a wave instrument sequence - - - -V0.3.14.0 - 03/31/16 - -Additions: - - Added the *.0cc file extension - - Added diagnostic information when loading invalid modules - - Added transpose dialog - -Improvements: - - 2A03 instruments now implement the instrument interface - - FDS instruments are compatible with other channels (as untyped sequence - instruments) - - Multichip NSFs now skip writing to registers of unused sound chips - - Implemented FDS Zxx in exported NSFs - - Reordered main frame menu for clearer organization - - Re-added fine spectrum visualizer - -Bug fixes: - - Fixed document wrapper for custom exporters crashing when retrieving a non- - existent instrument - - Fixed tracker crashing after importing any FTM containing bookmarks - - Fixed custom exporters crashing due to incompatible interface layouts - - Fixed DPCM functions in document wrapper crashing the tracker if the queried - sample does not exist - - Fixed certain multichip exported NSFs crashing due to VRC6 overwriting the - driver code in presence of FDS - - Fixed tracker ignoring "Backup files" option - - Fixed find / replace dialog not clearing wildcard effect name cache on new - searches - - Selection now always moves to current frame if multi-frame selection is - disabled (according to official build) - - Fixed selection with Shift + arrow keys allowing selection across frame - boundaries when option is disabled - - Fixed Shift + arrow keys not selecting entire rows when compact mode is - enabled - - Fixed selection errors when overflow paste mode is disabled - - Fixed 2A03 instrument not copying delta offset values on cloning - - Fixed BPM display showing values above maximum tempo at current refresh rate - - Fixed VRC6 channels sometimes generating an extra click on starting - - - -V0.3.13 - 11/16/15 - -Additions: - - Added a command to create new instruments by recording the output of certain - channels as instrument sequences - - Instruments of all sound chips (except FDS and VRC7) are compatible - -Improvements: - - "Retrieve channel state" now respects Fxx and Oxx effects, as well as current - groove position - - Tracker now stops retrieving channel states after encountering a Cxx effect - - Added ranges to the search query and the ability to search fields that do not - match parts of the query - - Pressing a note key always previews the current instrument even when cursor - is not on the note column when edit mode is disabled - - Ctrl + Left/Right now shifts the phase of the current wave in the FDS / N163 - wave editor, Ctrl + Down inverts the wave - -Bug fixes: - - [11/30/15 interim build] A00 command now updates the channel default volume - for subsequent Axy and Mxy effects - - [11/28/15 interim build] Multichip NSFs no longer crash due to FDS allowing - VRC6 and VRC7 to modify the driver code - - [11/26/15 interim build] Fixed VRC6 and 5B channels not silencing when the - insturment sequence volume is 0 in exported NSFs - - [11/21/15 interim build] Fixed instrument recorder crashing when a new FTM - is loaded - - Cleanup actions that alter the pattern data always reset the undo history - - Fixed various memory leaks - - Copying selection as plain text now empties unselected columns properly - - Text export now writes unused N163 channels to output file according to the - behaviour of official build - - Fixed text importer not allowing "^-0" in pattern note field - - Added ".-#" wildcard for search query for the noise channel - - Fixed horizontal tab character not working in sequence editor MML field - - Fixed arpeggio scheme text field parsing "+x y..." as "+y y..." - - Fixed FDS instrument editor registering a file change on opening if the - current instrument uses any non-zero FM parameter - - 7xy effect on VRC6 sawtooth channel matches NSF behaviour (clip at volume 34 - if V01 is set and volume underflows) - - N163 Z7F command now takes effect immediately - - Fixed incorrect slide effect parameters from recalling N163 channel state - - Fixed Zxx on N163 channels in exported NSFs being cancelled by loading new - instruments - - Fixed MMC5 Pulse 2 not halting when MMC5 Pulse 1 is muted in multichip NSFs - - Fixed the above bug crashing NSFs containing the FDS chip - - Fixed 1xx, 2xx, 3xx effects becoming 1/4 as fast on N163 in exported NSFs - - - -V0.3.12 - 10/17/15 - -Additions: - - Added FDS automatic frequency modulation effects - - Bookmark manager no longer crashes - - Added a menu command to swap pattern data of two channels in the FTM - -Improvements: - - Added a menu command that displays the estimated song duration - - Pattern editor does not play notes from keyboard input while playing with - edit mode enabled and follow mode disabled - - Selections in compact view always include all columns in selected channels - - Arpeggio scheme sequence editor now displays the arpeggio type of the term - below the mouse cursor properly - - Arpeggio scheme sequence editor can now set the arpeggio type from the graph - editor (by holding numpad 0 - 3) - - Register display now highlights recent register writes, blue for new values, - red for old values - - Groove settings dialog allows direct text input and copying grooves as Fxx - effect pattern data - - Added a context menu command for the VRC7 instrument editor to copy the - current instrument as plain text values - -Bug fixes: - - Tracker no longer crashes upon loading FTMs that contain patterns with zero - non-empty rows - - Tracks using fixed tempo now always allow speed values up to 255 - - Fixed pattern editor not resetting the selection area when using Shift key to - create a new selection - - Fixed pattern editor not resetting the selection area after cursor crosses - frames while playing with follow mode enabled - - Fixed tracker not moving bookmark tables appropriately after tracks are moved - or removed on the track list - - Fixed text importer erroneously enabling default groove for random tracks - - Fixed "Any" as effect column scope not working in Find / Replace dialog - - Fixed Module Properties dialog removing the FDS channel upon confirmation - - Fixed Module Properties removing channels to the right of N163 when changing - only the number of N163 channels - - Fixed 2A03's nonlinear mixing sometimes applying even while channel is muted - - Fixed inactive N163 channels loading the waveform of the currently selected - instrument upon playing - - Fixed wave export rendering extra rows upon encountering skip effects - - Fixed VRC7 instrument editor showing -6 dB / oct instead of -3 dB / oct for - the rate scale settings - - Fixed 2A03 Pulse 1's state not being retrieved - - Fixed NSFs with certain expansion chip configurations crashing - - Fixed Axy and Mxy resetting the channel volume incorrectly - - Fixed N163 Zxx effect not setting the correct wave position in exported NSFs - - - -V0.3.11r1 - 07/12/15 - -Improvements: - - Added simple wildcard for search query ("." character) - -Bug fixes: - - Pasting single-channel pattern data that begins from a channel volume column - no longer moves the target selection area depending on the cursor position - - Pasting single-channel effect data no longer moves the target selection area - if the cursor is outside the effect columns - - Fixed paste undo applying to as many effect channels as 2A03 Pulse 1 has for - single-channel effect clip data - - Fixed Find / Replace dialog crashing upon any action - - Effect search queries without effect parameter now work properly - - Fixed Mxy effect not resetting to the default channel volume in exported NSFs - - Fixed ^0 echo buffer access retrieving incorrect notes outside 2A03 Pulse 1 - in exported NSFs - - - -V0.3.11 - 07/09/15 - -Additions: - - Added pattern bookmark manager and go to dialog - -Improvements: - - Added a visual waveform manager for the N163 instrument editor - - Added an option in the configuration menu to disable selections across frames - - FTM import now allows importing FTMs with different expansion chips - - "Pick Up Row" now updates the last used values of all columns for repeat key - - "Copy As Plain Text" now includes header row containing channel names - - "Recall Channel State" now respects several run-time effects while playing - - Loop points of instrument sequences can be placed after release points - -Bug fixes: - - Tracker can no longer open more than one performance dialog or groove - settings dialog - - Added temporary fix for the tracker not setting up painting buffers properly - after resizing - - Fixed pattern operations not working properly when the current selection - spans across any frame with only one row - - Fixed several pattern operations improperly applying undo to the first row of - the track - - Fixed stretching, transposition, and Shift + Mouse Wheel overwriting itself - incorrectly for selections spanning across truncated frames - - Fixed "Copy As Plain Text" removing first few columns from the first channel - - Implementation for "Copy As PPMCK MML" is complete - - Fixed period/frequency values being written to several expansion chips when - no note is active - - Fixed Qxy and Rxy being swapped on the noise channel - - Fixed N163 instrument editor not forcing the wave buffer to update - - Fixed Sxx effect on the DPCM channel resetting the 2A03 Pulse 1's period low - byte - - Fixed Vxx in any N163 channel affecting other N163 channels (reverted to the - Vxx behaviour in official builds) - - Fixed VRC7 detune table not being exported to NSFs - - - -V0.3.10 - 06/02/15 - -Additions: - - Added Exx effect for the FDS channel's hardware volume envelope control - - Added a hotkey to recall the current channel state on the status bar - - Added fixed tempo support, which ignores tempo and directly uses the speed - value as the number of ticks per row - -Improvements: - - Increased frame limit and pattern limit to 256 - - Added menu commands to copy the current selection as volume sequence, text or - PPMCK MML (from official 0.3.5) - - Added keyboard shortcut and menu entry for compact view mode - - Added keyboard shortcuts and menu entries for selection in various scopes - - Echo buffer command "^0" is now allowed - - Moved DPCM states to "Display register state" - -Bug fixes: - - Application title is finally set to "0CC-FamiTracker" - - Fixed undo issues with paste command and drag/drop paste - - Fixed tracker initiating drag operations at an incorrect position if the - selection is created by dragging from right top to left buttom or vice versa - - Fixed tracker crashing while copying the selection as a volume sequence if - the selection begins at the first row of the track - - Fixed paste command not applying to all columns of the last channel in the - pattern editor - - Fixed paste operations applying an incorrect selection if the clip data only - contains effect commands - - Removed flicker in "Display register state" - - "Display register state" no longer shows information of non-existent N163 - channels - - Tracker no longer retrieves channel states from non-existent channels - - Tracker no longer retrieves channel states from the current position before - switching to a new song while playing - - Fixed 2A03 channels incorrectly retrieving states of hardware effects - - Tracker properly retrieves states of the correct channels when some channels - are muted - - Tracker now blocks row insertion/deletion when edit mode is disabled - - Fixed reverse command crashing the tracker when a fx4 column is selected as - the last column - - "Remove Unused Instruments" now respects instruments with disabled sequences - - Fixed frame editor incorrectly updating the value of the current pattern if - the cursor is moved by the mouse before modifying the first digit - - Fixed detune dialog displaying FDS frequencies at the incorrect octave - - Fixed notes not producing sound after EE0 cancels the length counter until - the high frequency byte is updated - - Fixed length counter not working in MMC5 channels - - Exx effects no longer reset the linear counter on the triangle channel - - Triangle channel's linear counter value now resets to 0x7F before playing - - Fixed T7y effect not working in the tracker - - Fixed Txy effect not applying transpose to the echo buffer when the note - transposes downwards - - Fixed N163 channels inverting the 4xy vibrato pitch offset in the tracker - - Fixed the tracker exporting invalid pattern data when exporting the triangle - channel's length counter effect - - Fixed E00 - E1F length counter effects not working in exported NSFs - - Fixed A00 improperly resetting the channel volume when the Mxy effect is not - used in exported NSFs - - Fixed Sxx and Lxx effects being applied to future notes in exported NSFs - - ASM export no longer crashes 0CC-FamiTracker - - WAV and NSFe export now handle track durations properly when disjoint parts - of the same frame are visited twice in a loop - - - -V0.3.9 - 04/12/15 - -Additions: - - Selection can now span across frame boundaries - - Added several special pasting modes - - Added an option in the configuration menu to retrieve the current state of - all channels from previous rows - - Added a compact view mode which displays only the note fields in the pattern - editor and hides all other columns - -Improvements: - - Ported to the version of NSF driver used in official FamiTracker 0.4.6 - - The configuration menu's general tab is re-organized - - Added an option in the configuration menu to allow pasting to continuously - write to subsequent frames - - Added an option in the configuration menu to display rows skipped by global - effects - - Added an option in the configuration menu to use the extra keys on the - numpad as hexadecimal digits - - The colours of the current row in the pattern editor can now be configured - - The pattern editor's font size can now be set between 5 and 30 inclusive - - The pattern editor's rendering is slightly improved - - Added a cleanup command to populate all frames with unique pattern copies - - "Preview next/previous frames" now displays all frames above and below the - current frame - - The pattern editor now highlights inapplicable effects in red - - Automatic scrolling in the pattern editor can now move diagonally - - Clicking previous or next frames moves the cursor to the row below the mouse - cursor - - Ctrl+Clear key now deletes entire note - - Pasting now supports the Impulse Tracker edit style (any field on the note, - instrument or volume column registers as non-empty) - - Interpolation now works on all pattern columns, as well as effects that take - multiple parameters - - Added a stretch selection command which generalizes expanding and shrinking - - Added keyboard commands to scroll the values of current selection by 0x10 - (data entry up/down coarse in ModPlug) - - The frequency displays below the register displays now use note values - - The tracker completely blocks all operations in the pattern editor that - modify pattern data when the edit mode is disabled - - The N163 wave memory is now graphically displayed along the wave registers - - Sequence MML field now accepts "L" for loop point and "R" for release point - (like NSDL) - - Sequence MML field now splits hexadecimal strings into signed bytes - - The N163 wave buffer effect is renamed to Zxx - -Bug fixes: - - Program now displays properly on higher DPI settings - - Fixed the register display showing notes below octave 1 improperly - - Fixed the register display evaluating incorrect notes for the 2A03 channels - when PAL is selected - - Fixed the register display drawing a bar for the DPCM channel even when no - note is being played - - The frequency displays below the register displays now use the correct order - of N163 channels - - Fixed "Remove unused DPCM samples" detecting sample usage incorrectly - - The pattern editor's cursor now moves by the correct number of steps across - frames that have been shortened when using arrow keys or the mouse wheel - - The pattern editor always displays the current frame up to the row being - played if follow mode is enabled, disregarding skip effects above the row - - Fixed incorrect behaviour of editing the instrument column when the ModPlug - Tracker edit style is enabled - - Fixed a bug where decreasing the number of effect columns hides the cursor if - it is on the effect column just removed - - Fixed full row selection selecting hidden effect columns of the last channel - - Fixed Shift + Mouse Wheel applying to an incorrect area after a selection is - cancelled by clicking within the selection - - Fixed Numpad Plus key incorrectly incrementing the cursor's data field to - blank data - - Pasting no longer applies to hidden effect columns and rows hidden by global - effects when "Preview next/previous frames" is enabled - - Interpolation no longer works on effect columns if the beginning and ending - effect commands do not match - - Transposing a selection no longer affects the echo buffer access notes - - Fixed "Expand selection" overwriting one row outside the selection if the - number of selected rows is odd - - Expand, shrink, Backspace delete, and Replace instrument now apply only to - columns within the selection - - Fixed Replace All crashing the tracker or not updating the pattern editor - view after replacement - - Fixed a bug where Replace All searches the same row more than once - - Fixed effect query on the Find / Replace tab not behaving properly when the - effect column scope is set to "All" - - Both the Find / Replace tab and the text importer now accept the N163 wave - buffer effect - - Disabled FTM import loading tracks with a different number of N163 channels - than the current module to incorrect channels when 5B or VRC7 is also used - - Fixed groove settings allowing negative speed values - - Fixed incompatible behaviour of Qxy and Rxy by realizing the portamento - effects as instantiations of 3xx automatic portamento - - Fixed Qxy and Rxy not working in Sunsoft 5B in the tracker - - Echo buffer no longer converts the note cut to an invalid note - - Echo buffer no longer converts blank entries to invalid notes when they are - modified by transposing effects - - Fixed 2A03 hardware sweep units not resetting properly for Hxy/Ixy effects - - Fixed FDS-only NSFs corrupting during export - - Fixed bankswitched multichip NSFs corrupting during export - - Fixed Txy not working in exported NSFs - - Fixed the tracker sometimes not exporting Mxy effects to NSFs - - Fixed the tracker exporting invalid pattern data when the N163 wave buffer - effect has an out-of-bound parameter - - - -V0.3.8 - 02/16/15 - -Additions: - - Added Txy delayed transpose effect - - Added an option to export raw data of all non-empty rows as CSV - - Effect hints now appear after updating a pattern effect command - - Added a menu command to remove all unused DPCM samples and DPCM assignments - -Improvements: - - Ported to official FamiTracker 0.4.6 and NSF driver 2.11 - - "Display register state" supports Nintendo MMC5, Konami VRC7, and Sunsoft 5B - - "Display register state" shows human-readable channel information for all - expansion chips - - "Display register state" skips non-existent N163 channels in the volume/ - frequency display - - FDS channel now uses the same volume table as exported NSFs, but an option in - the configuration menu is added to use the old table in the tracker - - Added an option in the configuration menu to cut sub-volume at volume 1 when - Axy or 7xy is active on a channel - - Pressing the Repeat key moves the cursor down on all pattern fields, except - when using the Modplug tracker edit style - - Added hotkey to duplicate the current non-empty pattern below the cursor to - the first unused pattern of the channel - - FTM import now supports detune tables and groove tables - - Sequence MML field now accepts "'" single quotation mark for repeating terms - - The Sunsoft 5B's volume level can now be modified in the chip mixer - - MMC5 can now output sound when the period register is below 0x008 - - The status bar now displays the current row and frame index in hexadecimal - numbers when "Show row numbers in hex" is enabled - - Qxy and Rxy now affect the first entry of the echo buffer immediately - -Bug fixes: - - Sunsoft 5B channels no longer desync upon playing - - Fixed a bug with the Lxx effect where no note release is issued if the non- - release parts of the instrument sequences have not finished - - Fixed Mxy not resetting the channel volume to the previous one in the tracker - if it is interrupted by an Axy effect that is cancelled with an A00 on the - same row as the new note - - Fixed a bug where Yxx on the DPCM channel affects the N163 chip when there - are fewer than 8 N163 channels - - Effect S7F works properly in exported NSFs - - Detune settings dialog no longer writes detune tables upon clicking "Cancel" - - Fixed FTM import not accepting Sunsoft 5B instruments - - Replacement query now handles expansion chip-specific effects correctly - - - -V0.3.7 - 01/18/15 - -Additions: - - Added Yxx wave buffer access for N163 channels - - Added Find / Replace tab - -Improvements: - - Added information panel for the detune settings dialog - - Added hotkey configuration for the Volume Mask command - - Each N163 instrument can hold more than 512 samples in exported NSFs - - Added warning upon removing expansion chips from the current FTM - - Double-clicking the pattern editor does not create a selection if the step - size is zero - - Both the effect type and parameter are remembered together when recalled - later using the Repeat key - -Bug fixes: - - Fixed a bug where the text importer could not load N163 instruments with a - wave size of larger than 128 - - Fixed Shift + Mouse Wheel sometimes not working when "Warp pattern values" is - not checked in the configuration menu - - Fixed truncation error of the Tune button in the detune settings dialog - - - -V0.3.6 - 01/09/15 - -Additions: - - Added ad-hoc support for NSF export using multiple expansion chips - - Added delayed channel volume effect in FamiTracker - -Improvements: - - Improved Shift + Mouse Wheel behaviour - - Shift + Mouse Wheel wraps values only when the corresponding configuration is - checked (disabled by default) - - Instruments reset the 0xy effect's counter when it plays an arpeggio scheme - - "x" and "y" are case-insensitive in the arpeggio scheme MML input box - -Bug fixes: - - When "Preview next/previous frame" is checked, 0CC-FamiTracker now moves to - the previous channel properly using the up arrow key when the step size is - larger than 1 and the channel contains a Bxx, Cxx, or Dxx command - - Fixed expansion chip-exclusive effects not being properly exported to NSFs - - Fixed Shift + Mouse Wheel sometimes editing multiple values despite having no - pattern selection - - FDS detune table is now in correct pitch when automatically generated by the - cent offset in the detune settings dialog - - Fixed expansion chip selector sometimes not removing pattern data in newly - created channels when both the expansion chip combination and the number of - N163 channels have been modified - - - -V0.3.5 - 01/01/15 - -Additions: - - Added echo buffer - - Added support for NSFe export - - Added delayed channel volume effect (implemented in ASM only) - - Added specs.txt - -Improvements: - - Text importer and exporter now supports detune tables and grooves - - Text importer now allows retry / ignore upon encountering an unknown command - - Blank field dash and row number are properly aligned to the centre - -Bug fixes: - - Fixed N163 NSF export not working - - Text importer uses the correct form of channel-exclusive effects sharing the - same letter (H, I, J) - - Fixed the groove settings dialog sometimes resetting the song speed - - Fixed 0CC-FamiTracker not reading Oxx effects when the channel is muted - - Fixed exported NSFs freezing upon using groove 00 as the default groove - - Fixed configuration volume not affecting Sunsoft 5B channels - - 0CC-FamiTracker can now save and load Sunsoft 5B instruments - - - -V0.3.4 - 12/28/14 - -Additions: - - Added groove settings - - Added GROOVES block in FTM format - -Improvements: - - Namco 163 can use unused registers for the waveform memory when there are - fewer than 8 N163 channels (up to 240 samples if there is only one channel) - - 0CC-FamiTracker now skips sequence, instrument and DPCM blocks upon saving if - these blocks contain no data - -Bug fixes: - - Fixed note cut not working on Sunsoft 5B channels in exported NSFs - - Fixed Qxy and Rxy not working properly on the noise channel - - - -V0.3.3 - 12/25/14 - -Additions: - - Added Exx effect for hardware envelope and length counter control - - Added Sxx effect for 2A03 triangle channel linear counter - - Added two demo FTMs demonstrating the 2A03 hardware features - -Improvements: - - 2A03 hardware sweep emulation is more accurate - - Sunsoft 5B channels are properly tuned - - Sunsoft 5B uses a subtractive volume table to handle its exponential volume - - Shift + Mouse Wheel can alter individual values of two-parameter effects - - Shift + Mouse Wheel can now wrap values upon overflowing - -Bug fixes: - - Noise channel no longer halts in pitch slides and relative arpeggio sequences - due to the channel notes' intrinsic octave and pitch - - Fixed the 2A03 hardware envelope's divider not being properly reloaded - - Shift + Mouse Wheel now works properly when selection spans across channels - - Fixed expansion chip selector not removing pattern data in newly created - channels - - - -V0.3.2 - 12/20/14 - -Additions: - - Added DETUNETABLES block in FTM format - - Implemented detune settings dialog - -Improvements: - - Default N163 pitch table is more accurate - - Default VRC7 pitch table is more accurate (this is already implemented in the - official FamiTracker releases) - - Removed detune table for Sunsoft 5B (now identical to 2A03 / NTSC) - -Bug Fixes: - - Fixed a bug where the Lxx parameter in exported NSFs is 1 larger than in FTM - - - -V0.3.1 - 12/16/14 - -Bug Fixes: - - Fixed Vxx not working on 5B channels - - Fixed 5B noise mode sequences not working in NSF export - - - -V0.3.0 - 12/15/14 - -Additions: - - Added full support for the Sunsoft 5B expansion chip - - Added expansion chip selector from ipi's build - - Added one demo FTM demonstrating the 0CC-FamiTracker implementation of the - Sunsoft 5B chip - - Added one demo FTM demonstrating the Lxx effect - -Improvements: - - Frame editor returns to the first channel after modifying the pattern index - on the last channel - - NSFs can be exported in linear mode (they were forced in bankswitching mode - since the first version) - - - -V0.2.4 - 12/11/14 - -Additions: - - Added one demo FTM demonstrating the tempo fix - - Added detune settings (implemented in V0.3.2) - -Bug Fixes: - - Fixed tempo truncation error in FamiTracker - - Fixed Lxx not working on the DPCM channel - - - -V0.2.3 - 12/07/14 - -Additions: - - Sunsoft 5B envelope toggle is now incorporated into instrument duty sequences - - Vxx for the Sunsoft 5B channels, same effect as 5B duty sequence entry - -Improvements: - - Status bar now shows the combination of expansion chips in multichip FTMs - - 0CC-FamiTracker now removes all unused sequences upon removing unused - instruments - - Undo reverts the "file is modified" flag if the original state of the FTM can - be restored - -Bug Fixes: - - Fixed scrolling during drag-and-drop when there are a lot of channels - - 0CC-FamiTracker now uses the QWERTY key code constants - - 0CC-FamiTracker can now load FTMs using all six expansion chips - - 0CC-FamiTracker no longer considers instruments used with no notes unused - during clean up - - FDS instruments no longer set the "file is modified" flag upon editing if - they use frequency modulation - - N163 instruments no longer set the "file is modified" flag upon editing if - there is more than one waveform - - - -V0.2.2 - 12/03/14 - -Additions: - - Ctrl+Shift+M now toggles Namco 163 multiplexer emulation, enabled by default - - Namco 163 waveforms can be up to 128 samples long - -Improvements: - - Multichip FTMs load properly when there are fewer than 8 N163 channels - - Instrument editor always moves the pattern editor cursor to one of the - instrument's channel(s) whenever the cursor is on a different chip - - The resource file now uses English (United States) as the language for all - files instead of Swedish (Sweden) - - Better easter egg - - N163 waves automatically prevent reading from the non-wave registers - -Bug Fixes: - - Fixed NSF export bug for FDS and N163 which use invalid pitch table pointers - - Fixed NSF export bug for VRC7 where VRC7 channels are two octaves lower - - Lxx effect no longer affects new notes, only existing notes - - - -V0.2.1 - 11/29/14 - -Additions: - - Added an easter egg (included in source code since V0.3.8) - -Improvements: - - Arpeggio sequence graph editor initializes at the correct vertical position - in Scheme mode - -Bug Fixes: - - Fixed a bug where arpeggio schemes cannot be input using the MML field - - - -V0.2.0 - 11/28/14 - -Additions: - - Added the ability to read custom pitch tables - - Added delayed note release effect (Lxx) - -Bug Fixes: - - Program now displays properly on higher DPI settings - - - -V0.1.1 - 09/14/14 - -Improvements: - - MML field now displays arpeggio schemes with "x" and "y" properly - - MML field accepts "+x" and "+y" as terms - -Bug Fixes: - - Arpeggio sequence graph editor will not affect "x" and "y" in sequence terms - - Fixed a bug that treats negative numerals in front of terms incorrectly - - - -V0.1.0 - 09/12/14 - -Additions: - - Initial release - - Added arpeggio schemes - - 5 demo FTMs, one with permission from ipi - - - --------------------------------------------------------------------------------- - -For enquiries mail to nicetas.c@gmail.com - - --------------------------------------------------------------------------------- - -FamiTracker -Change log -Version 0.4.6 - February 4 2015 - --------------------------------------------------------------------------------- - -Version 0.4.6 - - New stuff: - - Pattern rows with unspecified instruments will use the selected instrument - - Fixed bugs: - - Fixed some rendering bugs - - Fixed instrument clone command bug - - -Version 0.4.5 - - New stuff: - - Improved VRC7 emulation, clipping will occur when audio is too loud - - Improved accuracy of tempo calculation - - Added multi-channel support to the insert command - - Added song selector to the wave export dialog - - Added drag and drop support to instrument list for instrument reordering - - Added hex support to macro sequence strings and waves (x00 and $00) - - Added option to display channel register values - - Fixed bugs: - - Fixed a bug with the transpose command when used without an active selection - - Fixed a portamento up/down effect bug when used on a silent channel - - Fixed a bug with Sxx effect on DPCM affecting the pulse 1 channel when exported to NSF - - Fixed a bug when using delayed notes on the last row of a pattern - - Fixed a few pattern editor render bugs - - Fixed MIDI note on/off priority problem - - -Version 0.4.4 - - Fixed bugs: - - Fixed a problem with fixed arpeggio not playing the final note - - Fixed muting / unmuting channels affecting all channels when preview full row was enabled - - Fixed toolbar icons not being visible in Windows XP - - Fixed a problem that caused the 64th sample not staying assigned when file is loaded - - Fixed note slides clearing the slide effect after reaching target note - - Fixed the Select All (Ctrl+A) command behaviour to be more similar to IT - - Fixed skip command (Dxx) in NSF code when skipping to any other row than 0 - - Fixed NES export - - Updated PAL DPCM period table - - -Version 0.4.3 - - New stuff: - - Added names to the built in VRC7 patches - - Added option to preview full row when editing notes - - Added option to display flat notes instead of sharps - - Added an audio level mixer - - Removed MIDI import - - Fixed bugs: - - Added a fix for TNS-HFC carts when DPCM bankswitching is used - - Corrected VRC7 tuning table - - Fixed DPCM instrument editor keyboard bug - - Fixed NSF export when using sequences with hidden loop points - - Fixed NSF code crash when using too many assigned DPCM samples - - Fixed crash on startup when NSFplay is located in the same folder - - Fixed a problem with N163 and FDS waves that appeared when playing a module - - Fixed some DPCM sample editor bugs - - Fixed duplicated paste bug in the frame editor - - Fixed some noise pitch slide effect bugs - - Fixed the tremolo effect command (7xx) on VRC7 channels - - Fixed note slide effects on VRC7 - - -Version 0.4.2 - - New stuff: - - Added selection + drag & drop capability to the frame editor - - NSF exporter will optimize N163 waves - - Added initial delta counter setting to the DPCM instrument editor - - Added a text exporter / importer (by rainwarrior) - - Added a shortcut item for the duplicate patterns command - - Added a volume mask option to pattern editor (edit menu) - - Added module comments dialog - - Adjusted filtering of FDS audio emulation - - Fixed bugs: - - Fixed extra effect columns not being copied on shift+drag - - Fixed a problem with shift+mouse wheel - - Fixed a few other FTM file import problems - - Fixed a problem with FDS wave previewing - - Fixed a bankswitching bug when exporting multisong NSFs - - Fixed VRC6 and MMC5 not being silenced by the Cxx command - - Fixed some problems with the Dxx command - - -Version 0.4.1 - - New stuff: - - Added an instrument files menu - - Added an option to copy volume column to text (Shift+copy) - - Changed default key for note cut to '1' - - Fixed bugs: - - Fixed some problems with the FTM import feature - - Fixed vibrato (4xx) export bug - - Fixed volume slide (Axx) export bug - - Fixed undo bug after pasting from clipboard - - Fixed problem when loading instrument files that contains sequences of max size - - Fixed some wave file export bugs - - -Version 0.4.0 - -New stuff: - - Added fixed and relative arpeggio modes - - Added DPCM bank switching - - Added Namco expansion sound - - Added pattern expand/shrink options - - Added pattern & instrument deep clone commands (by coda) - - Added assembly source export option - - Added some NSF export optimizations - - Added indication of unsaved files - - Added support for 24bit and 32bit samples to the DPCM importer - - Added better DPCM import resampler (by Jarhmander) - - Added an option to toggle between old & new speed/tempo split-point - - Moved the home/end key behaviour to the impulse tracker mode - - Removed PAL option when using expansion chips - - Increased auto-scroll speed - - BPM calculation depends on the row highlight settings - - Added rainwarrior's new VRC7 patches - -Fixed bugs: - - Fixed the file creation date being overwritten when saving files - - Fixed VRC6 sawtooth pitch bug - - Fixed VRC6 instrument switch bug - - Fixed FDS modulation bug (by rainwarrior) - - Fixed FDS fine pitch setting in the tracker - - Fixed FDS instrument release behaviour - - Fixed export problem that occured when trying to play unassigned samples - - Fixed VRC7 custom instrument bug in exported NSFs - - Fixed tremolo (7xx) bug in exported NSFs - - Fixed volume problem when using the note halt command on VRC6 and MMC5 - - -Version 0.3.7 - -New stuff: - - Added MML string copy/paste to VRC7 instrument editor - - Added VRC7 built-in patch display - - Added MML string copy/paste to FDS waveform editor - - Added pattern font size selector - - Added single instance option - - Added play option to FTM file type in file explorer - - Added context sensitive help (F1) - - Ctrl+select to do whole channel selections - - New effects: - * H = FDS modulation depth - * I = FDS modulation speed, high part - * J = FDS modulation speed, low part - -Fixed bugs: - - Shortcuts with removed keys are saved - - Fixed a crash bug when frame preview is disabled - - Fixed a sequence editor crash bug - - Fixed another VRC6 release sequence bug - - Fixed the PAL flag bug when loading PAL FTMs - - Fixed a pitch effect (Pxx) bug in exported NSFs - - Fixed a portamento effect (3xx) bug on noise channel in exported NSFs - - Fixed MIDI sync clock receiver - - Fixed a square channels emulation bug - - Fixed a song editor bug - - Fixed a problem when saving VRC6 instrument files - - Fixed a small vibrato export bug - - -Version 0.3.6b4 - -Fixed bugs: - - Fixed a problem when loading multiple FTI files with DPCM samples - - Fixed a problem that occured when using undo on patterns with Dxx/Bxx effects - - Fixed VRC7 sweeps, auto portamento & fine pitch setting - - Fixed auto-arpeggio issue in the tracker - - Fixed the problem that caused release points to sometimes disappear in saved files - - Fixed some synchronization issues that could cause a crash when switching expansion chip sound (and probably also in other cases) - - Fixed some dpcm editor crash bugs - - Fixed a bug that crashed the program when loading files with FDS instruments and FDS expansion disabled - - Fixed a bug that crashed the program when repeatedly pressing F12 - - Fixed Sxx effect in exported files - - Fixed Qxx/Rxx effect behvaiour on FDS in tracker - - Fixed Rxx effect issue on exported files - - Fixed Rxx/Qxx effect when triggering a new note before the slide is done in exported files - - Corrected the tremolo effect on FDS - - Adjusted VRC7 mixing volume according to some hardware measurements - - Changed the VRC7 built-in patch settings to a more accurate set - - Fixed FDS pitch clipping in exported files - - Disabled FDS hardware envelope trigger on note offs in exported files - - Fixed a crash bug when inserting/removing frames when max count is used - - Fixed a crash bug that occurred sometimes when using select-all in a channel with all effect columns enabled - - Fixed another crash bug that occurred sometimes when creating selections in patterns - - Mixed paste does not overwrite non-empty rows anymore - - Note cut/release works on IT-mode when previewing notes - - Fixed a bug in the Yxx-effect when exported to NSF - - Fixed a crash bug when inputting MIDI data on an invalid channel - - Fixed VRC6 sequence bug when triggering the release part - - Fixed a bug where DPCM would fail in exported NSFs after removing instruments - - Inverted the Pxx command in the FDS channel - - Fixed Vxx effect inconsistency when exporting NSFs - - Fixed a crash bug when using a custom refresh rate with expansion chips - - - VRC7 volume is working - - Channel mute/unmute works - - Frequency limits on > sq2 - - Fixed DPCM load bug - -New features: - - Module importing - - Added a shortcut option to show/hide control panel (in settings/shortcuts) - - Added alt+left/right to move to left/right channel - - Added block begin/end commands (Alt+B/E, available in IT-mode) - -Fixed beta bugs: (ocurred only in earlier betas) - - Loading/saving dialog in windows xp - - Copy/paste over program instances - - Fixed the exit crash problem - - Fixed DPCM samples problem when importing modules - - Fixed the pattern skip bug \ No newline at end of file diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 708cb24b7..ef2923979 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -4,10 +4,79 @@ Change Log Written by D.P.C.M. -Version 0.5.1.0 - January 7, 2025 +Version 0.5.2.0 - August 18, 2025 --- +## Dn0.5.2 - 2025-08-18 + +- ### Important changes: + + - Set release number as SemVer (@Gumball2415 #365 #376) + - Triangle linear counter retrigger command (`Xxx`) (@zeta0134 @Gumball2415 #291 #349) + +- ### Improvements: + + - Refactor and adjust tracker register view (@Gumball2415 #338) + - Refactor pitch, volume, and note drawing functions + - Apply OETF gamma 2.2 for viewing low volume values + - Reduce magic constants in source + - Add tone tints for 5B, FDS, and 2A03 periodic noise + - Implement pitched 2A03 periodic noise pitch-volume indicator + - Implement logarithmic level for VRC7 pitch-volume indicator + - Pick song length mode when typing length time in WAV export dialog (@nyanpasu64 #346) + - Add dialog indication for failed version check (@Gumball2415 #371 #376) + +- ### Bug fixes: + + - Synchronize effect bytecode order when compiling "glob" multichip (@Gumball2415 #331 #341) + - Fix C-0 in instrument editor not playing (@Gumball2415 #342) + - Fix 64-byte alignment of DPCM segment in .asm export (@Gumball2415 #342) + - Patch NSF driver channel ID table with used channels in N163 .nsfs (@DarkZapOTron @Gumball2415 #337 #342) + - Fix `ft_channel_enable` in .asm export to list used channels (@Gumball2415 #342) + - Fix FDS multichip write protection padding for NSF kernel builds (@Gumball2415 #334 #342) + - Fix N163 channel count initialization (@Gumball2415 #342) + - Fix VRC7 linear pitch slide channel index bug (@Gumball2415 #340 #342) + - Match N163 wave index sequence limit behavior in NSF driver (@HeeminTV @Gumball2415 #344 #342) + - Fix spelling error in WAV export dialog (@nyanpasu64 #346) + - Fix pushing to main thread receive queue from wrong thread (@nyanpasu64 #346) + - Fix overlapping memcpy bug in DPCM sample editor (@nyanpasu64 #345) + - Fix bug where `m_pWaveFile` is not cleared if we fail to open a WAV file (@nyanpasu64 #353) + - Fix WAV export crash caused by uninitialized variables (@sunshinespecialist @nyanpasu64 #190 #367) + - Adjust selection auto-scroll offsets (@henrikvilhelmberglund #351 #368) + - Fix channel state retrieval on reset tempo (@henrikvilhelmberglund @Gumball2415 #357 #373) + - Fix N163 linear mix volume quantization (@Gumball2415 #366) + - Beta: Fix triangle `Xxx`-`Sxx` linear counter behavior (@Gumball2415 #355 #366) + - Prevent focus shifting with open instrument editor when inputting instrument patterns (@@henrikvilhelmberglund @Gumball2415 #350 #366) + - Fix note slide portamento reset in NSF driver (@Gumball2415 #363 #366) + - Fix `1xx`/`2xx` empty note early exit (@Gumball2415 #366) + +- ### Internal: + + - Refactor FDS modulation implementation in NSF driver (@Gumball2415 #341) + - Refactor instrument loading (@Gumball2415 #342) + - Refactor NSF compiler code to use member variable instead of redundant calls (@Gumball2415 #342) + - Port `build_engine.lua` to Python for faster NSF kernel builds (@Gumball2415 #342) + - Enable `USE_ALL` when using all expansion audio flags (@Gumball2415 #342) + - Refactor NSFe metadata generation (@Gumball2415 #335 #342) + - Optimize VRC7 register/data write delay timings (@Gumball2415 #342) + - Add logging for WAV export events, to help identify cause of crashes (@nyanpasu64 #353) + - Add NSF binary header compiling to .sln build process (@Gumball2415 #359) + - Refactor `resource.h` custom build commands (@Gumball2415 #359) + - Add NSF binary compiling to GitHub Actions (@Gumball2415 #359) + - Add GitHub Actions CC65 build tool caching (@Gumball2415 #359) + - Refactor CI building (@Gumball2415 #359) + - Refactor release publish workflow (@Gumball2415 #359) + - Add parallel NSF driver building in build script (@Gumball2415 #359) + - Refactor Effect hint status logic (@Gumball2415 #352) + - Add effect hint for triangle linear counter retrigger (Xxx) (@Gumball2415 #352) + - Bypass mute disable on chip-global effects (@HeeminTV #369) + - Update Windows SDK version to `10.0.26100` (@Gumball2415 #370 #375 #366) + - Add `/utf` build flag to allow compiling in non-English system locales (@henrikvilhelmberglund @Gumball2415 #368 #372) + - Rename contributor to Sun Rays (@Gumball2415 #362 #366) + - Include readme and licenses in zipped distribution builds (@Gumball2415 #376) + - Remove old 0CC readme and changelog (@Gumball2415 #376) + ## Dn0.5.1.1 - 2025-01-13 - ### Hotfixes diff --git a/docs/version_update.md b/docs/version_update.md index d650c15ac..c935ed864 100644 --- a/docs/version_update.md +++ b/docs/version_update.md @@ -19,20 +19,27 @@ - sort by category, then by issue number, then by PR number - ex: - `Fix access violation in MRU submenu list update (@eugene-s-nesdev @Gumball2415 #243 #214)` + - ***important***: set date of release at the last moment! - [ ] Create Version Tag - - Format: `Dnx.y.z.r` + - Format: `Dnx.y.z.b` - x: Major (API change) - y: Minor (backward compatible change) - z: Patch (backward compatible bugfix) - - r: Revision (backward compatible quick fixes for typos) + - b: Build type (internal, not visible) + - 0: stable release + - 9: "dirty"/beta/in-development build - Double check that this tag is higher than the previous release tag - Version tag must be appropriate to Semantic Versioning - [ ] Edit every file with version info: - [Dn-FamiTracker.rc](../Dn-FamiTracker.rc) - [version.h](../version.h) + - [Readme.txt](../Readme.txt) - [ ] **IMPORTANT**: update ConfigVersion.cpp - [ ] Update copyright years: - - all source files with copyright info: + - Update License years in + - [LICENSE.md](../LICENSE.md) + - [README.md](../README.md) + - Update all source files with copyright info: ``` Dn-FamiTracker - NES/Famicom sound tracker @@ -58,6 +65,6 @@ along with this program. If not, see https://www.gnu.org/licenses/. - There is a GitHub Actions script to build a drafted release upon a tag push - Tag must be on commit deemed appropriate for release - [ ] Edit and publish the draft release page in GitHub - - [ ] Triple check that the tag on the release matches the Version Tag + - [ ] Triple check that the tag on the release matches the Version Tag (apart from the build type number) - [ ] Double check the build artifacts to be accurate and working - [ ] Notify everyone about the new version \ No newline at end of file diff --git a/release.bat b/release.bat index 12fe0b548..f66ecd9a7 100644 --- a/release.bat +++ b/release.bat @@ -16,7 +16,7 @@ goto endfile if "%~3"=="" goto compileversion cd %2/%1/ -call 7z a -t7z -mx=9 -mmt=3 -m0=LZMA2:d=26:fb=128 -ms=on ..\..\distribute\Dn-FamiTracker_"%~3"_"%~2"_"%~1".7z Dn-FamiTracker.exe Dn-FamiTracker.chm Dn-FamiTracker.pdb vc143.pdb ..\..\docs\CHANGELOG.md ..\..\demo +call 7z a -t7z -mx=9 -mmt=3 -m0=LZMA2:d=26:fb=128 -ms=on ..\..\distribute\Dn-FamiTracker_"%~3"_"%~2"_"%~1".7z Dn-FamiTracker.exe Dn-FamiTracker.chm Dn-FamiTracker.pdb vc143.pdb ..\..\docs\CHANGELOG.md ..\..\demo ..\..\Readme.txt ..\..\LICENSE.md ..\..\LICENSE-GPLv2.txt ..\..\LICENSE-GPLv3.txt cd ..\.. goto endfile @@ -27,6 +27,6 @@ for /F "tokens=1,2,3,4,5 delims=, " %%A in (Dn-FamiTracker.rc) do ( ) ) cd %2/%1/ -call 7z a -t7z -mx=9 -mmt=3 -m0=LZMA2:d=26:fb=128 -ms=on ..\..\distribute\Dn-FamiTracker_%version%_"%~2"_"%~1".7z Dn-FamiTracker.exe Dn-FamiTracker.chm Dn-FamiTracker.pdb vc143.pdb ..\..\docs\CHANGELOG.md ..\..\demo +call 7z a -t7z -mx=9 -mmt=3 -m0=LZMA2:d=26:fb=128 -ms=on ..\..\distribute\Dn-FamiTracker_%version%_"%~2"_"%~1".7z Dn-FamiTracker.exe Dn-FamiTracker.chm Dn-FamiTracker.pdb vc143.pdb ..\..\docs\CHANGELOG.md ..\..\demo ..\..\Readme.txt ..\..\LICENSE.md ..\..\LICENSE-GPLv2.txt ..\..\LICENSE-GPLv3.txt cd ..\.. :endfile diff --git a/resource.h b/resource.h index 22eba00fc..6720caa47 100644 --- a/resource.h +++ b/resource.h @@ -678,8 +678,12 @@ #define IDC_OPLL_PATCHBYTE2 1538 #define IDC_OPLL_PATCHNAME2 1539 #define IDC_STATIC_PATCH3 1540 +#define IDC_VERSION_STATIC 1540 #define IDC_STATIC_PATCH4 1541 +#define IDC_VERSION_STATIC4 1541 +#define IDC_VERSION_STATIC3 1541 #define IDC_STATIC_PATCH5 1542 +#define IDC_VERSION_STATIC2 1542 #define IDC_STATIC_PATCH6 1543 #define IDC_STATIC_PATCH7 1544 #define IDC_STATIC_PATCH8 1545 @@ -905,7 +909,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 380 #define _APS_NEXT_COMMAND_VALUE 33215 -#define _APS_NEXT_CONTROL_VALUE 1537 +#define _APS_NEXT_CONTROL_VALUE 1543 #define _APS_NEXT_SYMED_VALUE 179 #endif #endif diff --git a/version.h b/version.h index c9171ed4b..cb3e7aea7 100644 --- a/version.h +++ b/version.h @@ -32,16 +32,19 @@ #define VERSION_API 0 #define VERSION_MAJ 5 -#define VERSION_MIN 1 -#define VERSION_REV 1 +#define VERSION_MIN 2 -#define VERSION VERSION_API,VERSION_MAJ,VERSION_MIN,VERSION_REV +#if defined(WIP) + #define VERSION_BLD 9 +#else + #define VERSION_BLD 0 +#endif + +#define VERSION VERSION_API,VERSION_MAJ,VERSION_MIN #define VERSION_STR \ STR(VERSION_API) "." \ STR(VERSION_MAJ) "." \ - STR(VERSION_MIN) "." \ - STR(VERSION_REV) - + STR(VERSION_MIN) #define APP_NAME_VERSION APP_NAME " " VERSION_STR