├── .gitignore
├── common
├── common.props
├── SSEQ.h
├── NDSStdHeader.h
├── SWAV.h
├── FATSection.h
├── SWAR.h
├── windowsh_wrapper.h
├── TagList.h
├── SYMBSection.h
├── NCSF.h
├── SSEQ.cpp
├── INFOSection.h
├── eqstr.h
├── ltstr.h
├── NDSStdHeader.cpp
├── SBNK.h
├── FATSection.cpp
├── SDAT.h
├── TagList.cpp
├── TimerPlayer.h
├── INFOEntry.h
├── TimerTrack.h
├── SWAR.cpp
├── SWAV.cpp
├── common.vcxproj.filters
├── INFOSection.cpp
├── SYMBSection.cpp
├── TimerChannel.h
├── common.vcxproj
├── INFOEntry.cpp
├── SBNK.cpp
├── TimerPlayer.cpp
├── NCSF.cpp
├── common.h
└── win_dirent.h
├── NDStoNCSF
├── NDStoNCSF.vcxproj.filters
└── NDStoNCSF.vcxproj
├── SDATStrip
├── SDATStrip.vcxproj.filters
├── SDATStrip.vcxproj
└── SDATStrip.cpp
├── SDATtoNCSF
├── SDATtoNCSF.vcxproj.filters
├── SDATtoNCSF.vcxproj
└── SDATtoNCSF.cpp
├── 2SFTagsToNCSF
├── 2SFTagsToNCSF.vcxproj.filters
├── 2SFTagsToNCSF.vcxproj
└── 2SFTagsToNCSF.cpp
├── 2SFtoNCSF
├── 2SFtoNCSF.vcxproj.filters
├── 2SFtoNCSF.vcxproj
└── 2SFtoNCSF.cpp
├── SDATStuff.sln
├── GNUmakefile
└── README.txt
/.gitignore:
--------------------------------------------------------------------------------
1 | Debug
2 | Release
3 | *.suo
4 | *.user
--------------------------------------------------------------------------------
/common/common.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ZLIBFIXME
6 |
7 |
8 |
9 |
10 |
11 | $(zlibRootDir)
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/common/SSEQ.h:
--------------------------------------------------------------------------------
1 | /*
2 | * SDAT - SSEQ (Sequence) structure
3 | * By Naram Qashat (CyberBotX) [cyberbotx@cyberbotx.com]
4 | * Last modification on 2014-12-08
5 | *
6 | * Nintendo DS Nitro Composer (SDAT) Specification document found at
7 | * http://www.feshrine.net/hacking/doc/nds-sdat.html
8 | */
9 |
10 | #pragma once
11 |
12 | #include "INFOEntry.h"
13 | #include "common.h"
14 |
15 | struct SSEQ
16 | {
17 | std::string filename, origFilename;
18 | std::vector data;
19 |
20 | int32_t entryNumber;
21 |
22 | SSEQ(const std::string &fn = "", const std::string &origFn = "");
23 |
24 | void Read(PseudoReadFile &file);
25 | };
26 |
--------------------------------------------------------------------------------
/common/NDSStdHeader.h:
--------------------------------------------------------------------------------
1 | /*
2 | * SDAT - Nintendo DS Standard Header structure
3 | * By Naram Qashat (CyberBotX) [cyberbotx@cyberbotx.com]
4 | * Last modification on 2014-10-15
5 | *
6 | * Nintendo DS Nitro Composer (SDAT) Specification document found at
7 | * http://www.feshrine.net/hacking/doc/nds-sdat.html
8 | */
9 |
10 | #pragma once
11 |
12 | #include "common.h"
13 |
14 | struct NDSStdHeader
15 | {
16 | int8_t type[4];
17 | uint32_t magic;
18 | uint32_t fileSize;
19 | uint16_t size;
20 | uint16_t blocks;
21 |
22 | NDSStdHeader();
23 |
24 | void Read(PseudoReadFile &file);
25 | void Verify(const std::string &typeToCheck, uint32_t magicToCheck) const;
26 | void Write(PseudoWrite &file) const;
27 | };
28 |
--------------------------------------------------------------------------------
/NDStoNCSF/NDStoNCSF.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 |
14 |
15 | Source Files
16 |
17 |
18 |
--------------------------------------------------------------------------------
/SDATStrip/SDATStrip.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 |
14 |
15 | Source Files
16 |
17 |
18 |
--------------------------------------------------------------------------------
/SDATtoNCSF/SDATtoNCSF.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 |
14 |
15 | Source Files
16 |
17 |
18 |
--------------------------------------------------------------------------------
/2SFTagsToNCSF/2SFTagsToNCSF.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 |
14 |
15 | Source Files
16 |
17 |
18 |
--------------------------------------------------------------------------------
/common/SWAV.h:
--------------------------------------------------------------------------------
1 | /*
2 | * SDAT - SWAV (Waveform/Sample) structure
3 | * By Naram Qashat (CyberBotX)
4 | * Last modification on 2014-12-08
5 | *
6 | * Nintendo DS Nitro Composer (SDAT) Specification document found at
7 | * http://www.feshrine.net/hacking/doc/nds-sdat.html
8 | */
9 |
10 | #pragma once
11 |
12 | #include "common.h"
13 |
14 | struct SWAV
15 | {
16 | uint8_t waveType;
17 | uint8_t loop;
18 | uint16_t sampleRate;
19 | uint16_t time;
20 | uint16_t origLoopOffset;
21 | uint32_t loopOffset;
22 | uint32_t origNonLoopLength;
23 | uint32_t nonLoopLength;
24 | std::vector origData;
25 | std::vector data;
26 |
27 | SWAV();
28 |
29 | void Read(PseudoReadFile &file);
30 | void DecodeADPCM(uint32_t len);
31 | uint32_t Size() const;
32 | void Write(PseudoWrite &file) const;
33 | };
34 |
--------------------------------------------------------------------------------
/common/FATSection.h:
--------------------------------------------------------------------------------
1 | /*
2 | * SDAT - FAT (File Allocation Table) Section structures
3 | * By Naram Qashat (CyberBotX) [cyberbotx@cyberbotx.com]
4 | * Last modification on 2014-10-15
5 | *
6 | * Nintendo DS Nitro Composer (SDAT) Specification document found at
7 | * http://www.feshrine.net/hacking/doc/nds-sdat.html
8 | */
9 |
10 | #pragma once
11 |
12 | #include "common.h"
13 |
14 | struct FATRecord
15 | {
16 | uint32_t offset;
17 | uint32_t size;
18 |
19 | FATRecord();
20 |
21 | void Read(PseudoReadFile &file);
22 | void Write(PseudoWrite &file) const;
23 | };
24 |
25 | struct FATSection
26 | {
27 | int8_t type[4];
28 | uint32_t size;
29 | uint32_t count;
30 | std::vector records;
31 |
32 | FATSection();
33 |
34 | void Read(PseudoReadFile &file);
35 | uint32_t Size() const;
36 | void Write(PseudoWrite &file) const;
37 | };
38 |
--------------------------------------------------------------------------------
/common/SWAR.h:
--------------------------------------------------------------------------------
1 | /*
2 | * SDAT - SWAR (Wave Archive) structures
3 | * By Naram Qashat (CyberBotX)
4 | * Last modification on 2014-12-08
5 | *
6 | * Nintendo DS Nitro Composer (SDAT) Specification document found at
7 | * http://www.feshrine.net/hacking/doc/nds-sdat.html
8 | */
9 |
10 | #pragma once
11 |
12 | #include