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 {
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)