Adding modding folder with a hacked build.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package compression
|
||||
|
||||
import "github.com/inkyblackness/hacked/ss1/serial"
|
||||
|
||||
// WordReader provides word instances from a serialized stream.
|
||||
type WordReader struct {
|
||||
coder serial.Coder
|
||||
|
||||
buffer byte
|
||||
bufferBitsAvailable uint
|
||||
}
|
||||
|
||||
// NewWordReader returns a new instance.
|
||||
func NewWordReader(coder serial.Coder) *WordReader {
|
||||
reader := &WordReader{coder: coder, buffer: 0x00, bufferBitsAvailable: 0}
|
||||
|
||||
return reader
|
||||
}
|
||||
|
||||
// Read returns the next word from the stream.
|
||||
func (reader *WordReader) Read() (value Word) {
|
||||
remaining := bitsPerWord
|
||||
|
||||
for remaining > reader.bufferBitsAvailable {
|
||||
value = Word((uint(value) << reader.bufferBitsAvailable) | uint(reader.buffer))
|
||||
remaining -= reader.bufferBitsAvailable
|
||||
|
||||
reader.bufferByte()
|
||||
}
|
||||
|
||||
value = Word((uint(value) << remaining) | uint(reader.buffer)>>(8-remaining))
|
||||
reader.buffer &= 1<<(8-remaining) - 1
|
||||
reader.bufferBitsAvailable -= remaining
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (reader *WordReader) bufferByte() {
|
||||
reader.coder.Code(&reader.buffer)
|
||||
reader.bufferBitsAvailable = 8
|
||||
}
|
||||
Reference in New Issue
Block a user