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 {
|
||||
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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue