Memory Address Table
Note: This page pertains to Reverse Engineering of Okami.
Explanation
Here you will find an incomplete list of descriptions of memory addresses/locations/structures in Okami, discovered via Reverse Engineering.
Address refers to the path to the location in memory of the given data. These will be of the form dllFile.dll+offset
or dllFile.dll+offset + pointerOffset + pointerOffset
or similar. Offsets will be given in hexadecimal.
Short Description refers to a brief phrase or sentence which describes the meaning/purpose of the value.
CE Type refers to the way the value located at the given address is interpreted in Cheat Engine. The common types are:
- Float: A floating point value, representing a fraction/decimal value. Generally used for values which vary continuously. Can take on a very wide range of values, with varying degrees of precision. A float is always 4 bytes in length.
- (1/2/4/8) Byte(s): An integer value. Sometimes signed (positive or negative) sometimes unsigned (not negative). Can represent countable quantities (e.g. number of a given item in the inventory), addresses of other values, or a wide variety of other things. Sometimes represented in hexadecimal or decimal. Each byte represents 8 adjacent bits (binary on/off values).
- Array of Bytes: A list of byte values of arbitrary length. Can contain many independently meaningful addresses. Usually listed here to represent a group of related values stored adjacently in memory.
- String: A list of characters of arbitrary length, usually representing a something like a word, sentence, or filename.
- Binary: A set of values which are either on/off or true/false. Often used to represent flags, such as whether a certain one-time-only action has been performed. Because addresses can only refer to bytes, and not individual bits, each binary address listed here will represent a group of 8 actual bits/flags. In many cases, not all of the bits in a byte are used (the unused bits always remain at 0). For these values, the description will describe the overall contents of the byte, and the detailed values will be present in the Bitfield Table, linked in the Article column
Code Type refers to the assumed type of the value as it would have been written in the game's C++ source. Some common values are:
- float: Same as described under CE Types. 4 bytes
- int_8, int_16, int_32, int_64: Signed integer types of 8, 16, 32, and 64 bits (1, 2, 4, and 8 bytes) respectively
- int_8, uint_16, uint_32, uint_64: Unsigned integer types
- bool: Can only hold the values 0 or 1 (representing false or true, respectively), but takes up 1 byte in memory.
- char: Represents a single character of ASCII text. 1 byte.
- string: Same as described under CE Types. An array of chars.
- bitfield: (aka bitset, flags, etc.) 1 byte of data composed of adjacent bits representing true/false values with individual meanings. Corresponds to "Binary" CE type.
- struct: A structure composed of a set of values of certain types stored adjacently in memory. For example, a structure containing related data about a chest, including its location (represented as 3 floats) and the ID of its contents (represented using a uint).
- An array of any of the above types, with the format "type[n]", where n represents the length of the array. e.g. "uint_32[4]" for an array of 4 unsigned 32-bit ints. An array of unknown length would have empty brackets.
- A pointer to any of the above types, with the format "*type". Note that pointers always take up 8 bytes, regardless of the underlying type.
Range describes, roughly, the range of values stored at the given address. This doesn't generally indicate precise bounds.
Units/Details describes the type of quantity represented by the value and/or contains one or more links to an article which explains the meaning, purpose, and mechanics of that value in greater detail compared to the Short Description.
Table
Address | Short Description | CE Type | Code Type | Range | Units/Details |
---|---|---|---|---|---|
main.dll+B6B2D0 + 000000A8 + 0 | Ammy X Position/Coordinate | Float | float | -20,000 to 20,000 | Distance |
main.dll+B6B2D0 + 000000A8 + 4 | Ammy Y Position/Coordinate | Float | float | -10,000 to 10,000 | Distance |
main.dll+B6B2D0 + 000000A8 + 8 | Ammy Z Position/Coordinate | Float | float | -20,000 to 20,000 | Distance |
main.dll+B4DF90 | Ammy Current Health/Solar Energy | 2 Bytes | int_16 | 0 to 900 by default | Health |
main.dll+B4DF92 | Ammy Max Health/Solar Energy | 2 Bytes | int_16 | 900 to 6000 in increments of 300 | Health |
main.dll+B205E5 | Solar Energy Praise Upgrade Count | Byte | uint_8 | 0 to 12 | Counter |
main.dll+B205D8 | Current Ink Level | 4 Bytes | int_32 | 0 to 46080 by default | Ink |
main.dll+B205DD | Ammy Max Ink Level | 4 Bytes | int_32 | 46080 to 153600 in increments of 15360 | Ink |
main.dll+8928A4 | Target Ink Level when opening Brush | 4 Bytes | int_32 | 0 to 30720 by default | Ink |
main.dll+8928A8 | Current Ink Level when opening Brush | 4 Bytes | int_32 | 0 to 46080 by default | Ink |
main.dll+B1F208 | Ink Pot Upgrade Count | Byte | uint_8 | 3 to 10 | Counter |
main.dll+888C58 | Number of brush strokes on current canvas | Byte | uint_8 | 0 to 31 | Counter |
main.dll+B4DF94 | Current Astral Pouch Fill | 2 Bytes | int_16 | 0 to 200 | Food Points |
main.dll+B4DF96 | Max Astral Pouch Fill | 2 Bytes | int_16 | 200 to 800 in increments of 200 | Food Points |
main.dll+B1F207 | Astral Pouch Upgrade Count | Byte | uint_8 | 1 to 4 | Counter |
main.dll+B4DFAC | Godhood | 2 Bytes | int_16 | 0 to 375 in increments of 5 | Godhood Points |
main.dll+B205E0 | Current Yen | 4 Bytes | uint_32 | 0 to 99999 by default | Yen |
main.dll+B1CFE4 | Displayed Yen | 4 Bytes | uint_32 | 0 to 99999 by default | Yen |
main.dll+6B22A8 | Maximum Yen / Purse Size | 4 Bytes x4 | uint_32[4] | 99,999 to 99,999,999 | Yen |
main.dll+B21758 | Total Yen Earned | 4 Bytes | uint_32 | Typically 0 to 99,000,000 | Yen |
main.dll+B205E4 | Purse Upgrade Count | Byte | uint_8 | 0 to 3 | Counter |
main.dll+B4DF9A | Current Praise | 2 Bytes | int_16 | 0 to approx. 7,000 | Praise |
main.dll+B1F1F4 | Praise Upgrade Screen Bar | 2 Bytes | int_16 | 0 to approx. 7,000 | Praise |
main.dll+B1F1F6 | Praise Injected into Solar Energy Upgrade | 2 Bytes | int_16 | 0 to 300 | Praise |
main.dll+B1F1F8 | Praise Injected into Astral Pouch Upgrade | 2 Bytes | int_16 | 0 to 400 | Praise |
main.dll+B1F1FA | Praise Injected into Purse Upgrade | 2 Bytes | int_16 | 0 to 400 | Praise |
main.dll+B1F1FC | Praise Injected into Ink Upgrade | 2 Bytes | int_16 | 0 to 400 | Praise |
main.dll+B4DF9C | Total Praise Earned | 2 Bytes | int_16 | 0 to approx. 7,000 | Praise |
main.dll+B2066E | Current Demon Fangs | 2 Bytes | int_16 | 0 to 500 or so | Demon Fangs |
main.dll+B2175C | Total Demon Fangs Collected | 2 Bytes | uint_16 | 0 to 500 or so | Demon Fangs |