diff --git a/_data/char/Trs001.nri b/_data/char/Trs001.nri new file mode 100644 index 0000000..f1cd24c Binary files /dev/null and b/_data/char/Trs001.nri differ diff --git a/_data/char/Trs002.nri b/_data/char/Trs002.nri new file mode 100644 index 0000000..cdba545 Binary files /dev/null and b/_data/char/Trs002.nri differ diff --git a/_data/char/chr001.nri b/_data/char/chr001.nri new file mode 100644 index 0000000..6e20fe2 Binary files /dev/null and b/_data/char/chr001.nri differ diff --git a/_data/char/chr003.nri b/_data/char/chr003.nri new file mode 100644 index 0000000..3202584 Binary files /dev/null and b/_data/char/chr003.nri differ diff --git a/_data/char/chr004.nri b/_data/char/chr004.nri new file mode 100644 index 0000000..fb887d3 Binary files /dev/null and b/_data/char/chr004.nri differ diff --git a/_data/char/chr005.nri b/_data/char/chr005.nri new file mode 100644 index 0000000..b52e90e Binary files /dev/null and b/_data/char/chr005.nri differ diff --git a/_data/char/chr006.nri b/_data/char/chr006.nri new file mode 100644 index 0000000..d77b53e Binary files /dev/null and b/_data/char/chr006.nri differ diff --git a/_data/char/chr007.nri b/_data/char/chr007.nri new file mode 100644 index 0000000..94544b9 Binary files /dev/null and b/_data/char/chr007.nri differ diff --git a/_data/char/chr008.nri b/_data/char/chr008.nri new file mode 100644 index 0000000..11d8961 Binary files /dev/null and b/_data/char/chr008.nri differ diff --git a/_data/char/chr009.nri b/_data/char/chr009.nri new file mode 100644 index 0000000..33b2ddf Binary files /dev/null and b/_data/char/chr009.nri differ diff --git a/_data/char/chr010.nri b/_data/char/chr010.nri new file mode 100644 index 0000000..8e41a4d Binary files /dev/null and b/_data/char/chr010.nri differ diff --git a/_data/char/chr011.nri b/_data/char/chr011.nri new file mode 100644 index 0000000..a5fa576 Binary files /dev/null and b/_data/char/chr011.nri differ diff --git a/_data/char/chr013.nri b/_data/char/chr013.nri new file mode 100644 index 0000000..8dd7ba1 Binary files /dev/null and b/_data/char/chr013.nri differ diff --git a/_data/char/chr014.nri b/_data/char/chr014.nri new file mode 100644 index 0000000..04cd831 Binary files /dev/null and b/_data/char/chr014.nri differ diff --git a/_data/char/chr015.nri b/_data/char/chr015.nri new file mode 100644 index 0000000..69c9e78 Binary files /dev/null and b/_data/char/chr015.nri differ diff --git a/_data/char/chr016.nri b/_data/char/chr016.nri new file mode 100644 index 0000000..2dedaf4 Binary files /dev/null and b/_data/char/chr016.nri differ diff --git a/_data/char/chr017.nri b/_data/char/chr017.nri new file mode 100644 index 0000000..da96236 Binary files /dev/null and b/_data/char/chr017.nri differ diff --git a/_data/char/chr018.nri b/_data/char/chr018.nri new file mode 100644 index 0000000..6f9e6eb Binary files /dev/null and b/_data/char/chr018.nri differ diff --git a/_data/char/chr019.nri b/_data/char/chr019.nri new file mode 100644 index 0000000..d21d6c3 Binary files /dev/null and b/_data/char/chr019.nri differ diff --git a/_data/char/chr020.nri b/_data/char/chr020.nri new file mode 100644 index 0000000..538bcc4 Binary files /dev/null and b/_data/char/chr020.nri differ diff --git a/_data/char/chr021.nri b/_data/char/chr021.nri new file mode 100644 index 0000000..4816ac0 Binary files /dev/null and b/_data/char/chr021.nri differ diff --git a/_data/char/chr022.nri b/_data/char/chr022.nri new file mode 100644 index 0000000..6b08674 Binary files /dev/null and b/_data/char/chr022.nri differ diff --git a/_data/char/chr023.nri b/_data/char/chr023.nri new file mode 100644 index 0000000..3818f2e Binary files /dev/null and b/_data/char/chr023.nri differ diff --git a/_data/char/chr024.nri b/_data/char/chr024.nri new file mode 100644 index 0000000..0b3ffad Binary files /dev/null and b/_data/char/chr024.nri differ diff --git a/_data/char/chr025.nri b/_data/char/chr025.nri new file mode 100644 index 0000000..499798c Binary files /dev/null and b/_data/char/chr025.nri differ diff --git a/_data/char/chr026.nri b/_data/char/chr026.nri new file mode 100644 index 0000000..ff88480 Binary files /dev/null and b/_data/char/chr026.nri differ diff --git a/_data/char/chr027.nri b/_data/char/chr027.nri new file mode 100644 index 0000000..c629adb Binary files /dev/null and b/_data/char/chr027.nri differ diff --git a/_data/char/chr100.nri b/_data/char/chr100.nri new file mode 100644 index 0000000..a47613a Binary files /dev/null and b/_data/char/chr100.nri differ diff --git a/_data/char/chr101.nri b/_data/char/chr101.nri new file mode 100644 index 0000000..38dadff Binary files /dev/null and b/_data/char/chr101.nri differ diff --git a/palette.go b/palette.go index 83fc8c6..1a837c8 100644 --- a/palette.go +++ b/palette.go @@ -5,15 +5,16 @@ import ( "fmt" "image/color" "io" + "log" ) type PaletteSection struct { - Version uint32 - Params [4]uint32 - Divided bool - DataLength uint32 - Palette [256]color.Color - MainBound [2]uint32 + Version uint32 + Params [4]uint32 + OpaqueIndexCount uint32 + DataLength uint32 + Palette [256]*color.RGBA + MainBounds [2]uint32 lastSignature [4]byte } @@ -25,18 +26,16 @@ func (p *PaletteSection) Decode(rd io.Reader) error { if sig, target := string(p.lastSignature[:]), "PAL_"; sig != target { return fmt.Errorf("bad sig: want %s, got %s", target, sig) } - p.Palette = [256]color.Color{} + p.Palette = [256]*color.RGBA{} if err := binary.Read(rd, end, &p.Version); err != nil { return err } if err := binary.Read(rd, end, p.Params[:]); err != nil { return err } - var cast uint32 - if err := binary.Read(rd, end, &cast); err != nil { + if err := binary.Read(rd, end, &p.OpaqueIndexCount); err != nil { return err } - p.Divided = (cast > 0) if err := binary.Read(rd, end, &p.DataLength); err != nil { return err } @@ -58,10 +57,30 @@ func (p *PaletteSection) Decode(rd io.Reader) error { alpha, } } - if p.Divided { - if err := binary.Read(rd, end, p.MainBound[:]); err != nil { + + for i := uint32(0); i < p.OpaqueIndexCount; i++ { + var first uint32 + if err := binary.Read(rd, end, &first); err != nil { return err } + + var last uint32 + if err := binary.Read(rd, end, &last); err != nil { + return err + } + log.Println("oic", p.OpaqueIndexCount, i, first, last) + // TODO: figure out what setBoard actually does + //p.setBoard(first, last, 255) } return nil } + +func (p *PaletteSection) setBoard(start uint32, end uint32, alpha int32) { + if !(start >= 0 && end >= 0 && start < 256 && end < 256) { + return + } + + for i := start; i <= end; i++ { + p.Palette[i].A = uint8(alpha) + } +}