diff --git a/tridoraemu/framebuffer.go b/tridoraemu/framebuffer.go index a3a92ab..4586287 100644 --- a/tridoraemu/framebuffer.go +++ b/tridoraemu/framebuffer.go @@ -75,16 +75,17 @@ func (f *Framebuffer) write(value word, byteaddr word) (error) { } func (f *Framebuffer) readVmem() word { - result := f.vmem[f.readAddr] + result := f.vmem[f.readAddr & (VmemWords - 1)] f.readAddr += 1 return result } func (f *Framebuffer) writeVmem(value word) { - f.vmem[f.writeAddr] = value + vaddr := f.writeAddr & (VmemWords - 1) + f.vmem[vaddr] = value - y := f.writeAddr / WordsPerLine - x := f.writeAddr % WordsPerLine * PixelPerWord + y := vaddr / WordsPerLine + x := vaddr % WordsPerLine * PixelPerWord for i := 0; i < PixelPerWord; i++ { pixel := (value & PixelMask) >> (VmemWidth - BitsPerPixel)