Stop the crashes at least.

This commit is contained in:
sigonasr2 2024-07-01 17:34:48 -05:00
parent 15e8df7c01
commit 6db778d6a8
2 changed files with 15 additions and 10 deletions

View File

@ -60,17 +60,17 @@ struct Rom{
int32_t bpos2{};
while(data[pos]!=0xFF){
if(pos>=data.length())throw std::runtime_error{"Unexpected end of data."};
char commandType{data[pos]>>5};
char length{(data[pos]&0x1F)+1};
int commandType{data[pos]>>5};
int length{(data[pos]&0x1F)+1};
if(commandType==7){
commandType=(data[pos]&0x1C)>>2;
length=((data[pos]&3)<<8)+(data[pos+1])+1;
length=((int(data[pos])&3)<<8)+int(data[pos+1])+1;
++pos;
}
if(bpos+length<0)throw std::runtime_error("Length ended up negative.");
pos++;
if(commandType>=4){
bpos2=(data[pos]<<8)+data[pos+1];
bpos2=(int(data[pos])<<8)+int(data[pos+1]);
if(bpos2<0)throw std::runtime_error("Reading negative data.");
pos+=2;
}
@ -127,17 +127,17 @@ struct Rom{
int read{};
while(data[pos]!=0xFF){
if (pos >= data.length())return;
char commandType{data[pos]>>5};
char len{data[pos]&0x1F+1};
int commandType{data[pos]>>5};
int len{data[pos]&0x1F+1};
if(commandType==7){
commandType=(data[pos]&0x1C)>>2;
len=((data[pos]&3)<<8)+data[pos+1]+1;
commandType=(int(data[pos])&0x1C)>>2;
len=((int(data[pos])&3)<<8)+int(data[pos+1])+1;
++pos;
}
if(bpos+len>maxLength||bpos+len<0)return;
++pos;
if(commandType>=4) {
bpos2=(data[pos]<<8)+data[pos+1];
bpos2=(int(data[pos])<<8)+data[pos+1];
if(bpos2>=maxLength||bpos2<0)return;
pos+=2;
}
@ -336,11 +336,16 @@ public:
}
}
void GraphicsDisplayTest(){
}
int yOffset{0};
bool OnUserUpdate(float fElapsedTime) override
{
PaletteDisplayTest();
//PaletteDisplayTest();
GraphicsDisplayTest();
return true;
}
};