mirror of
https://github.com/stevenhowes/CTheEscape.git
synced 2026-05-26 15:53:29 +01:00
Safer file loading, better showing of fatal errors (drop out of double buffering)
This commit is contained in:
Binary file not shown.
+5
-1
@@ -12,6 +12,7 @@ extern unsigned char *tilebuffer;
|
|||||||
|
|
||||||
int screen = 1;
|
int screen = 1;
|
||||||
|
|
||||||
|
extern void screen_nobuffer();
|
||||||
// Loads sprite file into buffer
|
// Loads sprite file into buffer
|
||||||
void load_sprites(char* filename, unsigned char **buffername)
|
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.
|
// Stops us trying to mallocsomething mad if file is too big.
|
||||||
if(length > 200000)
|
if(length > 200000)
|
||||||
{
|
{
|
||||||
|
screen_nobuffer();
|
||||||
printf("Sprite file %s seems unreasonably large at %i bytes",filename, length);
|
printf("Sprite file %s seems unreasonably large at %i bytes",filename, length);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
@@ -44,6 +46,7 @@ void load_sprites(char* filename, unsigned char **buffername)
|
|||||||
|
|
||||||
if(buffername==NULL)
|
if(buffername==NULL)
|
||||||
{
|
{
|
||||||
|
screen_nobuffer();
|
||||||
printf("Couldn't malloc %i bytes for sprite buffer",length);
|
printf("Couldn't malloc %i bytes for sprite buffer",length);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
@@ -85,6 +88,7 @@ void display_mode(int mode)
|
|||||||
inreg.r[1] = (pitch * height * 2) - outreg.r[1];
|
inreg.r[1] = (pitch * height * 2) - outreg.r[1];
|
||||||
if (_kernel_swi(OS_ChangeDynamicArea, &inreg, &outreg) != NULL)
|
if (_kernel_swi(OS_ChangeDynamicArea, &inreg, &outreg) != NULL)
|
||||||
{
|
{
|
||||||
|
screen_nobuffer();
|
||||||
printf("Couldn't OS_ChangeDynamicArea");
|
printf("Couldn't OS_ChangeDynamicArea");
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,6 +46,13 @@ void game2_loadmap(char* filename)
|
|||||||
// Length will be in R4 if it exists
|
// Length will be in R4 if it exists
|
||||||
length = outreg.r[4];
|
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
|
// Attempt to get file info
|
||||||
inreg.r[0] = 16;
|
inreg.r[0] = 16;
|
||||||
inreg.r[1] = (int) filename;
|
inreg.r[1] = (int) filename;
|
||||||
|
|||||||
Reference in New Issue
Block a user