diff --git a/!TheEsc/!RunImage,ff8 b/!TheEsc/!RunImage,ff8 index d241a35..aa988ab 100644 Binary files a/!TheEsc/!RunImage,ff8 and b/!TheEsc/!RunImage,ff8 differ diff --git a/!TheEsc/c/Graphics b/!TheEsc/c/Graphics index 948bc64..413035b 100644 --- a/!TheEsc/c/Graphics +++ b/!TheEsc/c/Graphics @@ -12,6 +12,7 @@ extern unsigned char *tilebuffer; int screen = 1; +extern void screen_nobuffer(); // Loads sprite file into buffer void load_sprites(char* filename, unsigned char **buffername) { @@ -34,7 +35,8 @@ void load_sprites(char* filename, unsigned char **buffername) // Stops us trying to mallocsomething mad if file is too big. if(length > 200000) - { + { + screen_nobuffer(); printf("Sprite file %s seems unreasonably large at %i bytes",filename, length); exit(0); } @@ -44,6 +46,7 @@ void load_sprites(char* filename, unsigned char **buffername) if(buffername==NULL) { + screen_nobuffer(); printf("Couldn't malloc %i bytes for sprite buffer",length); exit(0); } @@ -85,6 +88,7 @@ void display_mode(int mode) inreg.r[1] = (pitch * height * 2) - outreg.r[1]; if (_kernel_swi(OS_ChangeDynamicArea, &inreg, &outreg) != NULL) { + screen_nobuffer(); printf("Couldn't OS_ChangeDynamicArea"); exit(0); } diff --git a/!TheEsc/c/Mission2 b/!TheEsc/c/Mission2 index a944958..a729141 100644 --- a/!TheEsc/c/Mission2 +++ b/!TheEsc/c/Mission2 @@ -46,6 +46,13 @@ void game2_loadmap(char* filename) // Length will be in R4 if it exists length = outreg.r[4]; + if(length > sizeof(map[0])) + { + screen_nobuffer(); + printf("Map exceeds %d bytes (%d bytes)",sizeof(map[0]),length); + exit(0); + } + // Attempt to get file info inreg.r[0] = 16; inreg.r[1] = (int) filename;