Wing Commander II
Reconstructed Win32 source (1996)
Toggle main menu visibility
Loading...
Searching...
No Matches
memfree.c
Go to the documentation of this file.
1
/*
2
* Available main memory.
3
*
4
* Retail object 0x469AD0-0x469BDF (link order; see docs/ORDER.md).
5
*/
6
#define MEMFREE_C
7
#include "
game.h
"
8
#include <malloc.h>
9
10
/* Function start: 0x469AD0 */
11
/* Reports a fixed 8 MB; the DOS near-heap free-space sum follows the early
12
* return. */
13
unsigned
int
GetAvailableMainMemory
(
void
)
14
{
15
NearHeapBlock
*descriptor;
16
int
descriptorAddress;
17
int
totalFree;
18
19
return
0x7c0600;
20
totalFree = 0;
21
descriptorAddress =
22
g_nNearArenaSize
+
g_1_nNearHeapBase
- 8;
23
while
(descriptorAddress >=
g_nNearHeapFirstDescriptor
) {
24
descriptor =
DosNearPtrToFar
(descriptorAddress);
25
if
((descriptor->
sizeAndFlags
& 0x80000000) == 0)
26
totalFree += (int)(descriptor->
sizeAndFlags
& 0xfffff);
27
descriptorAddress -= 8;
28
}
29
return
totalFree;
30
}
31
32
/* Function start: 0x469B49 */
33
/* Reports a fixed 8 MB; the DOS near-heap largest-block search follows the
34
* early return. */
35
unsigned
int
GetLargestMainMemoryBlock
(
void
)
36
{
37
NearHeapBlock
*descriptor;
38
int
descriptorAddress;
39
int
largest;
40
41
return
0x7c0600;
42
largest = 0;
43
descriptorAddress =
44
g_nNearArenaSize
+
g_1_nNearHeapBase
- 8;
45
while
(descriptorAddress >=
g_nNearHeapFirstDescriptor
) {
46
descriptor =
DosNearPtrToFar
(descriptorAddress);
47
if
((descriptor->
sizeAndFlags
& 0x80000000) == 0 &&
48
(
int
)(descriptor->
sizeAndFlags
& 0xfffff) > largest)
49
largest = descriptor->
sizeAndFlags
& 0xfffff;
50
descriptorAddress -= 8;
51
}
52
return
largest;
53
}
GetAvailableMainMemory
unsigned int GetAvailableMainMemory(void)
Definition
memfree.c:13
GetLargestMainMemoryBlock
unsigned int GetLargestMainMemoryBlock(void)
Definition
memfree.c:35
DosNearPtrToFar
void * DosNearPtrToFar(unsigned int v)
Definition
eventmgr.c:447
game.h
Shared Win32 declarations, types and library interfaces.
g_nNearHeapFirstDescriptor
int g_nNearHeapFirstDescriptor
Definition
nearheap.c:375
g_1_nNearHeapBase
volatile int g_1_nNearHeapBase
Definition
nearheap.c:374
g_nNearArenaSize
volatile int g_nNearArenaSize
Definition
nearheap.c:373
NearHeapBlock
Definition
game_data.h:327
NearHeapBlock::sizeAndFlags
unsigned int sizeAndFlags
Definition
game_data.h:329
src
memfree.c
Generated by
1.18.0