aboutsummaryrefslogtreecommitdiff
path: root/engines/lab/labfile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/lab/labfile.cpp')
-rw-r--r--engines/lab/labfile.cpp65
1 files changed, 18 insertions, 47 deletions
diff --git a/engines/lab/labfile.cpp b/engines/lab/labfile.cpp
index 3a34f80b43..4fee3ba93e 100644
--- a/engines/lab/labfile.cpp
+++ b/engines/lab/labfile.cpp
@@ -69,38 +69,6 @@ static void freeFile(uint16 RMarker) {
FileMarkers[RMarker].End = NULL;
}
-
-
-
-
-/*****************************************************************************/
-/* Gets a chunk of memory from the buffer. */
-/*****************************************************************************/
-static void *getCurMemLabFile(uint32 size) {
- void *ptr = 0;
-
- if ((((char *) _memPlace) + size - 1) >=
- (((char *) buffer) + buffersize))
- _memPlace = buffer;
-
- ptr = _memPlace;
- _memPlace = (char *)_memPlace + size;
-
- for (int i = 0; i < MAXMARKERS; i++) {
- if (FileMarkers[i].name[0]) {
- if ( ((FileMarkers[i].Start >= ptr) && (FileMarkers[i].Start < _memPlace))
- || ((FileMarkers[i].End >= ptr) && (FileMarkers[i].End < _memPlace))
- || ((ptr >= FileMarkers[i].Start) && (ptr <= FileMarkers[i].End)))
- freeFile(i);
- }
- }
-
- return ptr;
-}
-
-
-
-
/*****************************************************************************/
/* Checks if a file is already buffered. */
/*****************************************************************************/
@@ -118,9 +86,6 @@ byte **isBuffered(const char *fileName) {
return NULL;
}
-
-
-
/*****************************************************************************/
/* Grabs a chunk of memory from the room buffer, and manages it for a */
/* particular room. If it returns true, then the file is already in memory. */
@@ -148,16 +113,29 @@ bool allocFile(void **Ptr, uint32 Size, const char *fileName) {
freeFile(RMarker);
strcpy(FileMarkers[RMarker].name, fileName);
- *Ptr = getCurMemLabFile(Size);
- FileMarkers[RMarker].Start = *Ptr;
- FileMarkers[RMarker].End = (void *)(((char *)(*Ptr)) + Size - 1);
+ *Ptr = 0;
- return false;
-}
+ if ((((char *)_memPlace) + Size - 1) >=
+ (((char *)buffer) + buffersize))
+ _memPlace = buffer;
+ *Ptr = _memPlace;
+ _memPlace = (char *)_memPlace + Size;
+ for (int i = 0; i < MAXMARKERS; i++) {
+ if (FileMarkers[i].name[0]) {
+ if (((FileMarkers[i].Start >= Ptr) && (FileMarkers[i].Start < _memPlace))
+ || ((FileMarkers[i].End >= Ptr) && (FileMarkers[i].End < _memPlace))
+ || ((Ptr >= FileMarkers[i].Start) && (Ptr <= FileMarkers[i].End)))
+ freeFile(i);
+ }
+ }
+ FileMarkers[RMarker].Start = *Ptr;
+ FileMarkers[RMarker].End = (void *)(((char *)(*Ptr)) + Size - 1);
+ return false;
+}
/*----- Main routines -----*/
@@ -215,7 +193,6 @@ void resetBuffer() {
}
-
/*****************************************************************************/
/* Initializes the buffer. */
/*****************************************************************************/
@@ -231,9 +208,6 @@ bool initBuffer(uint32 BufSize, bool IsGraphicsMem) {
return (buffer != NULL);
}
-
-
-
/*****************************************************************************/
/* Frees the buffer. */
/*****************************************************************************/
@@ -244,9 +218,6 @@ void freeBuffer() {
free(buffer);
}
-
-
-
/*------------------------------------------------------------------------*/
/* The following routines allow stealing of memory from the buffer (which */
/* later may or may not be given back). */