0CC-FamiTracker 0.3.0 (w/ Sunsoft 5B support)
BotB Academy Bulletins
 
 
50602
Level 25 Chipist
HertzDevil
 
 
 
All versions of 0CC-FamiTracker can be found here
.

There is also now a forum
there because jsr suppresses 0CC-FamiTracker threads at the official forum.

About three months after the initial release of my arpeggio scheme mod, I have added more features to finish what I would call the first major release of my FamiTracker mod, named after everyone's my favourite arpeggio effect. Current features include:

  • Complete Sunsoft 5B support (including NSF export)
  • Arpeggio schemes
  • Hardware volume envelopes
  • Find / replace tab
  • Detune settings
  • Groove settings
  • Echo buffer access
  • Delayed note release effect
  • Delayed channel volume effect
  • N163 wave buffer access effect
  • Expansion chip selector
  • Ad-hoc multichip NSF export
  • Several miscellaneous tweaks and bug fixes (excluding bugs present in 0.4.2 official but not in 0.4.5 official)

See the readme file and change log for more information. I will port it to the FamiTracker 0.4.5 source code once it is out.
 
 
50611
Level 21 Criticist
Xyz
 
 
 
 
post #50611 :: 2014.12.15 6:31am
  
  raphaelgoulart hæitd this
AND change log
 
 
50629
Level 23 Mixist
DalekSam
 
 
 
post #50629 :: 2014.12.15 10:08am
  
  JINTAKE, raphaelgoulart and Savestate liēkd this
praise
 
 
50673
Level 25 Chipist
HertzDevil
 
 
 
post #50673 :: 2014.12.16 7:51am
  
  Savestate and raphaelgoulart liēkd this
http://www.mediafire.com/download/ngyrf26g67dg5ae/0CCft_v031.rar

0CC-FamiTracker 0.3.1 fixes several bugs in the Sunsoft 5B NSF driver.
 
 
50678
Level 27 Chipist
raphaelgoulart
 
 
 
post #50678 :: 2014.12.16 9:09am :: edit 2014.12.16 9:15am
  
  goluigi, HertzDevil and Savestate liēkd this
you could edit the original post as probably many people will dl that version before checking the comments
also great job on that mod! its impressive how fast you made this
you make it look like its easy to do that kinda stuff
 
 
50680
Level 25 Chipist
HertzDevil
 
 
 
post #50680 :: 2014.12.16 10:32am
  
  goluigi, b00daw, Slimeball, Xyz and raphaelgoulart liēkd this
i agree that 6502 ASM is fun to learn and use
 
 
50683
Level 27 Renderist
b00daw
 
 
 
 
post #50683 :: 2014.12.16 11:46am :: edit 2014.12.16 11:57am
ok the easiest way to probably "fix" the clunkiness of all of this for 5B already is to change noise/mode software instrument macros to just "envelope period" with the 16-bit values on the table for ($0B-$0C).

it also wouldn't make a great software macro for pulse/noise/combined ($07), but it's a start. you could add another software instrument macro for that as well; and have another table for envelope modes ($0D). :)

writing a 16-bit value with two separate commands (Hxx - Ixx) is very awkward and depends on your tracking speed which could put people off their other chips and have to focus on 5B.

the Jxx command could easily become the Jxy command to access envelope modes and generator modes.

y = the envelope mode for ($0D) (see the mode table on the datasheet or nesdev wiki)

x = generator mode: 0 = pulse , 1 = noise, 2 = combined

this should probably help it out a lot more without a ton of extra coding. :)

=================

also, i can't seem to get Lxx working. now this basically sets bit 5 of $4000/$4004 to 0 allowing for a decay in volume after xx ticks. no matter what the software volume envelopes or tracker volume is set to it does not decay at the xx ticks; neither in tracker or on export. This should also work for MMC5 but not for any other pulse generation channels. You may want to document this.
 
 
50684
Level 21 Criticist
Xyz
 
 
 
 
post #50684 :: 2014.12.16 12:06pm
+1 env speed macro.
-1 Jxy for enable flags. It is inconsistent with Vxx being used for that sort of thing
 
 
50685
Level 27 Renderist
b00daw
 
 
 
 
post #50685 :: 2014.12.16 12:10pm
Yeah I guess Vxx could be used for that, sort of how the 2a0x noise channel is used.

V00 = Pulse, V01 = Noise, V02 = Combined
 
 
50777
Level 25 Chipist
HertzDevil
 
 
 
post #50777 :: 2014.12.19 3:51pm
  
  goluigi liēkd this
0.3.2 is out
 
 
50935
Level 25 Chipist
HertzDevil
 
 
 
post #50935 :: 2014.12.24 10:06am
  
  gotoandplay, Savestate and anewuser liēkd this
0.3.3 is out

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 warp 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
 
 
50939
Level 28 Chipist
gotoandplay
 
 
 
post #50939 :: 2014.12.24 3:12pm
  
  raphaelgoulart liēkd this
Im looking forward to some free time to try this out.
 
 
51063
Level 25 Chipist
HertzDevil
 
 
 
post #51063 :: 2014.12.28 8:42am :: edit 2014.12.28 8:42am
  
  Flaminglog, JINTAKE, Savestate and raphaelgoulart liēkd this
0CC-FamiTracker 0.3.4 is released. As promised, this version adds groove settings. Change log:

Additions:
- Added groove settings

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
 
 
51125
Level 17 Mixist
Zaalan3
 
 
 
post #51125 :: 2014.12.29 9:01pm :: edit 2014.12.29 9:09pm
  
  raphaelgoulart liēkd this
I feel that it would be much more intuitive if we could define envelope shape in the insturment editor. Also, I think adding an envelope table might be helpful so you dont have to use Hxy and Ixy and simply entering a note into the frame will play the corresponding period. Personally I dont like the idea of having to memorize period values/ having stare at a text file with the note to period conversions.

TLDR: 0cc Famitracker Improved( like teh Vortex Tracker )
 
 
51131
Level 26 Mixist
A-zu-ra
 
 
 
post #51131 :: 2014.12.30 1:10am :: edit 2014.12.30 1:16am
  
  ap0c and raphaelgoulart liēkd this
Looking forward to when multi-chip exporting to NSF works (if it's possible) :o

Also, possibly more intuitive instrument editing for the Sunsoft chip as hinted my Zaalan3's post.
 
 
51134
Level 27 Renderist
b00daw
 
 
 
 
post #51134 :: 2014.12.30 2:07am
  
  HertzDevil, ap0c and raphaelgoulart liēkd this
of course it's possible. it just depends on memory mapping space.
 
 
51140
Level 28 Chipist
gotoandplay
 
 
 
post #51140 :: 2014.12.30 10:54am :: edit 2014.12.31 10:32am
  
  raphaelgoulart liēkd this
I enjoying investigating the 5b. I'm guessing, as it is a type of YM chip, that it could potentially generate timer effects such as sid leads?

Also re envelope instruments (eg buzzers), I guess as the pitch is determined by a Hxy effect, that pitch slide effects cant be done on that type of instrument?

Nice work! I love that I'm now able to marry up two of my favourite soundchips, the 2a03 and the YM.
 
 
51180
Level 25 Chipist
HertzDevil
 
 
 
post #51180 :: 2014.12.31 2:07pm :: edit 2014.12.31 6:01pm
  
  raphaelgoulart, b00daw, Savestate, JINTAKE and Zaalan3 liēkd this
0CC-FamiTracker 0.3.5 is released for the new year. Change log:

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

@Zaalan3: I might consider adding a default envelope shape to 5B instruments in the same way N163 instruments store custom parameters in the NSF.
Vortex Tracker does not have a separate register table for the envelope, but it automatically inserts an appropriate envelope rate whenever the shape defines a triangle or sawtooth wave. I might also consider adding that into 0CC-FT.

@A-zu-ra: NSF export with multiple expansion chips will not be supported in 0CC-FT, because the memory space (256 bytes on the zero page and 1536 more outside the stack) will soon be completely depleted. The least I could do is write a FTM2MML converter to compile multichip FTMs using a different tool like NSD or PPMCK (but that can be readily implemented by anyone since text export is now available in FamiTracker).
 
 
51200
Level 27 Renderist
b00daw
 
 
 
 
post #51200 :: 2015.01.01 12:48am :: edit 2015.01.01 6:48am
  
  raphaelgoulart and Zaalan3 liēkd this
5B is still not fully-functional until there is an easier envelope on/off enable and tuned envelope notes; using look-up note tables.

each instrument parameter should ask whether it is a pure pulse, pure noise, pulse noise, envelope pulse, envelope noise, or envelope pulse noise instrument. the channel itself that the instrument is assigned to would then affect the respective registers. note sure how Hxx and Ixx are even necessary.

you could just use the current tuning commands to work with 5B depending on what type of 5B instrument it is.

way too tedious for music making. it's like working with victracker.
 
 
51201
Level 17 Mixist
Zaalan3
 
 
 
post #51201 :: 2015.01.01 3:07am :: edit 2015.01.01 3:07am
I've found a bug in playback of version 0.3.5
play this ftm in it for a nice showcase.
link
 
 
51208
Level 25 Chipist
HertzDevil
 
 
 
post #51208 :: 2015.01.01 7:18am :: edit 2015.01.01 7:18am
  
  gotoandplay liēkd this
@b00daw: I have read the Victracker 2.0 manual and it is far from what I would describe as tedious, compared to FDS FM in FamiTracker or hex commands in AddMusicK; in this case I do not know what "fully-functional" and "tedious" mean respectively, since you are essentially asking for potentially more memory usage in expense of less expressive power of the Sunsoft 5B.

For the record the envelope-only tones do not require a separate lookup table since it is just the 5B period >>5 for triangle resp. >>4 for sawtooth, but I will not demote the 5B global Hxx/Ixx effects to any default parameter of 5B instruments since that would lead to more confusion if a user has no idea which 5B channels have control over the shared registers, somehow like the case with the N163 wave memory (on an unrelated note I will do something with that later).

However, I will consider whether to add a flag to 5B instruments that force the envelope rate to follow the note period, regardless of whether that instrument has the envelope enabled in the noise / mode sequence.

The square / noise / envelope flags in the Vxx effect and the noise / mode sequence will all stay as is.

@Zaalan3: I do not know what is wrong with 0CC-FamiTracker 0.3.5 in that FTM.

@gotoandplay: As mentioned above the envelope-only tones have a much coarser period register; as an example, if the 2xx effect operates directly on the envelope rate, given the same note for a square-only instrument and an envelope-only triangle instrument, 201 on the latter will be equivalent to 220 on the former
. This may be solved by implementing the force follow flag above and disabling the envelope reset when the rate is modified by something other than the Hxx/Ixx effects, but I still need to think about whether it is worth further enlargement of the NSF driver.
 
 
51214
Level 27 Renderist
b00daw
 
 
 
 
post #51214 :: 2015.01.01 10:58am
@HertzDevil: VicTracker has no musically standard intuitive process to it. Just because we can figure it out because we understand relevance between hexadecimal values and ascending and descending frequencies doesn't mean other people can or want to. VortexTracker and your current implementation of envelope generator frequencies are similar; if not the same as those concepts; and also take away from immersion factor and, yes, increase tedium.

Memory consumption is NOT an issue in this case. The look-up tables could be stored in FamiTracker tracker source (not ROM LUTs) and simply input as direct writes in the sequencer stream data; just as the Hxx/Ixx commands are currently used; but with a note and octave value instead; as long as the instrument specifies which mode the 5B is pumping its generators into the oscillators: pulse, noise, pulse/noise, envelope-only, envelope/pulse, envelope/noise, or envelope/pulse/noise. That's a 3-bit value if you wanted to include "off" as well into your "noise/mode" software macro envelopes.

Yes this does break a few things in the current schema; but I know you rewrite your FTMs like crazy anyway. I think you'd have fun getting all of this set up and making 0CC-FT totally bad-ass. :)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Also please create a command that adds XX amount of grouped NOPs to the main loop routine if the refresh rate is high to support "variable refresh rate." Applications are limitless.

Other unused register in FamiTracker with easy implementation: VRC6 $9003.

7 bit 0
---- ----
.... .ABH
|||
||+- Halt
|+-- 16x frequency (4 octaves up)
+--- 256x frequency (8 octaves up)

H - halts all oscillators, stopping them in their current state
B - 16x frequency, all oscillators (4 octave increase)
A - 256x frequency, all oscillators (8 octave increase)

Now I'm not sure if bit 0 (Halt) is set to 1 and then 0 again if the oscillators will start back up. That behavior is not defined currently; at least in the wiki. I am starting up my development rig soon and getting all necessary electronics equipment again.

If you added a simple command to this we could at least see what the emulated behavior is. I have some VRC6 carts and some testing equipment in boxes if need be.
 
 
51217
Level 21 Criticist
Xyz
 
 
 
 
post #51217 :: 2015.01.01 12:04pm :: edit 2015.01.01 12:11pm
  
  raphaelgoulart liēkd this
If such a force freq is enabled I request that it have an option to disable. It'd be like using VTII's autoEnv with only the 1:1 ratio which is extremely limiting imo. You also don't get the option to essentially P81/P7F the env period to force/avoid TNe phasing.

@b00d VRC6 $9003 sounds hella easy to make a test nsf in ppMCK; show up in the nesdev irc later tonight and I'll PM it
 
 
51218
Level 27 Chipist
raphaelgoulart
 
 
 
post #51218 :: 2015.01.01 4:44pm
there could be the "force freq" and one could use the Hxx/Ixx as the Pxx effect, i think :D
 
 
51219
Level 17 Mixist
Zaalan3
 
 
 
post #51219 :: 2015.01.01 5:44pm :: edit 2015.01.01 5:51pm
Hertz do you mean you don't see the problem or you don't know what is causing the problem?
 
 
51222
Level 25 Chipist
HertzDevil
 
 
 
post #51222 :: 2015.01.02 12:30am :: edit 2015.01.02 12:41am
One more thing: Anything new I implement to the existing part of the FTM format will either have to absolutely break backward compatibility with the official release, as in adding a char to every 5B instrument in the INSTRUMENTS block; or put such extra information separately, like storing the "use default groove instead of default speed" flags in the GROOVES block after all grooves have been listed. However, GROOVES is never part of the official FTM format (if you export a text from an FTM in 0CC-FT you cannot import it in vanilla FT without removing all the groove data), so any attempt to add extra information will lead to bad design as the extra 5B instrument data is not supposed to be fetched anywhere outside the INSTRUMENTS block, unless the official FamiTracker has a future-proof implementation of the FTM format. This depends on whether jsr wants to ensure that FTMs generated from unofficial FTMs must be (in-)compatible with the official releases.

Therefore the answer is no "force envelope rate" flag right now.

@Zaalan3: I cannot find a difference in playback in any 0CC-FT version between 0.3.5 and 0.2.3.
 
 
51223
Level 25 Chipist
HertzDevil
 
 
 
post #51223 :: 2015.01.02 1:56am
  
  Yibbon, Savestate, Slimeball, b00daw, ap0c, plrusek and raphaelgoulart liēkd this
Also, a forum
has been set up because jsr specifically suppresses 0CC-FamiTracker threads at the official forum and this BotB thread is insufficient for including all 0CC-FT users.
 
 
51231
Level 17 Mixist
Zaalan3
 
 
 
post #51231 :: 2015.01.02 3:09pm :: edit 2015.01.02 3:13pm
  
  Savestate liēkd this
HertzDevil I've been using 0.3.4 and when using 0.3.5 the ftm 'pops' every other instance of insturment 03 in Square 1 of the 5B. This must be a problem specific to me or my platform since you don't seem to experience it.
I'm using Windows 8.1, if you could investigate I'd appreciate it.

Here's a recording of what it sounds like to me: link
 
 
51235
Level 25 Chipist
HertzDevil
 
 
 
post #51235 :: 2015.01.02 5:02pm
If anything I slightly increased the Sunsoft 5B chip's volume in 0.3.5, and that might cause your speakers to clip because those pops are absent in WAV exports afaik.
 
 
51236
Level 30 Chipist
Savestate
 
 
 
post #51236 :: 2015.01.02 6:18pm
  
  Zaalan3 liēkd this
Is it that click at around the 1 second mark? (and 2.5? and so on)
Cause if so I hear it too
 
 
51484
Level 25 Chipist
HertzDevil
 
 
 
post #51484 :: 2015.01.08 11:23am :: edit 2015.01.08 11:24am
  
  JINTAKE, goluigi, raphaelgoulart and mootbooxle liēkd this
Any multichip NSF
may be first recognized as a full chip NSF (so that all combinations can use the same NSF driver before I have time to embed cc65 into 0CC-FT), and then the bitmask in the NSF header representing the expansion chips used can be modified afterwards to yield a properly working multichip NSF. This is clearly the crudest way of achieving it, and leaves 102 free RAM bytes regardless of the chip combination, and also potentially leads to 100% CPU usage
.

I have decided to implement it nonetheless and make it available in the next version of 0CC-FT for debugging purposes.
 
 
51485
Level 27 Chipist
raphaelgoulart
 
 
 
post #51485 :: 2015.01.08 11:43am
  
  JINTAKE liēkd this
this will probably be a revolution in the NES chiptune scene
i'm really excited for the next version(s) of this
great job, hertzdevil.
 
 
51505
Level 25 Chipist
HertzDevil
 
 
 
post #51505 :: 2015.01.08 11:38pm
  
  Savestate, mega9man, raphaelgoulart, DalekSam and JINTAKE liēkd this
 
 
51515
Level 30 Chipist
Savestate
 
 
 
post #51515 :: 2015.01.09 9:55am
 
 
51516
Level 25 Chipist
HertzDevil
 
 
 
post #51516 :: 2015.01.09 9:59am
  
  raphaelgoulart liēkd this
Small reminder: this paste
is constantly updated to include features that are already planned for future versions of 0CC-FamiTracker. Consider yourself lucky if your suggestions at the 0CC-FT forum are seen on this paste.
 
 
51894
Level 25 Chipist
HertzDevil
 
 
 
post #51894 :: 2015.01.17 2:32pm
  
  raphaelgoulart liēkd this
0CC-FamiTracker 0.3.7 is out.


Hopefully the vanilla 0.4.5 shall be out before the next 0CC-FT release.
 
 

LOGIN or REGISTER to add your own comments!