/bs/codec_manager.go
package bs
import (
"bytex64.net/code/bitsmash/packet"
"bytex64.net/code/bitsmash/ac"
)
func (self *BitSmash) codecManagerInit(c ac.CodecManager) {
pm := self.paletteMap
var colorBiases [17]uint32
for i := 0; i < 17; i++ {
colorBiases[i] = uint32(pm & 1)
pm >>= 1
}
c.AddModel(packet.CONTEXT_PACKET_TYPE, ac.NewModelOrder0(4))
c.AddModel(packet.CONTEXT_COLOR, ac.NewModelOrder0PreBias(17, colorBiases[:]))
c.AddModel(packet.CONTEXT_PATTERN_NUMBER, ac.NewModelOrder0PreBias(16, packet.ContextBias(packet.CONTEXT_PATTERN_NUMBER)))
c.AddModel(packet.CONTEXT_PATTERN_REPEAT, ac.NewModelOrder0PreBias(8, packet.ContextBias(packet.CONTEXT_PATTERN_REPEAT)))
c.AddModel(packet.CONTEXT_RLE_REPEAT, ac.NewModelOrder0(16))
c.AddModel(packet.CONTEXT_REPEAT_DISTANCE, ac.NewModelOrder0PreBias(32, packet.ContextBias(packet.CONTEXT_REPEAT_DISTANCE)))
c.AddModel(packet.CONTEXT_REPEAT_LENGTH, ac.NewModelOrder0PreBias(8, packet.ContextBias(packet.CONTEXT_REPEAT_LENGTH)))
}