Wing Commander II
Reconstructed Win32 source (1996)
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. */
13unsigned int GetAvailableMainMemory(void)
14{
15 NearHeapBlock *descriptor;
16 int descriptorAddress;
17 int totalFree;
18
19 return 0x7c0600;
20 totalFree = 0;
21 descriptorAddress =
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. */
35unsigned int GetLargestMainMemoryBlock(void)
36{
37 NearHeapBlock *descriptor;
38 int descriptorAddress;
39 int largest;
40
41 return 0x7c0600;
42 largest = 0;
43 descriptorAddress =
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}
unsigned int GetAvailableMainMemory(void)
Definition memfree.c:13
unsigned int GetLargestMainMemoryBlock(void)
Definition memfree.c:35
void * DosNearPtrToFar(unsigned int v)
Definition eventmgr.c:447
Shared Win32 declarations, types and library interfaces.
int g_nNearHeapFirstDescriptor
Definition nearheap.c:375
volatile int g_1_nNearHeapBase
Definition nearheap.c:374
volatile int g_nNearArenaSize
Definition nearheap.c:373
unsigned int sizeAndFlags
Definition game_data.h:329