Mercurial > repos > blastem
changeset 608:097c172839d4
Don't use out of bounds displacements in indexed mode even if our targeted address is out of RAM range
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 27 Dec 2014 14:50:28 -0800 |
parents | f838bc0aeb7c |
children | 66b730a8ae51 |
files | gentests.py |
diffstat | 1 files changed, 8 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/gentests.py Fri Dec 26 21:26:25 2014 -0800 +++ b/gentests.py Sat Dec 27 14:50:28 2014 -0800 @@ -178,9 +178,17 @@ self.disp -= (address & 0xFFFFFF) else: self.disp += 0xE00000-(address & 0xFFFFFF) + if self.disp > 127: + self.disp = 127 + elif self.disp < -128: + self.disp = -128 address = base + index + self.disp elif (address & 0xFFFFFF) > 0xFFFFFC: self.disp -= (address & 0xFFFFFF) - 0xFFFFFC + if self.disp > 127: + self.disp = 127 + elif self.disp < -128: + self.disp = -128 address = base + index + self.disp if size != 'b' and address & 1: self.disp = self.disp ^ 1