diff --git a/CHANGES.md b/CHANGES.md index 4bb2ae3..370e82c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,8 +2,9 @@ ### Version 0.2.2 +- Overloaded `NE0` / `NE1` for noise reset enable effect - Added SN76489 stereo separation to mixer menu -- Added `NE0` / `NE1` noise reset enable effect +- Re-added file association - SN76489 VGM logger now eliminates extra register writes that have no side effects - Extended VGM header size so that it will not be misinterpreted by certain players - Fixed text export and import (for SN7T only) @@ -12,7 +13,7 @@ ### Version 0.2.1 -- Overloaded `Nxx` for Game Gear stereo control +- Overloaded `N00` - `N1F` for Game Gear stereo control - Channels no longer reduce to zero volume when the mixed volume is less than 0 (to match 0CC-FT's 5B behaviour) - Fixed arpeggio on noise channel now maps 0 to `L-#` and 2 to `H-#` **(backward-incompatible change, modify your modules accordingly)** - Fixed VGM logs putting 0 in the sample count fields diff --git a/NOTES.md b/NOTES.md index 8aa942a..1461f10 100644 --- a/NOTES.md +++ b/NOTES.md @@ -4,13 +4,23 @@ ## Sound Chips -#### Texas Instruments SN76489 (PSG) +#### Texas Instruments SN76489 -_(TODO)_ +- Square channel, 4-bit volume, 10-bit pitch (x3) +- Noise channel, 4-bit volume, 3 pitches or pitch follows channel 3, long/short periodic noise with phase reset (x1) + +###### Variants + +- _(TODO)_ + +#### Game Gear (PSG) + +- Same as SN76489, except all channels have L/R hardpanning #### T6W28 (NGP) -_(TODO)_ +- Square channel, 4-bit L/R volume, 10-bit pitch (x3) +- Noise channel, 4-bit L/R volume, 10-bit pitch, long/short periodic noise with phase reset (x1) #### Yamaha YM2413 (OPLL) @@ -56,6 +66,10 @@ _(TODO)_ Under the **Tracker** menu is a new option called "Log VGM File...". Select it to save a VGM file, then play any song to start logging all audio events, and stop the player to finish logging. +#### Stereo Separation + +The mixer menu can now configure the volume of each SN76489 output channel, as well as the stereo separation between them; 0% is effectively the same as mono audio, 100% is the default separation. + ## Compatibility SnevenTracker modules (`.snm` files) share the same format with `.ftm` and `.0cc` files but are incompatible with them. Copying and pasting of frames and patterns still works across these trackers. diff --git a/README.md b/README.md index e904379..afe1478 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,6 @@ # SnevenTracker -SnevenTracker (SN76489 Tracker) is a fork of FamiTracker version 0.4.6 that -emulates the Texas Instruments SN76489 sound chip, which is used in a wide -variety of computers and gaming consoles. The project's ultimate aim is to -implement multiple sound chips in a more modular manner than 0.4.6, in order to -provide insight into eventually supporting them in -[0CC-FamiTracker](https://github.com/HertzDevil/0CC-FamiTracker). +SnevenTracker (SN76489 Tracker) is a fork of FamiTracker version 0.4.6 that emulates the Texas Instruments SN76489 sound chip, which is used in a wide variety of computers and gaming consoles. The project's ultimate aim is to support multiple sound chips in a more modular manner than 0.4.6, and then forward-port these changes to [0CC-FamiTracker](https://github.com/HertzDevil/0CC-FamiTracker). As in 0CC-FT, all changes to the source code are marked with `// // //`. @@ -14,5 +9,5 @@ See `NOTES.md` for a brief overview of the stuffs actually added. ### To-do - Should support multiple master clock rates and both versions of the LFSR -- Should support two instances of the SN76489, plus an extra sound chip +- Should support all sound chips as described in the notes - KSS export is planned, but low priority diff --git a/Source/FamiTracker.cpp b/Source/FamiTracker.cpp index f0bef4a..e40d2be 100644 --- a/Source/FamiTracker.cpp +++ b/Source/FamiTracker.cpp @@ -203,7 +203,7 @@ BOOL CFamiTrackerApp::InitInstance() // Skip this if in wip/beta mode #if /*!defined(WIP) &&*/ !defined(_DEBUG) // Add shell options - // // // RegisterShellFileTypes(TRUE); + RegisterShellFileTypes(TRUE); // Add an option to play files CString strPathName, strTemp, strFileTypeId; AfxGetModuleShortFileName(AfxGetInstanceHandle(), strPathName);