tridoraemu: fix crash on invalid vmem addresses
This commit is contained in:
parent
01c5d412f6
commit
61699e420a
1 changed files with 5 additions and 4 deletions
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue