Adding modding folder with a hacked build.
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
package voc
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/binary"
|
||||
"io"
|
||||
)
|
||||
|
||||
// Save encodes the provided samples into the given writer.
|
||||
func Save(writer io.Writer, sampleRate float32, samples []byte) error {
|
||||
err := writeHeader(writer)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = writeBasicSoundData(writer, sampleRate, samples)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = writeEndOfFile(writer)
|
||||
return err
|
||||
}
|
||||
|
||||
func writeHeader(writer io.Writer) error {
|
||||
version := baseVersion
|
||||
|
||||
_, err := writer.Write(bytes.NewBufferString(FileHeader).Bytes())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = binary.Write(writer, binary.LittleEndian, standardHeaderSize)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = binary.Write(writer, binary.LittleEndian, baseVersion)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return binary.Write(writer, binary.LittleEndian, (^version)+versionCheckValue)
|
||||
}
|
||||
|
||||
func writeBlockHeader(writer io.Writer, block blockType, dataBytes int) error {
|
||||
_, err := writer.Write([]byte{byte(block), byte(dataBytes), byte(dataBytes >> 8), byte(dataBytes >> 16)})
|
||||
return err
|
||||
}
|
||||
|
||||
func writeBasicSoundData(writer io.Writer, sampleRate float32, samples []byte) error {
|
||||
sampleType := byte(0)
|
||||
|
||||
err := writeBlockHeader(writer, soundData, len(samples)+2)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = writer.Write([]byte{sampleRateToDivisor(sampleRate), sampleType})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = writer.Write(samples)
|
||||
return err
|
||||
}
|
||||
|
||||
func writeEndOfFile(writer io.Writer) error {
|
||||
_, err := writer.Write([]byte{byte(terminator)})
|
||||
return err
|
||||
}
|
||||
Reference in New Issue
Block a user