Memory (Kernel)¶
Memory has several subfunctions that allow for inspecting, modifying and allocating memory dynamically.
Important
SCI1.1 only.
-
Memory
(memALLOC_CRIT byteCount)¶ Allocates memory, and crashes the game if it fails.
Parameters: byteCount (number) – The number of bytes to allocate. Returns: A pointer to the memory block. Free the memory with Memory(memFREE).
Example:
(method (setName theName) (= name (Memory memALLOC_CRIT (+ (StrLen theName) 1))) (StrCpy name theName) )
-
Memory
(memALLOC_NONCRIT byteCount) Allocates memory, returns 0 if it fails.
Parameters: byteCount (number) – The number of bytes to allocate. Returns: A pointer to the memory block. Example:
(if (not (= text (Memory memALLOC_NONCRIT 20))) (Prints "Couldn't allocate memory.") )
Free the memory with Memory(memFREE).
-
Memory
(memFREE address) Frees memory allocated by memALLOC or memALLOC_NONCRIT.
Parameters: address (heapPtr) – A pointer to the memory block. Example:
(Memory memFREE blah)
-
Memory
(memCPY dest source byteCount) Copies memory from one location to another.
Parameters: - dest (heapPtr) – Destination address.
- source (heapPtr) – Source address.
- byteCount (number) – The number of bytes to copy.
-
Memory
(memPEEK address) Returns the 16-bit value at the address. It’s important to note that addresses point to 16-bit values, so the address of two adjacent values in memory will be separated by 2.
Parameters: address (heapPtr) – A memory address. Returns: The value at the address. Example:
(= point (Memory memPEEK (polyPointArray + (* 2 pointIndex))))
-
Memory
(memPOKE address value) Sets the value at a memory location.
Parameters: - address (heapPtr) – A memory address.
- value (number) – The value to put at this address.
Example:
(Memory memPOKE (+ polyPointArray 2) 137)