Subversion Repositories Games.Carmageddon

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
20 pmbaty 1
#include "scratch.h"
2
#include "diag.h"
3
#include "fwsetup.h"
4
#include "harness/trace.h"
5
#include "resource.h"
6
 
7
char scratchString[512] = "SCRATCH";
8
 
9
// IDA: void* __cdecl BrScratchAllocate(br_size_t size)
10
void* BrScratchAllocate(br_size_t size) {
11
    LOG_TRACE("(%d)", size);
12
 
13
    if (fw.scratch_inuse != 0) {
14
        BrFailure("Scratchpad not available");
15
    }
16
 
17
    fw.scratch_last = size;
18
 
19
    if (size > fw.scratch_size) {
20
        if (fw.scratch_ptr != NULL) {
21
            BrResFree(fw.scratch_ptr);
22
        }
23
        fw.scratch_ptr = BrResAllocate(fw.res, size, BR_MEMORY_SCRATCH);
24
        fw.scratch_size = size;
25
    }
26
    fw.scratch_inuse = 1;
27
    return fw.scratch_ptr;
28
}
29
 
30
// IDA: void __cdecl BrScratchFree(void *scratch)
31
void BrScratchFree(void* scratch) {
32
    LOG_TRACE("(%p)", scratch);
33
 
34
    fw.scratch_inuse = 0;
35
}
36
 
37
// IDA: void __cdecl BrScratchFlush()
38
void BrScratchFlush(void) {
39
    LOG_TRACE("()");
40
 
41
    if (fw.scratch_inuse != 0) {
42
        BrFailure("Scratchpad cannot be flushed while in use");
43
    }
44
    if (fw.scratch_ptr != NULL) {
45
        BrResFree(fw.scratch_ptr);
46
    }
47
    fw.scratch_ptr = NULL;
48
    fw.scratch_size = 0;
49
}
50
 
51
// IDA: br_size_t __cdecl BrScratchInquire()
52
br_size_t BrScratchInquire(void) {
53
    LOG_TRACE("()");
54
 
55
    return fw.scratch_size;
56
}
57
 
58
// IDA: char* __cdecl BrScratchString()
59
char* BrScratchString(void) {
60
    LOG_TRACE9("()");
61
 
62
    return scratchString;
63
}
64
 
65
// IDA: br_size_t __cdecl BrScratchStringSize()
66
br_size_t BrScratchStringSize(void) {
67
    LOG_TRACE9("()");
68
 
69
    return sizeof(scratchString);
70
}