tridoraemu: fix crash on invalid vmem addresses

This commit is contained in:
slederer 2024-09-13 01:26:45 +02:00
parent 01c5d412f6
commit 61699e420a

View file

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