Game Sprites
CSprite, CSpriteEx, CActFile, CRsmModel, CGrannyModel, CAnimation, CSkybox, CShadowDecal, CFootprint, CParticle
| Address | Size | Name | Description |
|---|---|---|---|
| 0x0053FFE0 | 160 | CAnimation__push_keyframe_quat_A | Converts angle to quaternion (sin/cos) and pushes 20-byte keyframe onto vector |
| 0x00540080 | 160 | CAnimation__push_keyframe_quat_B | Converts angle to quaternion (sin/cos) and pushes 20-byte keyframe onto vector variant B |
| 0x00540120 | 192 | CAnimation__push_keyframe_quat_32byte | Converts angle to quaternion and pushes 32-byte keyframe with position+rotation data |
| 0x00540240 | 87 | CAnimation__add_keyframe_to_map | Inserts keyframe into map by int key, then pushes 8-byte value into map entry's vector |
| 0x00540370 | 291 | CAnimation__interpolate_translation | Interpolates translation keyframes at given time, outputs 3x4 matrix with identity+translation |
| 0x005404A0 | 457 | CAnimation__interpolate_position | Linearly interpolates position keyframes and writes result to param_4 offset 0x24 |
| 0x00540670 | 297 | CAnimation__interpolate_rotation | Interpolates quaternion rotation keyframes using slerp, outputs rotation matrix |
| 0x005407A0 | 1097 | CAnimation__interpolate_rotation_full | Full quaternion slerp interpolation with dot product sign fix, multiplies result with parent matrix |
| 0x00540BF0 | 108 | CAnimation__interpolate_scale_single | Handles single-keyframe scale: outputs identity matrix with diagonal scale or identity if empty |
| 0x00540C60 | 563 | CAnimation__interpolate_scale | Linearly interpolates scale keyframes and builds diagonal scale matrix |
| 0x00540EA0 | 547 | CAnimation__interpolate_morph_keyframes | Interpolates morph target keyframes from map, linearly blends between adjacent frames |
| 0x005410D0 | 131 | CAnimation__load_translation_keyframes | Reads translation keyframes from file: count + 16-byte entries (time,x,y,z) into vector |
| 0x00541160 | 115 | CAnimation__load_rotation_keyframes | Reads rotation keyframes from file: count + 20-byte entries (time,qx,qy,qz,qw) into vector |
| 0x005411E0 | 101 | CAnimation__load_scale_keyframes | Reads scale keyframes from file: count + 20-byte entries (time,sx,sy,sz) into vector |
| 0x00541250 | 133 | CAnimation__load_quaternion_keyframes | Reads quaternion keyframes with default identity quat initialization before reading |
| 0x005412E0 | 103 | CAnimation__load_combined_keyframes | Reads combined position+rotation keyframes: count + 32-byte entries into vector |
| 0x00541350 | 115 | CAnimation__load_rotation_keyframes_B | Reads rotation keyframes variant B from file, same 20-byte format as load_rotation_keyframes |
| 0x005413D0 | 422 | CAnimation__load_morph_keyframes | Reads morph keyframes from file into map structure: outer count, inner key+count+8byte pairs |
| 0x00541610 | 134 | CAnimation__save_keyframes_20byte | Writes count + all 20-byte keyframe elements to file stream |
| 0x005416A0 | 134 | CAnimation__save_keyframes_20byte_B | Writes count + all 20-byte keyframe elements to file stream variant B |
| 0x00541730 | 134 | CAnimation__save_keyframes_20byte_C | Writes count + all 20-byte keyframe elements to file stream variant C |
| 0x005417C0 | 169 | CAnimation__save_morph_keyframes | Writes morph keyframe map to file: count, then per-node key+count+data via tree traversal |
| 0x00541CD0 | 482 | CAnimation__slerp_position_and_rotation | Interpolates combined position (lerp) and rotation (slerp) keyframe with extra spin |
| 0x00551E30 | 68 | CMesh__dtor_clear_vertex_data | CMesh destructor helper: clears vertex data by calling vector clear and free |
| 0x00551E80 | 254 | CMesh__dtor_free_all_buffers | CMesh destructor: frees all allocated buffers including vertex array, index lists, material lists, and destroys sub-vectors. Calls dtor on 0x20-sized array elements and 0xC-sized sub-vectors. |
| 0x00551F80 | 68 | CMesh__dtor_clear_index_data | CMesh destructor helper: clears index data by calling vector clear and free |
| 0x00551FD0 | 1655 | CMesh__compute_face_and_vertex_normals | Computes face normals via cross product, then averages adjacent face normals into per-vertex normals |
| 0x005BEA30 | 268 | SpriteActionNode__construct | Constructs tree node with vtable, int field, and 6 SSO strings plus byte flag |
| 0x005BEB40 | 141 | SpriteActionNode__destruct | Destructs tree node: destroys 6 SSO strings with proper unwind ordering |
| 0x005BEBD0 | 165 | SpriteActionNode__scalar_deleting_destructor | Scalar deleting destructor for tree node; optionally frees 0x9C-byte block |
| 0x005BEC80 | 149 | SpriteActionNode__clear_all_strings | Clears 6 SSO strings in node by zeroing length and first char |
| 0x005BED80 | 134 | SpriteAction__destroy_tree_recursive | Recursively destroys red-black tree nodes: traverses subtrees, frees 0xB0 nodes |
| 0x005BEE70 | 230 | SpriteAction__grow_buffer_and_fill | Grows backing buffer with 1.5x growth factor, fills new space with byte value |
| 0x005BF080 | 245 | SpriteAction__construct_manager | Constructs sprite action manager: creates RB-tree sentinel, two linked lists |
| 0x005BF180 | 65 | SpriteAction__destroy_string_wrapper | Wrapper that destroys a single STL string with stack cookie check |
| 0x005BF1D0 | 70 | SpriteAction__free_sentinel_node | Frees the 0xB0-byte sentinel node if non-null |
| 0x005BF220 | 79 | SpriteAction__destroy_tree_and_sentinel | Destroys entire RB-tree recursively starting from root, frees sentinel |
| 0x005BF280 | 119 | SpriteAction__destruct_and_free_sentinel | Destructs sentinel node object, then frees its 0xB0-byte block |
| 0x005BF300 | 81 | SpriteAction__free_node_memory | Frees 0xB0-byte tree node memory if pointer at offset+4 is non-null |
| 0x005BF360 | 77 | SpriteAction__clear_list_a_and_free | Clears linked list A, frees 8-byte head node, resets pointer to null |
| 0x005BF3C0 | 77 | SpriteAction__clear_list_b_and_free | Clears linked list B, frees 8-byte head node, resets pointer to null |
| 0x005BF420 | 90 | SpriteAction__destroy_tree_and_free | Destroys RB-tree from root and frees sentinel 0xB0 block |
| 0x005BF480 | 68 | SpriteAction__destruct_node_wrapper_a | Thin wrapper calling SpriteActionNode destructor with cookie check |
| 0x005BF4D0 | 68 | SpriteAction__destruct_node_wrapper_b | Thin wrapper calling SpriteActionNode destructor with cookie check |
| 0x005BF520 | 184 | SpriteAction__destruct_manager | Destructs sprite action manager: clears lists, destroys tree, frees allocations |
| 0x005BF5E0 | 243 | SpriteAction__find_or_insert_node | Finds existing tree node by key or inserts new 0xB0 node into RB-tree |
| 0x005BF740 | 205 | SpriteAction__scalar_deleting_destructor | Scalar deleting destructor for action manager; optionally frees 0x34 block |
| 0x005BF810 | 92 | SpriteAction__expire_old_entries | Removes entries older than 10 seconds via timeGetTime comparison |
| 0x005BF870 | 19 | SpriteAction__forward_to_process | Forwards call to sprite processing function at 005c1c50 |
| 0x005BF890 | 462 | SpriteAction__find_node_by_string | Searches tree nodes comparing string field; returns key value or 0 |
| 0x005BFA60 | 687 | SpriteAction__serialize_tree_to_buffer | Serializes tree nodes to flat buffer: count + key + 4 strings per node |
| 0x005BFD10 | 470 | SpriteAction__lookup_or_create_cached | Looks up key in tree/queue; adds to queue if not found |
| 0x005BFEF0 | 100 | SpriteAction__insert_and_copy_string | Finds or inserts node by key, copies string data to offset +4 |
| 0x005BFF60 | 229 | SpriteAction__dequeue_pending_entry | Dequeues front entry from circular queue, validates against tree |
| 0x005C0050 | 56 | SpriteAction__clear_all_data | Clears all data: destroys tree, resets sentinel, empties both linked lists |
| 0x005C0090 | 242 | SpriteAction__add_to_circular_queue | Adds integer key to circular queue with growing bucket table if full |
| 0x005C0190 | 57 | SpriteAction__contains_key | Returns true if the given key exists in the RB-tree |
| 0x005C01D0 | 467 | SpriteAction__process_pending_requests | Expires old entries, dequeues pending, sends packet 0x368, timestamps results |
| 0x005C03B0 | 507 | SpriteAction__insert_full_node_data | Finds/inserts node by key, copies 6 string fields and int value, marks valid |
| 0x005C05B0 | 2216 | SpriteAction__parse_action_data | Parses binary action data into tree: reads 4 string fields per entry |
| 0x005C0E60 | 147 | SpriteAction__set_node_string_field_0 | Finds or inserts node by key, copies string to field at offset +0x04 |
| 0x005C0F00 | 147 | SpriteAction__set_node_string_field_3 | Finds or inserts node by key, copies string to field at offset +0x4C |
| 0x005C0FA0 | 147 | SpriteAction__set_node_string_field_4 | Finds or inserts node by key, copies string to field at offset +0x64 |
| 0x005C1040 | 123 | SpriteAction__allocate_buffer | Allocates aligned byte buffer for blocks over 0x1000, sets begin/end/capacity |
| 0x005C10C0 | 85 | SpriteAction__swap_buffer | Frees old buffer, replaces with new buffer pointer, sets size and capacity |
| 0x005C1120 | 141 | SpriteAction__reallocate_buffer | Reallocates buffer with 1.5x growth: frees old, allocates new minimum bytes |
| 0x005C1C50 | 387 | SpriteAction__erase_range_by_key | Erases a range of nodes from the RB-tree by key bounds. Finds lower and upper bounds, iterates through matching nodes, calls erase_node_and_rebalance + destructor for each. If the entire tree matches, destroys all and resets sentinel. |
| 0x005C1DE0 | 67 | SpriteAction__find_node_by_key | Finds node by key in the RB-tree using _Find_lower_bound. Returns the node if key matches, otherwise returns sentinel (end). |
| 0x005C1E50 | 160 | SpriteAction__destroy_tree_recursive_005c1e50 | Recursively destroys all nodes in a subtree. For each node: recurse right, clear vector, destroy string, free 0x48-byte node, then follow left child. |
| 0x005C1EF0 | 146 | SpriteActionNode__construct_005c1ef0 | Constructs a SpriteActionNode: zeroes string length/capacity fields, initializes two STL strings to empty (capacity=0xf), zeroes array pointers (offset 0x1C-0x30). |
| 0x005C1F90 | 110 | SpriteAction__init_rbtree | Initializes an RB-tree: allocates 0x48-byte sentinel node, sets left/right/parent pointers to self, sets color flags to 0x0101 (black+leaf), stores sentinel pointer. |
| 0x005C2000 | 76 | SpriteAction__free_single_entry | Frees single sprite action entry: calls cleanup at offset+4, deallocates 0x48 block |
| 0x005C2060 | 87 | SpriteAction__free_single_entry_005c2060 | Frees single sprite action entry: recursively destroys tree nodes, then frees the 0x48-byte sentinel. Duplicate of 005c2000. |
| 0x005C20C0 | 87 | SpriteActionNode__destruct_005c20c0 | Destructs a SpriteActionNode: clears and frees the 4-byte element vector, then destroys the STL string field. |
| 0x005C2120 | 99 | SpriteAction__free_single_entry_005c2120 | Frees single sprite action entry: recursively destroys tree nodes, then frees the 0x48-byte sentinel. Duplicate of 005c2000. |
| 0x005C2190 | 198 | SpriteAction__copy_vector_from_node | Copies a vector of 4-byte elements from source node (offset 0x28-0x30) into destination. Allocates new buffer, memcpy's elements, sets begin/end/capacity pointers. |
| 0x005C2270 | 88 | SpriteAction__copy_construct_string_field | Copy-constructs an STL string at this+4 from another string. Used during SpriteAction node initialization. |
| 0x005C2310 | 49 | SpriteAction__validate_action_id_range | Validates action ID is within allowed ranges: 0x3E9-0xF9E (1001-3998) or 0x4E35-0x7CFF (20021-31999). Stores valid ID and returns 1, or returns 0 if out of range. |
| 0x005C2350 | 93 | SpriteAction__add_unique_to_vector | Adds a non-negative value to the vector at offset 0x28 only if not already present. Returns 1 on success, 0 if value is negative or duplicate. Uses linear scan for duplicate check. |
| 0x005C23B0 | 59 | SpriteAction__assign_cstring_to_field | Assigns a null-terminated C string to the object's STL string field. Calculates strlen manually, then calls STL_string_assign_buffer. Returns 1 on success, 0 if null. |
| 0x005C23F0 | 115 | SpriteAction__try_assign_string_field | Conditionally assigns string data to object's string field at offset+4. If source length is nonzero, copies buffer contents. Returns 1 on assignment, 0 if empty source. Destroys temp string after. |
| 0x005C2470 | 25 | SpriteAction__set_delay | Sets delay value at offset 0x20. Rejects negative values, returns 1 on success, 0 on failure. |
| 0x005C2490 | 28 | SpriteAction__set_frame_count | Sets frame count at offset 0x1C. Rejects values >= 9999, returns 1 on success, 0 on failure. |
| 0x005C24B0 | 25 | SpriteAction__set_loop_flag | Sets loop flag at offset 0x24. Only accepts value 0 (disables looping). Returns 1 on success, 0 for nonzero input. |
| 0x005C24D0 | 45 | SpriteAction__contains_value_in_vector | Checks if a given integer value exists in the vector at offset 0x28. Returns 1 if found, 0 otherwise. Skips search if flag at offset 0x14 is zero. |
| 0x005C2500 | 62 | SpriteAction__find_node_data_by_key | Finds node in RB-tree by key and returns pointer to data at node+0x14 (5th dword). Uses upper_bound search; returns sentinel data if key not found. |
| 0x005C2540 | 34 | SpriteAction__memcpy_range | Copies memory range [param_1, param_2) to destination param_3 using memcpy. Returns pointer past copied data in destination. |
| 0x005C2740 | 25 | SpriteAction__zero_array | Zeroes an array of 4-byte elements using memset. param_2 is the element count. |
| 0x005C2760 | 25 | SpriteAction__zero_array_005c2760 | Zeroes an array of 4-byte elements using memset. param_2 is the element count. Duplicate of 005c2740. |
| 0x005C2780 | 28 | SpriteAction__is_empty | Returns 1 (true) if the first dword pointed to by param_1 is zero, indicating the SpriteAction data is empty/uninitialized. |
| 0x006C71A0 | 601 | SpriteMap__hash_erase_range | Erases range of entries from unordered_map using FNV-1a hash, frees 0x38-byte nodes |
| 0x006C7400 | 80 | SpriteMap__base_dtor_return_this | Destructor that sets vtable and calls json internal cleanup, returns this ptr |
| 0x006C7460 | 74 | SpriteMap__base_dtor_void | Destructor that sets vtable and calls json internal destroy, void return |
| 0x006C74B0 | 30 | SpriteMap__scalar_dtor_4byte | Scalar deleting destructor, frees 4-byte object if flag set |
| 0x006C74D0 | 99 | SpriteMap__scalar_dtor_0xc | Scalar deleting destructor, sets vtable, destroys inner state, frees 0xC-byte object |
| 0x006C7540 | 293 | SpriteMap__load_item_db_names_lua | Loads Lua file "LuaFiles514/Lua Files/ItemDBNameTbl" for item DB name table |
| 0x006C7670 | 163 | SpriteMap__lookup_item_id_by_name | Lua call "ItemDB_To_ItemID" to convert item name string to numeric item ID |
| 0x006C7720 | 501 | SpriteMap__register_sprite_1param | Registers sprite mapping with 1 sprite ID parameter, inserts into RB-tree map |
| 0x006C7920 | 517 | SpriteMap__register_sprite_2params | Registers sprite mapping with 2 sprite ID parameters, inserts into RB-tree map |
| 0x006C7B30 | 527 | SpriteMap__register_sprite_3params | Registers sprite mapping with 3 sprite ID parameters, inserts into RB-tree map |
| 0x006C7D40 | 543 | SpriteMap__register_sprite_4params | Registers sprite mapping with 4 sprite ID parameters, inserts into RB-tree map |
| 0x006C7F60 | 543 | SpriteMap__register_sprite_5params | Registers sprite mapping with 5 sprite ID parameters, inserts into RB-tree map |
| 0x006C8180 | 544 | SpriteMap__register_sprite_6params | Registers sprite mapping with 6 sprite ID parameters, inserts into RB-tree map |
| 0x006C83A0 | 559 | SpriteMap__register_sprite_7params | Registers sprite mapping with 7 sprite ID parameters, inserts into RB-tree map |
| 0x006C85D0 | 575 | SpriteMap__register_sprite_9params | Registers sprite mapping with 9 sprite ID parameters, inserts into RB-tree map |
| 0x006C8810 | 575 | SpriteMap__register_sprite_11params | Registers sprite mapping with 11 sprite ID parameters, inserts into RB-tree map |
| 0x006C8A50 | 185 | SpriteMap__register_set_1param | Registers sprite set mapping with 1 signed int parameter via signed-key tree |
| 0x006C8B10 | 191 | SpriteMap__register_set_2params | Registers sprite set mapping with 2 signed int parameters via signed-key tree |
| 0x006C8BD0 | 210 | SpriteMap__register_set_3params | Registers sprite set mapping with 3 signed int parameters via signed-key tree |
| 0x006C8CB0 | 216 | SpriteMap__register_set_4params | Registers sprite set mapping with 4 signed int parameters via signed-key tree |
| 0x006C8D90 | 222 | SpriteMap__register_set_5params | Registers sprite set mapping with 5 signed int parameters via signed-key tree |
| 0x006C8E70 | 228 | SpriteMap__register_set_6params | Registers sprite set mapping with 6 signed int parameters via signed-key tree |
| 0x006C8F60 | 234 | SpriteMap__register_set_7params | Registers sprite set mapping with 7 signed int parameters via signed-key tree |
| 0x006C9050 | 240 | SpriteMap__register_set_8params | Registers sprite set mapping with 8 signed int parameters via signed-key tree |
| 0x006C9140 | 294 | SpriteMap__register_set_17params | Registers sprite set mapping with 17 signed int parameters via signed-key tree |
| 0x006C9270 | 210 | SpriteMap__register_set_3params_alt | Alternative sprite set registration with 3 signed int params, same tree structure |
| 0x006C9350 | 216 | SpriteMap__register_set_4params_alt | Alternative sprite set registration with 4 signed int params, same tree structure |
| 0x006C9430 | 222 | SpriteMap__register_set_5params_alt | Alternative sprite set registration with 5 signed int params, same tree structure |
| 0x006C9510 | 228 | SpriteMap__register_set_6params_alt | Alternative sprite set registration with 6 signed int params, same tree structure |
| 0x006C9600 | 234 | SpriteMap__register_set_7params_alt | Alternative sprite set registration with 7 signed int params, same tree structure |
| 0x006C96F0 | 240 | SpriteMap__register_set_8params_alt | Alternative sprite set registration with 8 signed int params, same tree structure |
| 0x006C97E0 | 264 | SpriteMap__register_set_12params_alt | Alternative sprite set registration with 12 signed int params (param_3..param_14), builds RB-tree and merges into second internal map at this+4. |
| 0x006C98F0 | 270 | SpriteMap__register_set_13params_alt | Alternative sprite set registration with 13 signed int params (param_3..param_15), builds RB-tree and merges into second internal map at this+4. |
| 0x006C9A00 | 294 | SpriteMap__register_set_17params_alt | Alternative sprite set registration with 17 signed int params (param_3..param_19), builds RB-tree and merges into second internal map at this+4. |
| 0x006C9B30 | 339 | SpriteMap__register_set_24params_alt | Alternative sprite set registration with 24 signed int params (param_3..param_26), builds RB-tree and merges into second internal map at this+4. |
| 0x006C9C90 | 116 | SpriteMap__rbtree_copy_subtree | Copies RB-tree subtree from source to destination, updates head/tail pointers |
| 0x006C9D10 | 232 | SpriteMap__rbtree_clone_nodes_recursive | Recursively clones RB-tree nodes with 0x14-byte allocation, copies key and color |
| 0x006C9E20 | 118 | SpriteMap__rbtree_destroy_with_nested | Destroys RB-tree, calling CPacketStream operation on each node's nested data before freeing |
| 0x006C9EA0 | 103 | SpriteMap__rbtree_destroy_recursive_A | Recursively destroys RB-tree nodes in post-order traversal, frees 0x14-byte nodes |
| 0x006C9F10 | 103 | SpriteMap__rbtree_destroy_recursive_B | Recursively destroys RB-tree nodes in post-order traversal, identical to variant A |
| 0x006C9F80 | 445 | SpriteMap__rbtree_find_hint_uint | Finds insertion hint in RB-tree with unsigned int key comparison, returns node+direction |
| 0x006CA140 | 434 | SpriteMap__rbtree_find_hint_int | Finds insertion hint in RB-tree with signed int key comparison, returns node+direction |
| 0x006CA3A0 | 75 | SpriteMap__rbtree_lower_bound_int | RB-tree lower_bound search using signed int comparison, returns node and direction |
| 0x006CA3F0 | 271 | SpriteMap__rbtree_merge_nodes | Merges RB-tree nodes from source into destination, extracts and re-inserts each node |
| 0x006CA500 | 298 | SpriteMap__rbtree_build_from_uint_array | Builds RB-tree from array of unsigned ints, allocates sentinel and inserts each key |
| 0x006CA630 | 298 | SpriteMap__rbtree_build_from_int_array | Builds RB-tree from array of signed ints, allocates sentinel and inserts each key |
| 0x006CA760 | 67 | SpriteMap__free_tree_node_0x1c | Frees single 0x1C-byte tree node at offset+4 if non-null |
| 0x006CA7B0 | 67 | SpriteMap__free_tree_node_0x1c_alt | Frees single 0x1C-byte tree node at offset+4 if non-null, identical pattern |
| 0x006CA800 | 67 | SpriteMap__free_tree_node_0x14 | Frees single 0x14-byte tree node at offset+4 if non-null |
| 0x006CA850 | 67 | SpriteMap__free_tree_node_0x14_alt | Frees single 0x14-byte tree node at offset+4 if non-null, alternate instance |
| 0x006CA8A0 | 111 | SpriteMap__rbtree_destroy_nested_recursive | Destroys RB-tree, recursively destroying nested sub-trees at each node before freeing |
| 0x006CA940 | 124 | SpriteMap__destroy_nested_tree_and_node | Destroys nested sub-tree at offset 0x14, then frees 0x1C-byte parent node |
| 0x006CA9C0 | 124 | SpriteMap__delete_member_and_cleanup | Cleans up sprite map node: destroys tree at offset+0x14, frees 0x1C-byte node at offset+4 |
| 0x006CAA40 | 78 | SpriteMap__scalar_deleter_006caa40 | Frees 0x14-byte allocation at this+4 if non-null |
| 0x006CAA90 | 78 | SpriteMap__scalar_deleter_006caa90 | Frees 0x14-byte allocation at this+4 if non-null |
| 0x006CAAE0 | 78 | SpriteMap__scalar_deleter_006caae0 | Frees 0x1C-byte allocation at this+4 if non-null |
| 0x006CAB30 | 78 | SpriteMap__scalar_deleter_006cab30 | Frees 0x1C-byte allocation at this+4 if non-null |
| 0x006CAB80 | 78 | SpriteMap__scalar_deleter_006cab80 | Frees 0x14-byte allocation at this+4 if non-null |
| 0x006CABD0 | 78 | SpriteMap__scalar_deleter_006cabd0 | Frees 0x14-byte allocation at this+4 if non-null |
| 0x006CAC20 | 81 | SpriteMap__destroy_inner_tree_006cac20 | Destroys red-black tree stored at this+4 via recursive cleanup |
| 0x006CAC80 | 81 | SpriteMap__destroy_inner_tree_006cac80 | Destroys red-black tree stored at this+4 via recursive cleanup |
| 0x006CACE0 | 65 | SpriteMap__cleanup_delegate | SEH-wrapped delegate that calls sprite map cleanup at 006ca8a0 |
| 0x006CAD30 | 102 | SpriteMap__move_assign | Moves all nodes from source tree to this tree: erases existing nodes via STL_tree_erase_nodes_14byte, then copies from source via rbtree_copy_subtree |
| 0x006CADA0 | 275 | SpriteMap__find_or_insert_uint_key | Finds or inserts a uint key in RB-tree map, returns pointer to value at node+0x14 |
| 0x006CAEC0 | 275 | SpriteMap__find_or_insert_uint_key_006caec0 | Finds or inserts a uint key in RB-tree map, returns pointer to value at node+0x14 |
| 0x006CBD30 | 3583 | SpriteMap__init_all_sprite_mappings | Initializes all item sprite->equipment slot mappings for head/body/weapon/shield/accessory |
| 0x00711F80 | 291 | CFootprintPng__ctor | Constructor for CFootprintPng. Calls CEffectAura base ctor with type 0x96B, sets vtable 01116fd4, allocates 12-byte linked list sentinel node at +0xCC, initializes two STL string members, position fields from base, and sets initial parameters including Y offset -1000.0. |
| 0x007120B0 | 67 | CFootprintPng__free_linked_list_node | Frees the 12-byte linked list sentinel node at this+4 if non-null. Used during CFootprintPng destruction to clean up linked list storage. |
| 0x00712100 | 78 | CFootprintPng__free_list_node | Frees a single linked list node (0xC bytes) at this+4 if non-null |
| 0x00712150 | 103 | CFootprintPng__destroy_linked_list | Iterates and frees all nodes in a linked list, then frees the sentinel node |
| 0x007121C0 | 180 | CFootprintPng__dtor | Destructor: sets vtable 01116fd4, destroys member strings and footprint sprite list |
| 0x00712280 | 204 | CFootprintPng__scalar_dtor | Scalar deleting destructor for CFootprintPng (0x128 bytes), frees memory if flag set |
| 0x00712350 | 105 | CFootprintPng__clear_sprite_list | Destroys all footprint sprites in list at +0xCC, resets list to empty, clears count at +0xD0 |
| 0x007123C0 | 77 | CFootprintPng__should_render | Checks if footprint rendering is enabled: validates actor, checks ability 0x10D, and option flag |
| 0x00712410 | 908 | CFootprintPng__load_config | Loads footprint PNG config: file path, scale, alpha, duration, stride from lua settings |
| 0x007127B0 | 733 | CFootprintPng__create_sprite | Creates a footprint sprite with alpha/duration, applies rotation matrix to position 4 vertices |
| 0x00712A90 | 433 | CFootprintPng__update | Updates footprint list: creates new sprite if moved past stride distance, fades/removes expired ones |
| 0x00712CA0 | 386 | CFootprintStr__ctor | Constructor: initializes vtable 011170f0, two linked lists, 4 STL strings, default transform params |
| 0x00712E30 | 322 | CFootprintStr__dtor | Destructor: saves position, destroys 4 strings, frees both footprint sprite linked lists |
| 0x00712F80 | 346 | CFootprintStr__scalar_dtor | Scalar deleting destructor for CFootprintStr (0x178 bytes), frees memory if flag set |
| 0x007130E0 | 201 | CFootprintStr__clear_both_lists | Destroys all sprites in both linked lists (+0xCC bottom, +0xD4 top), resets counts to zero |
| 0x007131B0 | 437 | CFootprintPng__calc_spawn_position | Calculates footprint spawn position using direction vector, Y-rotation matrix, and stride offset |
| 0x00713370 | 77 | CFootprintStr__should_render | Checks if STR footprint rendering is enabled: validates actor, checks ability 0x10D, and option flag |
| 0x007133C0 | 1126 | CFootprintStr__load_config | Loads STR footprint config: bottom/top files, scale, top height, stride, gap, angle adjust from lua |
| 0x00713840 | 284 | CFootprintStr__create_bottom_sprite | Creates a bottom-layer STR footprint sprite with scale and optional height offset |
| 0x00713960 | 907 | CFootprintStr__create_footprint_pair | Creates bottom and top STR footprint sprites at calculated position, alternates left/right foot |
| 0x00713CF0 | 268 | CFootprintStr__create_top_sprite_at | Creates a top-layer STR footprint sprite at given world position with height offset and scale |
| 0x00713E00 | 296 | CFootprintStr__update | Updates STR footprints: spawns new pair if moved past stride, removes finished sprites from both lists |
| 0x00713F30 | 64 | CFootprintStr__try_update_sprite | Tries to update a STR sprite; returns 1 if still alive, destroys it and returns 0 if finished |
| 0x00713F70 | 141 | CFootprintStr__render_all | Renders all footprint sprites: iterates bottom list with render call, top list with separate render |
| 0x00714000 | 165 | CFootprintStr__push_back_sprite | Appends a sprite pointer to the linked list, increments count; throws if list exceeds max |
| 0x007140B0 | 103 | CFootprintMgr__free_tree_nodes_28 | Recursively frees red-black tree nodes (0x28 bytes each) in post-order traversal |
| 0x00714120 | 103 | CFootprintMgr__free_tree_nodes_20 | Recursively frees red-black tree nodes (0x20 bytes each) in post-order traversal |
| 0x00714190 | 87 | CFootprintMgr__tree_lower_bound_28 | Finds lower bound in red-black tree (0x28 node), comparing 64-bit key at node+0x10 |
| 0x007141F0 | 87 | CFootprintMgr__tree_lower_bound_20 | Finds lower bound in red-black tree (0x20 node), comparing 64-bit key at node+0x10 |
| 0x00714250 | 1638 | CFootprintMgr__ctor | Constructor: vtable 01117244, init base class, two RB-trees, inserts 5 default footprint type entries |
| 0x007148C0 | 67 | CFootprintMgr__free_node_28 | Frees a single 0x28-byte tree node if its data pointer is non-null |
| 0x00714910 | 67 | CFootprintMgr__free_node_20 | Frees a single 0x20-byte tree node if its data pointer is non-null |
| 0x00714960 | 111 | CFootprintMgr__destroy_tree_28 | Destroys entire 0x28-node RB-tree: recursively frees all nodes then frees sentinel |
| 0x007149E0 | 111 | CFootprintMgr__destroy_tree_20 | Destroys entire 0x20-node RB-tree: recursively frees all nodes then frees sentinel |
| 0x00714A60 | 78 | CFootprintMgr__free_tree_node_28_a | Frees a 0x28-byte tree node if data pointer at +4 is non-null |
| 0x00714AB0 | 78 | CFootprintMgr__free_tree_node_20_a | Frees a 0x20-byte tree node if data pointer at +4 is non-null |
| 0x00714B00 | 78 | CFootprintMgr__free_tree_node_28_b | Frees a 0x28-byte tree node if data pointer at +4 is non-null (variant B) |
| 0x00714B50 | 78 | CFootprintMgr__free_tree_node_20_b | Frees a 0x20-byte tree node if data pointer at +4 is non-null (variant B) |
| 0x00714BA0 | 65 | CFootprintMgr__clear_tree_28 | Wrapper that calls destroy_tree_28 to clear the 0x28-node RB-tree |
| 0x00714BF0 | 65 | CFootprintMgr__clear_tree_20 | Wrapper that calls destroy_tree_20 to clear the 0x20-node RB-tree |
| 0x00714C40 | 126 | CFootprintMgr__dtor | Destructor: sets vtable 01117244, destroys both RB-trees (0x20 and 0x28), destroys base class |
| 0x00714CC0 | 268 | CFootprintMgr__find_or_insert_config_28 | Finds or inserts a 0x28-node in RB-tree by 64-bit key, returns pointer to value at node+0x18 |
| 0x00714DD0 | 254 | CFootprintMgr__find_or_insert_state_20 | Finds or inserts a 0x20-node in RB-tree by 64-bit key, returns pointer to value at node+0x18 |
| 0x00714ED0 | 150 | CFootprintMgr__scalar_dtor | Scalar deleting destructor for CFootprintMgr (0xF0 bytes), frees memory if flag set |
| 0x00714F70 | 487 | CFootprintMgr__spawn_abyss_effect | Creates abyss shadow effect sprite, destroys old one if exists, sets scale/color/position from config |
| 0x00715210 | 493 | CFootprintMgr__respawn_abyss_effect | Destroys existing abyss effect and respawns a new one, preserving scale/color/position data |
| 0x00715420 | 122 | CFootprintMgr__update_all_effects | Iterates RB-tree of effects and calls update_effect_state for each entry's key and data |
| 0x007154A0 | 2013 | CFootprintMgr__update_effect_state | Updates abyss effect by state: 1=fade/respawn, 2=transform position, 3=check expiry and transform |
| 0x00715C80 | 125 | CFootprintMgr__render_all_effects | Iterates RB-tree and renders each effect sprite via scene graph render call |
| 0x00715D00 | 43 | CFootprintMgr__render_single_effect | Renders a single abyss effect sprite if non-null, via scene graph render |
| 0x00715D30 | 510 | CFootprintMgr__transform_effect_position | Transforms effect sprite position from local to world coordinates using view matrix multiplication |
| 0x00715F30 | 1192 | CFootprintMgr__sync_effect_count | Adjusts number of abyss effects to target count: spawns new or respawns excess ones |
| 0x00716800 | 127 | CShadowDecal__ctor | Constructor: vtable 011173e4, init base class, zeroes sprite ptrs and flag, sets active=true |
| 0x00716880 | 95 | CShadowDecal__dtor | Destructor: sets vtable 011173e4, destroys sprite vector, destroys base class |
| 0x007168E0 | 119 | CShadowDecal__scalar_dtor | Scalar deleting destructor for CShadowDecal (0xDC bytes), frees memory if flag set |
| 0x00716960 | 63 | CShadowDecal__clear_sprites | Destroys all shadow sprites in vector at +0xCC, resets end pointer to begin |
| 0x007169A0 | 557 | CShadowDecal__create_frostbite_sprites | Creates frostbite effect sprites (type 0x8E0), up to 4 per decal, with alpha/blend settings |
| 0x00716BF0 | 396 | CShadowDecal__render_sprites | Renders shadow decal sprites: sets texture UV coords and vertex positions based on rotation case 0-3 |
| 0x00717180 | 359 | CShadowDecal__render_single_sprite | Renders one shadow decal sprite: computes UV from texture atlas, sets 4-vertex quad by rotation case |
| 0x00730210 | 510 | CParticleEffect__constructor | Constructor for CParticleEffect. Inherits from base effect (0x927 type ID). Initializes particle parameters: color 0xFFC80004, alpha 0x6464, size 12.0f, scale 0.5f, lifetime 50.0f, speed 5.0f, count 200, texture "effect\\cloud11.tga". Initializes 3 sub-effect vectors. |
| 0x00730410 | 110 | CParticleEffect__destructor | Destructor for CParticleEffect. Sets vtable, destroys aura sub-effects, frees texture string, calls base destructor. |
| 0x00730480 | 134 | CParticleEffect__scalar_deleting_destructor | Scalar deleting destructor for CParticleEffect. Calls destructor and optionally frees memory (0x138 bytes). |
| 0x00730510 | 760 | CParticleEffect__SpawnParticles | Spawns all particles for this effect. For each particle count (0xCC), creates 21 (0x15) sub-particles per ring. Sets random angle, color, size, lifetime, texture path, and beam connections. Pushes particle handles into vector at 0x130. |
| 0x00730810 | 63 | CParticleEffect__DestroyAllParticles | Destroys all particle sub-effects in the vector (0x12C-0x130), then resets the vector size. |
| 0x00730860 | 16 | CParticleEffect__ResetAndRespawn | Calls virtual reset method then re-spawns all particles. Used when particle effect needs to restart. |
| 0x00730880 | 997 | CParticleEffect__UpdateAllParticleTransforms | Updates transforms for all particles. For each particle: updates alpha bounce state, advances rotation angle (wraps at 360), computes sin/cos for orbital position, applies rotation matrices (X and Z axes), transforms to world space. Stores previous and current positions for trail rendering. |
| 0x00730C70 | 956 | CParticleEffect__UpdateSingleParticleTransform | Updates transform for a single particle. Same logic as UpdateAllParticleTransforms but for one particle entity. Updates alpha bounce, rotation, orbital position, applies rotation matrices, stores positions. |
| 0x00731030 | 164 | CParticleEffect__RenderAllParticles | Renders all particles in the effect. For each particle with a valid index (>0), sets up render params (blend mode, scale) and calls the beam/particle render function. |
| 0x007310E0 | 122 | CParticleEffect__RenderSingleParticle | Renders a single particle. Sets up render parameters (blend mode 0x100, scale 1.0f) and calls the beam/particle render function if the particle index > 0. |
| 0x00731160 | 86 | CParticleEffect__UpdateParticleAlphaBounce | Updates particle alpha bounce state. Alpha oscillates between 0 and max (from byte at 0xCE). State 0 = increasing, state 1 = decreasing. Stores current alpha at offset 0x44. |
| 0x00743680 | 38 | CSpriteRes__scalar_deleting_dtor_00743680 | Scalar deleting destructor for CSpriteRes (0x14C variant). Calls reset_lists to clear all frame data, then optionally frees 0x14C bytes. |
| 0x007436B0 | 252 | CSpriteRes__create | Factory function for CSpriteRes. Allocates 0x138 bytes, calls CTokenizer__ctor as base, sets vtable to PTR_UISkillWnd__OnPaint_0111aa48. Initializes frame list vectors (0x44-0x4D) to zero. Returns new object or NULL on allocation failure. |
| 0x007437B0 | 3567 | CSpriteRes__load_from_act_file | Loads sprite animation data from an ACT binary file. Reads header (magic 0x4341 = "AC"), checks version (0x200-0x206). Parses per-action frame data (0x44 bytes), per-frame sprite layers (0x24 bytes with position/scale/rotation), and event triggers. Handles version-specific fields: v0x200 adds frame events, v0x203 adds anchor points, v0x204 adds per-layer frame dimensions, v0x205 adds embedded sprite dimensions. Shows error for unsupported versions. |
| 0x007445A0 | 184 | CSpriteRes__reset_frame_lists | Resets all frame data in a CSpriteRes. Clears the action list vector at 0x110/0x114 (destroying 0x44-byte entries) and the event name list vector at 0x120/0x124 (destroying strings). |
| 0x00744660 | 142 | CSpriteRes__scalar_deleting_dtor | Scalar deleting destructor for CSpriteRes. Deallocates 3 internal vectors (4-byte elements, struct vector, 0xC-byte entries), sets vtable to CTokenizer, optionally frees 0x138 bytes. |
| 0x007446F0 | 302 | CSpriteRes__constructor | Constructor for CSpriteRes (0x14C variant with scale/offset). Allocates 0x14C bytes, calls CTokenizer__ctor. Sets vtable to PTR_UISkillWnd__scalar_deleting_destructor_0111aa0c. Initializes all frame vectors to 0 and sets float fields 0x4D/0x4E to 1.0f (default scale). |
| 0x00744820 | 2412 | CSpriteRes__load_from_text | Loads sprite animation data from a text-based RMA (Ragnarok Model Animation) file. Reads entire file into memory, parses via std::stringstream. Recognizes directives: #rsname (resource name), #action (action ID, frame count, frame data with nested vertex data), interiorzoom, interioroffsetx/y, interiorframes, shadowzoom. Uses CTokenizer to parse each line into tokens. |
| 0x00745190 | 196 | CSpriteRes__clear_all_data | Clears all data in a CSpriteRes. Destroys action entries at 0x110/0x114 (0x18-byte entries with nested vectors), destroys event name strings at 0x11C/0x120, and resets the index vector at 0x128/0x12C. |
| 0x00745FB0 | 196 | CSpriteTokenizer__ctor | Constructor for a CSpriteRes-derived CTokenizer subclass. Calls CTokenizer__ctor base, sets CSpriteRes vtable, initializes 10 fields at offsets 0x110-0x134 to zero (vector begin/end/capacity triplets and state flags). |
| 0x00749580 | 166 | CSprite__Create | Factory function for CSprite. Allocates 0x124-byte object, calls base constructor FUN_00aeda10, sets vtable PTR_FUN_0111acb0, initializes image dimensions and data pointers to 0. |
| 0x00749630 | 333 | CSprite__LoadFromStream | Loads a sprite from file. Opens CFileStream, calls virtual load method (vtable+0x20), closes stream. Returns 1 on success, 0 on failure (null path or failed open/load). |
| 0x00749780 | 199 | CSprite__LoadByExtension | Dispatches sprite loading based on file extension. Uses strrchr to find extension, then lstrcmpiA to compare: .bmp -> LoadImageData, .tga -> LoadTGA, .jpg -> LoadJPEG, .png -> LoadPNG. Logs error for unsupported formats. |
| 0x00749850 | 83 | CSprite__FreeImageBuffers | Frees the two image data buffers at offsets 0x11C and 0x120, then zeroes the width (0x114), height (0x118), and both buffer pointers. |
| 0x007498B0 | 94 | CSprite__scalar_deleting_destructor_2 | Scalar deleting destructor for CSprite. Sets vtable PTR_FUN_0111aabc, conditionally frees 0x124 bytes. |
| 0x00749910 | 241 | CSpriteEx__Create | Factory function for CSpriteEx (extended sprite). Allocates 0x140-byte object, inherits from CSprite (vtable PTR_FUN_0111acb0 then overwritten to PTR_FUN_0111acd8). Initializes extra fields: 3 additional pointers (0x49-0x4B), 2 shorts (0x4D, 0x4F), and a DWORD (0x4E). |
| 0x00749A10 | 324 | CSpriteEx__LoadFromFile | Loads an extended sprite from file. Opens CFileStream, calls virtual load method (vtable+0x20), closes stream. Returns 1 on success, 0 on failure. |
| 0x00749B60 | 244 | CSpriteEx__LoadByExtensionOrGIF | Extended sprite loader. First checks for GIF magic ("GIF"), then falls through to extension-based dispatch: .bmp, .tga, .jpg, .png. Logs error for unsupported formats. |
| 0x00749C60 | 181 | CSpriteEx__FreeAllFrames | Frees all animation frames. Iterates frame array (0x124 to 0x128), frees each frame's pixel buffer (if it matches current frame buffer at 0x11C, clears that too). Resets frame index (0x134), frees current buffer, clears dimensions and palette pointer (0x120). |
| 0x00749D20 | 175 | CSpriteEx__UpdateAnimation | Updates animated sprite frame. If multiple frames exist, checks elapsed time via timeGetTime against frame delay (stored as ushort * 10ms per frame). Advances to next frame, wrapping to 0. Updates current frame buffer pointer (0x11C) and sets dirty flag (0x13D). |
| 0x00749DE0 | 112 | CSpriteEx__scalar_deleting_destructor | Scalar deleting destructor for CSpriteEx. Calls frame vector cleanup FUN_0074a320, sets base vtable, conditionally frees 0x140 bytes. |
| 0x0074A1D0 | 114 | CSprite__constructor_inline | Constructor for CSprite. Calls base constructor FUN_00aeda10, sets vtable, initializes image data (0x44=0) and frame vector pointers (0x47/0x48=0). |
| 0x0074A250 | 189 | CSpriteEx__constructor | Constructor for CSpriteEx. Calls CSprite constructor, then overwrites vtable to PTR_FUN_0111acd8. Initializes animation-related fields: frame array (0x49-0x4B), frame count (0x4C), frame index shorts (0x4D, 0x4F), and timestamp (0x4E). |
| 0x0074A320 | 129 | CSpriteEx__FreeFrameVector | Frees the frame vector buffer (8-byte elements). Handles aligned allocation recovery for large buffers (>0xFFF). Resets begin/end/capacity to 0. |
| 0x0074A4B0 | 150 | CSprite__AdvanceFrame | Advances sprite animation frame based on elapsed time (timeGetTime). Reads frame delay from frame array at offset +0x124, compares against stored timestamp at +0x138. Wraps frame index (+0x134) back to 0 when reaching the end. Updates current frame data at +0x11c. Returns 1 if frame changed, 0 otherwise. |
| 0x0074A550 | 101 | CSprite__AllocatePixelBuffer | Allocates a pixel buffer for a sprite frame. Calls virtual function at vtable+0x18 first. Sets width (param_2) at +0x114 and height (param_3) at +0x118. Allocates width*height*4 bytes and fills with 0xFF (white/opaque). Stores buffer pointer at +0x11c. |
| 0x0074A5C0 | 179 | CSprite__AllocatePixelBufferWithHistory | Allocates a pixel buffer like AllocatePixelBuffer but also pushes buffer pointer into a history vector at +0x128/+0x12C. If vector is full, calls FUN_0074a010 to grow it. Stores buffer pointer at +0x11c. |
| 0x0074A680 | 368 | CSprite__CreateTintedCopy | Creates a tinted/colorized copy of the sprite pixel buffer. Allocates new buffer at +0x120, iterates over pixels from +0x11c. Averages RGB channels and applies tinting based on param_2 mode: 1=general tint (min brightness 0x78), 2=boost red to 200, 3=boost green to 200, 4=boost blue to 200. Pure white pixels with green=0 are kept white. Returns 1 on success, 0 if no source buffer or already tinted. |
| 0x0074A7F0 | 65 | CSprite__GetPixelAt | Returns the pixel color (ARGB) at coordinates (param_2, param_3) from the pixel buffer at +0x11c. Bounds-checks against width (+0x114) and height (+0x118). Returns 0xFF0000 (magenta) if out of bounds. |
| 0x0074AB00 | 2046 | CSprite__LoadImageData | Loads image data from a buffer into sprite pixel arrays. Supports two formats: BMP (magic 0x4D42 / 'BM') with 8-bit indexed or 24-bit color, and a custom RO sprite format (checked against DAT_0111ad68). For 8-bit images, reads palette and deindexes pixels. For 24-bit, reads raw RGB data. Stores width/height at +0x114/+0x118, allocates ARGB pixel buffer at +0x11c. param_4 flag enforces 24x24 size constraint. Outputs debug string on unsupported formats. |
| 0x0074B300 | 2485 | CSprite__LoadGIF | Loads a GIF image (checks 'GIF' magic). Parses global color table, graphic control extensions (transparency, frame delay), image descriptors with local color tables, and application extensions (NETSCAPE for loop count at +0x130). Decompresses LZW-encoded pixel data via lzw_decode. Supports multi-frame GIFs stored in frame vector at +0x124/+0x128. Returns 1 on success, 0 on failure. |
| 0x0074BCC0 | 583 | CSprite__LoadJPEG | Loads a JPEG image using Intel JPEG Library (ijlInit/ijlRead/ijlFree). Reads dimensions, allocates RGB buffer, then converts to ARGB pixel buffer at +0x11c. Pixels that are near-white (R>=0xFE, G<=3, B>=0xFE) are replaced with 0x0A0A0A. Sets +0x110 to 0 on success. Returns 1 on success, 0 on failure. |
| 0x0074BF10 | 993 | CSprite__LoadPNG | Loads a PNG image using libpng. Sets up png_struct with longjmp error handling, creates basic_streambuf wrapper for reading, configures read callback (FUN_0074c9d0). Handles various color types: palette (3), grayscale (0/4), 16-bit reduction. Adds alpha if tRNS chunk present. Converts to ARGB pixel buffer at +0x11c. Sets +0x110 to 1 (has alpha). Returns 1 on success, 0 on failure. |
| 0x0074C300 | 556 | CSprite__LoadTGA | Loads a TGA (Targa) image. Supports type 2 (uncompressed true-color) and type 10 (RLE-compressed true-color). Reads header for dimensions and color depth. Handles 24-bit and 32-bit (with alpha) pixel data. Stores bottom-up scanlines into ARGB buffer at +0x11c. Sets +0x110 to 1 (has alpha). Returns 1 on success, 0 on failure. |
| 0x0074C540 | 34 | CSprite__FreeTintedBuffer | Frees the tinted pixel buffer at +0x120 and nulls the pointer. Called to release memory from CreateTintedCopy. |
| 0x0074C570 | 932 | CSprite__LoadAlphaBitmap | Loads a separate bitmap file as alpha channel data. Opens file via CFileStream, reads image, then merges alpha values into existing pixel buffer at +0x11c. Alpha is computed as average of RGB channels from the alpha image, stored in the high byte of each ARGB pixel. Shows error dialog "Error reading alpha bitmap" on failure. Returns 1 on success, 0 on failure. |
| 0x0074C9F0 | 147 | CSprite__CreateNew | Factory function: allocates a new CSprite object (0x250 bytes), calls constructor chain (FUN_00aeda10 + FUN_0074a250), sets vtable to PTR_FUN_0111ae00. Returns new object or NULL on allocation failure. |
| 0x0074CA90 | 619 | CSprite__LoadFromFile | Loads a sprite from a file path. First tries CPacketStream (GRF archive) handler; if found, allocates pixel buffer with history. Otherwise opens as regular file, reads contents into memory, calls virtual dispatch at +0x110 offset 0x20 to decode format, then falls back to CPacketStream if that fails. Returns 1 on success, 0 on failure. |
| 0x0074CD50 | 112 | CSprite__scalar_deleting_destructor | Scalar deleting destructor for CSprite. Calls FUN_0074ce20 for cleanup, resets vtable to PTR_FUN_0111aabc, then optionally frees 0x250 bytes of memory if bit 0 of param_2 is set. |
| 0x0074CDC0 | 95 | CSprite__constructor | CSprite constructor. Calls base constructor (FUN_00aeda10), sets vtable to PTR_FUN_0111ae00, then calls FUN_0074a250 to initialize sprite-specific fields. |
| 0x0074CE20 | 179 | CSprite__destructor | CSprite destructor. Frees the frame history vector at +0x124/+0x128/+0x12C (offsets 0x49/0x4a/0x4b in dword terms). Resets vtable to base PTR_FUN_0111aabc. |
| 0x0074DB10 | 356 | CModel__CreateNew | Factory function: allocates a new CModel object (0x1B4 bytes). Sets vtable to PTR_FUN_0111aed4. Initializes 9 dwords at +0x150 to zero, JSON vtable at +0x188, index at +0x18C to -1, string/vector fields. Sets float at +0x120 to 10.0f (0x41200000). Returns new object or NULL. |
| 0x0074DC80 | 90 | CModel__LoadFromFile | Loads model data from a file. Opens file, reads 4-byte magic. If magic is 0x4E475247 ('GRGN' / Gravity model format), sets +0x110 to 1 (has content) and calls CActFile__load_header to parse the model data. Returns 1 on success, 0 on failure. |
| 0x0074DD10 | 38 | CModel__scalar_deleting_destructor | Scalar deleting destructor for CModel. Calls CActFile__partial_dtor destructor, optionally frees 0x1B4 bytes if param_2 bit 0 is set. |
| 0x0074E1C0 | 300 | CModel__constructor | CModel constructor. Calls base constructor, sets vtable to PTR_FUN_0111aed4. Initializes 9 dwords at +0x150 to zero (model state), JSON vtable at +0x188, index at +0x18C to -1, string/vector fields. Sets float at +0x120 to 10.0f (default scale), type at +0x110 to 0. |
| 0x0074E390 | 164 | CActFile__partial_dtor | Partial destructor for CActFile. Sets vtable, closes file handle, destroys string, clears internal vectors (4-byte, 36-byte, and another 4-byte). Sets base vtable to CTokenizer. |
| 0x0074E440 | 105 | CActFile__read_5bit_value | Reads a 5-bit packed value at index param_2 from the data buffer at param_1. Handles the case where the 5 bits span a byte boundary by reading from two consecutive bytes. |
| 0x0074E4B0 | 138 | CActFile__decompress_5bit_palette | Decompresses a 5-bit packed palette (0x140 bits = 64 entries of 5 bits each) from param_1 into param_2 as 64 individual bytes. |
| 0x0074E540 | 264 | CActFile__get_frame_data | Gets frame data for a specific frame index. For version > 6, copies 0x100 bytes directly from the frame buffer. For older versions, decompresses four 5-bit palettes (64 entries each) and rearranges them into an interleaved format (RGBA-like). |
| 0x0074E650 | 531 | CActFile__load_header | Loads the ACT file header. Reads version byte, file type, and for type 1 with version > 6, reads dimensions, palette count, frame buffer, and additional data. Handles different data layouts for version 7 (0x100 bytes/frame) vs older (0x10 bytes/frame). Returns 1 on success, 0 on invalid type/version. |
| 0x0074E870 | 738 | CActFile__load_extended_data | Loads extended data for ACT file version >= 8. Reads a 0x18-byte transform matrix, grid dimensions, resizes dword and 0x24-byte vectors. For version 8, reads one dword per cell + 0x18-byte data. For version 9, reads full 0x18-byte records per cell. |
| 0x0074EB60 | 102 | CActFile__write_5bit_value | Writes a 5-bit packed value (param_3, masked to top 5 bits) at bit position param_2*5 in the buffer at param_1. Handles byte boundary spanning. |
| 0x0074EBD0 | 147 | CActFile__compress_5bit_palette | Compresses 64 byte values from param_2 into a 5-bit packed format in param_1. Each byte's top 5 bits are packed sequentially (0x140 total bits = 40 bytes). |
| 0x00750950 | 284 | CRsmModel__clear_all_data | Clears all data from a CRsmModel. Destroys mesh nodes via virtual destructor calls and frees 0xC-byte list nodes. Clears bone name list. Destroys light/volume nodes, freeing 0xE8-byte data blocks and their 0xC-byte list nodes. Resets all counters to 0. |
| 0x00750A70 | 146 | CRsmModel__create | Factory function that creates a CRsmModel object (0x160 bytes). Allocates memory, calls base constructor, sets vtable, zeroes header field at +0x15C. |
| 0x00750B10 | 4958 | CRsmModel__load_from_file_v1 | Loads a RSM (Ragnarok 3D model) file version 1. Reads header magic "GRSM", version, shade type, alpha, ambient color, texture names, root node name, mesh nodes (with vertices, faces, materials, textures, keyframes), bone hierarchy, and light volumes. Handles version differences (v1-v5) for face and volume data formats. Returns 1 on success. |
| 0x00751E70 | 93 | CRsmModel__scalar_deleting_dtor | Scalar deleting destructor for CRsmModel. Calls destructor, optionally frees the 0x160-byte object. |
| 0x00751ED0 | 156 | CRsmModel__create_v2 | Factory function that creates a CRsmModel v2 object (0x164 bytes). Like CRsmModel__create but with an extra field at +0x160 (initialized to 0). |
| 0x00751F70 | 537 | CRsmModel__load_from_file | Loads a RSM model file, dispatching to the correct version loader. Reads header magic "GRSM", version byte, format byte. Dispatches to LoadFromStream_v1/v2/v3 based on format. Sets filename. Returns 1 on success, 0 on failure. |
| 0x00752190 | 93 | CRsmModel_v2__scalar_deleting_dtor | Scalar deleting destructor for CRsmModel v2. Calls destructor, optionally frees the 0x164-byte object. |
| 0x007521F0 | 388 | CRsmMeshNode__create | Factory function for CRsmMeshNode (0x164 bytes). Creates the node with vtable, initializes two linked lists (0xC and 0x20-byte nodes), sets up SSO string buffer, and initializes rendering params (scale=1.0, blend mode=2, alpha=0xFF). |
| 0x00752390 | 4457 | CRsmMeshNode__load_from_stream | Loads a RSM mesh node from a file stream. Large function (4457 bytes) - reads mesh data including vertices, faces, textures, materials, and keyframes for a 3D model node. |
| 0x00753510 | 38 | CRsmMeshNode__scalar_deleting_dtor | Scalar deleting destructor for CRsmMeshNode. Calls mesh node destructor, optionally frees the 0x164-byte object. |
| 0x00753540 | 206 | CGrannyModel__create | Factory function for CGrannyModel (0x3B8 bytes). Creates the object with base constructor, sets vtable, zeroes animation-related fields and resource handles. |
| 0x00753620 | 1238 | CGrannyModel__load_from_file | Loads a Granny model from file. Reads Granny2 format data including meshes, skeletons, and animations. 1238 bytes. |
| 0x00753B00 | 121 | CGrannyModel__scalar_deleting_dtor | Scalar deleting destructor for CGrannyModel. Sets vtable, frees Granny resources if allocated, sets base vtable to CTokenizer, optionally frees the 0x3B8-byte object. |
| 0x00753B80 | 241 | CRsmModel__copy_tree_node | Recursively copies a red-black tree node for the RSM model's bone hierarchy. Allocates 0x20-byte nodes, copies the key data via FUN_00754fc0, and recursively copies left and right subtrees. |
| 0x00753C90 | 169 | CRsmModel__destroy_tree_with_maps | Recursively destroys a tree where each node (0x1C bytes) has an embedded std::map. Destroys the map subtree, frees the map sentinel (0x20 bytes), then frees the node itself. Traverses right subtree recursively, left iteratively. |
| 0x00753D40 | 128 | CRsmModel__destroy_tree_with_strings | Recursively destroys a tree where each node (0x2C bytes) has an embedded std::string. Destroys the string, frees the node. Traverses right subtree recursively, left iteratively. |
| 0x00753DC0 | 131 | CRsmModel__destroy_tree_with_vectors | Recursively destroys a tree where each node (0x20 bytes) has an embedded vector. Frees vector data, then the node. Traverses right subtree recursively, left iteratively. |
| 0x00754C80 | 362 | CRsmModel__bone_map_find_or_insert | Finds or inserts a bone entry in the RSM model's bone name map (red-black tree with int keys). Allocates 0x1C-byte nodes with an embedded std::map (0x20-byte sentinel). Returns iterator and insertion flag. |
| 0x00754DF0 | 415 | CRsmModel__name_map_find_or_insert | Finds or inserts a name entry in the RSM model's name map (red-black tree with std::string keys). Allocates 0x2C-byte nodes. Uses std::_Traits_compare for string comparison. Returns iterator and insertion flag. |
| 0x00754F90 | 37 | CRsmModel__init_linked_list | Initializes a doubly-linked list for CRsmModel. Allocates a 0xC-byte sentinel node and sets both pointers to itself (empty list). Stores in param_1. |
| 0x00754FC0 | 286 | CRsmModel__copy_vector_8byte | Copy-constructs a node containing a DWORD + vector<8-byte>. Copies the DWORD, then deep-copies the vector data (8-byte elements). Handles aligned allocation for large buffers. |
| 0x007550E0 | 332 | CRsmMeshNode__ctor | Constructor for CRsmMeshNode. Calls base constructor, sets vtable, initializes linked lists, tree maps, SSO string, and rendering params (scale=1.0, blend=2, alpha=0xFF). |
| 0x00755230 | 217 | CRsmMeshNode__init_fields | Initializes CRsmMeshNode fields. Sets up two SSO strings (offsets 0, 0x18), creates a linked list (0xC-byte sentinel), zeroes texture/material/animation/rendering fields. |
| 0x00755340 | 154 | CGrannyModel__ctor | Constructor for CGrannyModel. Calls base constructor, sets vtable, zeroes animation/resource fields at various offsets. |
| 0x007553E0 | 372 | CRsmModel__init_base | Initializes the base CRsmModel fields. Calls base init, sets vtable, creates mesh/bone/name tree sentinel nodes, creates volume linked lists, initializes SSO string, sets alpha to 0xFF, creates bone data tree. |
| 0x00755560 | 94 | CRsmModel__ctor | Constructor for CRsmModel. Calls base init, sets vtable to CRsmModel, zeroes field at +0x15C. |
| 0x007555C0 | 104 | CRsmModel_v2__ctor | Constructor for CRsmModel v2. Calls base init, sets vtable to CRsmModel_v2, zeroes fields at +0x15C and +0x160. |
| 0x00755630 | 219 | CRsmMesh__ctor | Constructor for CRsmMesh. Sets vtable, initializes two SSO strings, creates a linked list (0xC-byte sentinel), zeroes texture/material/rendering fields. Sets alpha to 0xFF. |
| 0x007558E0 | 67 | CRsmModel__free_list_node_0xC_a | Frees a 0xC-byte linked list node if the pointer is non-null. |
| 0x00755930 | 67 | CRsmModel__free_list_node_0xC_b | Frees a 0xC-byte linked list node if the pointer is non-null. Duplicate for different allocator context. |
| 0x00755980 | 67 | CRsmModel__free_list_node_0xC_c | Frees a 0xC-byte linked list node if the pointer is non-null. Duplicate for different allocator context. |
| 0x007559D0 | 67 | CRsmModel__free_tree_node_0x1C | Frees a 0x1C-byte tree node if the pointer is non-null. |
| 0x00755A20 | 67 | CRsmModel__free_tree_node_0x2C | Frees a 0x2C-byte tree node if the pointer is non-null. |
| 0x00755A70 | 33 | CRsmMesh__release_texture | Releases a texture resource held by the mesh. If the texture pointer at offset +0x24 is non-null, calls its virtual release method and sets the pointer to null. |
| 0x00755AA0 | 78 | CRsmModel__free_list_node_0xC_d | Frees a 0xC-byte linked list node if non-null. Variant d. |
| 0x00755AF0 | 78 | CRsmModel__free_list_node_0xC_e | Frees a 0xC-byte linked list node if non-null. Variant e. |
| 0x00755B40 | 78 | CRsmModel__free_list_node_0xC_f | Frees a 0xC-byte linked list node if non-null. Variant f. |
| 0x00755BA0 | 76 | CRsmModel__clear_map_tree_0x20 | Clears a std::map tree with 0x20-byte nodes. Destroys subtree then frees the sentinel. |
| 0x00755C00 | 76 | CRsmModel__clear_map_tree_0x1C | Clears a tree of 0x1C-byte nodes with embedded maps. Destroys subtrees recursively then frees the sentinel. |
| 0x00755C60 | 76 | CRsmModel__clear_string_tree_0x2C | Clears a tree of 0x2C-byte nodes with embedded strings. Destroys subtrees recursively then frees the sentinel. |
| 0x00755CC0 | 152 | CRsmModel__destroy_node_with_map | Destroys a single 0x1C-byte node that has an embedded map at offset +0x14. Destroys the map subtree, frees the map sentinel, then frees the node. |
| 0x00755D60 | 113 | CRsmModel__destroy_node_with_string | Destroys a single 0x2C-byte node that has an embedded string. Destroys the string, then frees the node. |
| 0x00755DE0 | 78 | CRsmModel__free_tree_node_0x1C_b | Frees a 0x1C-byte tree node if non-null. Variant b. |
| 0x00755E30 | 78 | CRsmModel__free_tree_node_0x2C_b | Frees a 0x2C-byte tree node if non-null. Variant b. |
| 0x00755E80 | 92 | CRsmMesh__release_texture_b | Releases a texture resource held by the mesh. Variant b - identical logic to release_texture but in different calling context. |
| 0x00755EE0 | 103 | CRsmModel__clear_list_0xC_a | Clears all 0xC-byte nodes from a linked list. Iterates through nodes, frees each, then frees the sentinel. Variant a. |
| 0x00755F50 | 103 | CRsmModel__clear_list_0xC_b | Clears all 0xC-byte nodes from a linked list. Identical to clear_list_0xC_a. Variant b. |
| 0x00755FC0 | 103 | CRsmModel__clear_list_0xC_c | Clears all 0xC-byte nodes from a linked list. Identical to clear_list_0xC_a. Variant c. |
| 0x00756030 | 87 | CRsmModel__clear_map_tree_0x20_b | Clears a std::map tree with 0x20-byte nodes. Destroys subtree then frees sentinel. Variant b. |
| 0x00756090 | 87 | CRsmModel__clear_map_tree_0x1C_b | Clears a tree of 0x1C-byte nodes with embedded maps. Variant b. |
| 0x007560F0 | 87 | CRsmModel__DestroyTree | Destroys the string tree for an RSM model. Calls CRsmModel__destroy_tree_with_strings to recursively destroy child nodes with embedded strings, then frees the root sentinel node (0x2C bytes). |
| 0x00756150 | 112 | CRsmModel__DestroyTextureMap | Destroys the texture map (STL map at offset +4). Calls STL_map_destroy_subtree to free all nodes, then frees the sentinel node (0x20 bytes). |
| 0x007561C0 | 65 | CRsmModel__DestroyName | Destroys the model name STL string. |
| 0x00756480 | 180 | CRsmMeshNode__destructor | Destructor for CRsmMeshNode. Sets vtable PTR_FUN_0111af90, calls CRsmModel__DestroyMeshNodes to free child meshes, destroys STL string, calls helper cleanup, walks and frees a linked list of 0xC-byte nodes, then sets base vtable. |
| 0x00756540 | 315 | CRsmMeshNode__DestroyMeshData | Destroys all mesh data in a node. Frees face array (0x54) using _eh_vector_destructor_iterator_, vertex normals buffer (0x58), vertex positions buffer (0x50), and texture coordinate objects (0x5C) with sub-object cleanup. Destroys linked list at 0x38, and 2 STL strings. |
| 0x007566B0 | 133 | CGrannyModel__FreeGrannyData | Frees Granny3D model data. If model is loaded (offset 0x160 != 0), frees instance, clears 100x20 effect matrix entries at offset 0x280, frees local pose (GrannyFreeLocalPose) and file (GrannyFreeFile). |
| 0x00756740 | 97 | CGrannyModel__destructor | Destructor for CGrannyModel. Sets vtable PTR_FUN_0111afb8, frees Granny resources if loaded (offset 0x9C != 0), then sets base vtable. |
| 0x007567B0 | 289 | CRsmModel__destructor | Destructor for CRsmModel (RSM 3D model). Destroys helper data, STL string, linked list at 0x4B, tree structure at 0x49, another helper, and linked list at 0x45. Sets base vtable. |
| 0x007568E0 | 308 | CRsmMeshNode__DestroyAllData | Full data destruction for an RSM mesh node (0x58 bytes). Destroys vectors, strings, and all sub-objects. |
| 0x00756A20 | 126 | CRsmMesh__destructor | Destructor for CRsmMesh. Sets vtable PTR_FUN_0111aff0, frees 0x14-byte vector, 0x10-byte vector, then calls full mesh data destructor FUN_007568e0. |
| 0x00756AA0 | 192 | CRsmMesh__DestroySubData | Destroys sub-data in an RSM mesh, including vectors and linked lists. |
| 0x00756D60 | 102 | CRsmModel__destroy_texture_name_array | Destroys a counted array of 0x18-byte texture name entries (each containing an embedded STL string) at offset +0x84. Uses _eh_vector_destructor_iterator_ with STL_string_dtor for cleanup, then frees the array memory. |
| 0x00757090 | 38 | CRsmModel__scalar_deleting_destructor | Scalar deleting destructor for CRsmModel (0x15C bytes). Calls destructor then conditionally frees memory. |
| 0x007570C0 | 35 | CRsmMesh__scalar_deleting_destructor | Scalar deleting destructor for CRsmMesh (0x58 bytes). Calls CRsmMeshNode__DestroyAllData to clean up mesh data, then conditionally frees the object memory. |
| 0x007570F0 | 150 | CRsmMesh__scalar_deleting_destructor_98 | Scalar deleting destructor for an RSM mesh/node object (0x98 bytes). Sets vtable pointer, frees two internal vectors (0x14 and 0x10 byte elements), calls CRsmMeshNode__DestroyAllData, then conditionally frees the object. |
| 0x00757190 | 216 | CRsmModelV2__scalar_deleting_destructor | Scalar deleting destructor for a larger RSM model variant (0xB4 bytes). Sets vtable, destroys tree with maps at offset +0xAC, frees three internal vectors, calls CRsmMeshNode__DestroyAllData, then conditionally frees the object. |
| 0x00757270 | 275 | C3dMob__PlayBoneAnimation | Plays a bone animation for a 3D mob model. If a cached animation control exists for (mobIndex, animIndex), activates it. Otherwise, builds the model path (model/3dmob/{name}.gr2 for base, model/3dmob_bone/{id}_{anim}.gr2 for bones), checks file existence, loads via C3dMob__LoadGrannyModel, then calls GrannyPlayControlledAnimation with loop count. |
| 0x00757390 | 1097 | C3dMob__LoadGrannyModel | Loads a Granny .gr2 3D model file for a 3D mob. Verifies Granny SDK version, opens file stream, reads entire file via GrannyReadEntireFileFromMemory, copies filename, instantiates model with GrannyInstantiateModel, creates world pose, sets up mesh bindings (binding, indices, deformers) per mesh, loads skeleton animation from separate file, and creates local pose. 1097 bytes. |
| 0x007577E0 | 105 | CGrannyModel__RebindMeshes | Rebinds all mesh bindings to a new skeleton. Iterates mesh entries at offset 0x270, frees old bindings (GrannyFreeMeshBinding), creates new bindings (GrannyNewMeshBinding) using source's skeleton (param_1+0x3B4) and target skeleton (param_2+0x3B4). Each entry is 0x1C bytes. |
| 0x00757850 | 3759 | CRsmModel__ComputeVertexLighting | Computes per-vertex lighting/colors for an RSM model (3759 bytes). Supports 4 shading modes: mode 0/default = flat color fill, mode 1 = per-face normal dot product with light direction for diffuse+ambient, mode 2 = smooth shading with per-vertex averaged normals using face adjacency groups (30K face limit). Computes cross products for face normals, normalizes them, applies diffuse*light + ambient color clamped to [0,1]. Recursively processes child nodes. |
| 0x00758710 | 842 | CGrannyModel__ComputeScreenBBox | Computes the screen-space bounding box for a Granny model (842 bytes). Applies rotation matrix around Z-axis, transforms model position through two 3x4 matrices, computes distance-based scale factor from camera, projects to screen coordinates using viewport parameters. Returns 1 if the bounding box is within the viewport, 0 if fully outside (frustum culling). |
| 0x00758A60 | 200 | CGrannyModel__InitMeshBindings | Initializes mesh bindings for a Granny model (200 bytes). |
| 0x00758B30 | 427 | CGrannyModel__InitMeshBindingsWithTextures | Initializes mesh bindings for a Granny model including texture lookups (427 bytes). Creates mesh binding, copies indices, sets up deformer for skinned meshes or copies vertices for rigid meshes. Also resolves material textures by matching GrannyGetMaterialTextureByType names against the model's texture name array at +0x264/+0x268. |
| 0x00758CE0 | 339 | CGrannyModel__InstantiateModelWithMeshes | Instantiates a Granny model with all its meshes (339 bytes). Creates model instance via GrannyInstantiateModel, world pose via GrannyNewWorldPose, then iterates all meshes creating bindings, copying indices, and setting up deformers. Tracks max bone count and max deformed vertex buffer size. Similar to InitMeshBindings but without texture resolution. |
| 0x00758E40 | 584 | CGrannyModel__CreateInstance | Creates a Granny model instance with animation control and world pose (584 bytes). |
| 0x00759090 | 365 | CGrannyModel__ConvertTextureToD3DSurface | Converts a Granny texture image to a D3D texture surface (365 bytes). Copies texture via GrannyCopyTextureImage in RGBA8888 format, then swizzles channels (RGB to BGR with alpha handling). If texture has alpha, preserves alpha channel; otherwise sets alpha to 0xFF. Creates the D3D surface via CTextureCache__create_text_surface, then frees temporary buffers. |
| 0x00759200 | 42 | CGrannyModel__AllocBoneArray | Allocates an array of bone entries (param_2 * 0xC bytes) and stores the pointer at offset +4. |
| 0x00759230 | 62 | CGrannyModel__ExtractTextureFromFile | Extracts a texture from a Granny file info structure. Validates that the file has exactly one skeleton and no animation data. Calls CGrannyModel__ConvertTextureToD3DSurface to convert the texture image to a D3D surface. Stores the result in the output pair (file info pointer, texture surface). |
| 0x00759270 | 187 | CGrannyModel__AllocMeshData | Allocates mesh data structures for a Granny model (187 bytes). |
| 0x00759350 | 102 | CGrannyModel__FindBoneByName | Searches the bone linked list at offset 0x118 for a bone matching param_2 name. Walks linked list, compares each bone's embedded STL string using std::_Traits_equal. Returns pointer to matching bone data, or NULL if not found. |
| 0x007593C0 | 102 | CRsmModel__FindMeshNodeByName | Searches the RSM model's mesh node linked list at offset +0x114 for a node matching the given name string. Compares each node's embedded STL string (with SSO check at capacity offset +0x18) using std::_Traits_compare. Returns the matching node's data pointer or 0 if not found. |
| 0x00759430 | 120 | CGrannyModel__FindTextureByMaterial | Finds a texture entry matching a Granny material. Calls _GrannyGetMaterialTextureByType_8 (type=2) to get texture name, then searches the texture array at +0x264 (count) / +0x268 (data, pairs of string+ptr, 8 bytes each) for a matching filename by string comparison. Returns pointer to matching entry or NULL. |
| 0x007594B0 | 151 | CGrannyModel__FreeInstance | Frees a Granny model instance at +0x160. Iterates mesh entries freeing mesh bindings (_GrannyFreeMeshBinding_4), mesh deformers (_GrannyFreeMeshDeformer_4), and vertex buffers. Frees model instance (_GrannyFreeModelInstance_4), world pose (_GrannyFreeWorldPose_4), and mesh array. Nulls the instance pointer. |
| 0x00759550 | 375 | CRsmModel__ForEachMeshNode | Iterates the RSM model's mesh node linked list at offset +0x11C and invokes a std::function callback on each node's data. Uses C++ std::function with vtable calls for invoke (+8), copy (+4), and destroy (+0x10). Handles small-buffer optimization for the function object. |
| 0x007596D0 | 201 | C3dMob__GetBoneModel | Retrieves or loads a 3D mob bone model. Builds path using model/3dmob/{name}.gr2 for base model (animIndex=0) or model/3dmob_bone/{mobId}_{animName}.gr2 for bone animations. Checks file existence, loads via C3dMob__LoadGrannyModel if not cached. Returns the cached model pointer from the mob's animation table, or 0 if not found. |
| 0x007597A0 | 53 | CGrannyModel__GetMeshTriangleCount | Returns the number of triangles in a Granny mesh by dividing the index count by 3. param_2 = mesh index. |
| 0x007597E0 | 56 | CGrannyModel__GetRigidMeshBoneIndex | Checks if a Granny mesh is rigid via GrannyMeshIsRigid. If rigid, returns the bone index at offset +0x10 in the mesh entry. Returns 0 if not rigid. param_2 = mesh index. |
| 0x00759840 | 101 | CGrannyModel__LoadSkeletonFromFile | Loads a Granny skeleton from a .gr2 file. Strips extension from filename, calls load_granny_file to read the GR2, then gets file info via GrannyGetFileInfo. Only supports single-skeleton files. Returns skeleton pointer or 0 on failure. |
| 0x00759ED0 | 3138 | CRsmModel__LoadFromStream_v1 | Loads an RSM model (version 1) from a file stream. Reads header fields (offsets 0x160, 0x14c, 0x150, 0x15c), then loads texture names into a vector, bone names into a linked list, mesh nodes with vertices/faces/normals, and volume boxes. Each mesh node gets materials, face groups, keyframe animations. Calls CMesh__compute_face_and_vertex_normals and CAnimation__load_*_keyframes. |
| 0x0075AB20 | 3516 | CRsmModel__LoadFromStream_v2 | Loads an RSM model (version 2) from a file stream. Similar to v1 but with slightly different vertex/face data format (variable-size face data with dynamic buffer allocation). Reads textures, bones, mesh nodes with materials/faces/vertices/normals, and volume boxes. |
| 0x0075B8E0 | 3631 | CRsmModel__LoadFromStream_v3 | Loads an RSM model (version 3) from a file stream. Extended version that also loads morph keyframes per mesh node (via CAnimation__load_morph_keyframes). Includes variable-size face data like v2. Also handles sub-model references and volume boxes. |
| 0x0075C710 | 517 | CRsmModel__DestroyMeshNodes | Destroys all mesh nodes in an RSM model. Frees the mesh array at offset 0x114, then iterates the linked list at 0x118 freeing each node's materials, vertex/face buffers, texture references, linked list nodes, and string data. |
| 0x0075C920 | 171 | CRsmMeshNode__FreeBuffers | Frees rendering buffers for an RSM mesh node. Releases vertex array destructor at +0x54, vertex data at +0x58, face data at +0x50, and texture reference array at +0x5c (with individual texture release calls). |
| 0x0075C9D0 | 74 | C3dMob__Cleanup | Cleans up a 3D mob model. First calls CGrannyModel__FreeInstance to release the Granny model instance. Then clears the 100x20 animation pointer cache at offset +0x280 (100 mob types x 20 animation slots). Finally frees the Granny local pose at +0x168 and the Granny file handle at +0x150. |
| 0x0075CA20 | 260 | CGrannyModel__FreeResources | Frees all Granny 3D model resources. Releases mesh bindings, mesh deformers, vertex buffers per mesh, then frees the model instance, world pose, mesh array, animation controllers, local pose, Granny file, and the model info struct itself. |
| 0x0075CB30 | 36 | CGrannyModel__GetMeshRenderData_Thunk | Thunk that delegates to CGrannyModel__GetMeshRenderData using the model info at offset +0x270. |
| 0x0075CB60 | 545 | CGrannyModel__GetMeshRenderData | Gets render data for a Granny mesh. For rigid meshes, retrieves world pose composite matrix and returns vertex/index data directly. For skinned meshes, deforms vertices using GrannyDeformVertices. Also handles hair_pivot meshes by copying the transform matrix to the hair pivot object at +0x3b0. Returns vertex buffer pointer or 0 on failure. |
| 0x0075CD90 | 93 | CGrannyModel__FindHairPivotMesh | Searches all meshes in a Granny model for one named "hair_pivot". If found, stores the mesh index in the hair pivot object at +0x3b0 offset +4 and returns 1. Returns 0 if no hair pivot mesh found or no hair pivot object. |
| 0x0075CDF0 | 382 | CRsmModel__LoadBoneTextures | Iterates through the bone name list at offset +0x154 and loads each bone's texture. Copies the string name (with SSO handling), then calls texture lookup/load functions. Associates the loaded texture with each bone. |
| 0x0075CF70 | 29 | CRsmModel__ApplyScaleFactor | Applies a scale factor to a float value. Computes: *param_1 = param_2 + param_2/DAT_010df490. Used to scale model dimensions. |
| 0x0075CF90 | 33 | CRsmModel__SetScaledAnimSpeed | Sets the animation speed at offset +0x110 using a scale factor: speed = param_2 + param_2/DAT_010df490. |
| 0x0075CFC0 | 134 | CGrannyModel__SampleAndBuildPose | Samples Granny model animations and builds the world pose. Sets model clock, samples animations into local pose, builds world pose from skeleton, and frees completed controls. Returns world pose pointer or 0 if model info is null. |
| 0x0075D6A0 | 125 | CRsmModel__ClearBoneNameList | Clears the bone name linked list. Iterates through nodes, destroys each string, frees the 0x20-byte node, then resets the sentinel to point to itself with count=0. |
| 0x0075D730 | 158 | C3dMob__Create | Creates a new C3dMob object. Allocates 0x910 bytes, initializes base class, sets vtable to PTR_FUN_0111b29c, and zeroes the 0x800-byte bone model cache at offset +0x44*4. |
| 0x0075DB00 | 94 | C3dMob__ScalarDestructor | Scalar deleting destructor for C3dMob. Sets vtable to base class, conditionally frees the 0x910 byte object if param_2 & 1. |
| 0x0075DB60 | 106 | C3dMob__Init | Initializes a C3dMob object in-place. Calls base class init, sets vtable to PTR_FUN_0111b29c, and zeroes the 0x800-byte bone model cache at offset +0x44*4. |
| 0x0075DC00 | 66 | CSkybox__InitFaceData | Initializes skybox face UV/vertex data arrays. Zeroes 12 face entries (each with 3 vectors at stride 40 bytes), then zeroes three final fields at +0x314/318/31c. |
| 0x0075DC50 | 449 | CSkybox__InitVertices | Initializes skybox vertices with default positions and colors. Sets up 10 vertices with position/color data (ARGB 0xFF000000 = opaque black). Then sets the 8 corner vertices of a box (-1250 to 1250 range) and 2 special vertices, before calling face initialization and UV setup. |
| 0x0075DE20 | 392 | CSkybox__Create | Creates and initializes a skybox. Loads the "skybox.rsm" model, creates a CModelInstance (v1 or v2 based on model version), sets scale to 30.0, sets initial position to origin, sets opacity to 0.1, and initializes UV coordinates. Stores model handle and instance pointer. |
| 0x0075DFF0 | 25 | CSkybox__DestroyModelInstance | Destroys the skybox model instance by calling its virtual destructor at vfunc[0] with delete flag, then nulls the instance pointer at offset +4. |
| 0x0075E010 | 1312 | CSkybox__FrustumCullTest | Performs frustum culling test for the skybox. Builds 6 frustum planes from the given matrix parameters and tests the skybox box against each plane. Returns 1 if the skybox is inside the frustum (visible), 0 if culled. |
| 0x0075E530 | 1252 | CSkybox__InitLensFlareData | Initializes lens flare configuration data for the skybox. Sets up 12 flare elements with properties: type (1-4), position along axis, scale, RGB color values (0-1 range). Last step converts RGB floats to packed ARGB integer colors (0xFFRRGGBB). |
| 0x0075EA20 | 672 | CSkybox__UpdateVertexPositions | Updates skybox vertex positions based on sun/light direction. Computes camera-relative position, calculates direction vectors and transforms, then updates all 12 vertex positions and UV scales using the computed orientation matrix. |
| 0x0075ECC0 | 960 | CSkybox__RenderLensFlares | Renders lens flare effects for the skybox. For each of 12 flare elements, checks dot product of sun direction with view direction. If facing camera, projects world position to screen, creates a billboard quad, loads flare texture ("effect/flare{n}.bmp"), and enqueues for rendering with alpha blending (render type 5). |
| 0x0075F080 | 2454 | CSkybox__RenderSkyQuads | Renders the skybox quads. Applies rotation animation, transforms vertices through view/projection matrices, then enqueues up to 6 textured sky face quads for rendering based on sun angle. Also renders a ground quad and calls UpdateVertexPositions and RenderLensFlares. |
| 0x0075FA20 | 1029 | CSkybox__RenderSkyQuads_Indoor | Renders the skybox for indoor/dungeon scenes. Simpler version of RenderSkyQuads: positions model at given coordinates with Y offset, applies rotation, transforms 2 special vertices, renders one ground quad with gradient colors, then calls UpdateVertexPositions and RenderLensFlares. |
| 0x00761940 | 499 | CRswFile__create_instance | Allocates CRswFile (0x1D0 bytes), inits 3 linked lists for models/lights/sounds and 3 std::strings |
| 0x00761B40 | 378 | CRswFile__clear_all_resources | Frees all model, light, and sound entries from the RSW linked lists |
| 0x00761CC0 | 3252 | CRswFile__load_from_file | Loads RSW map resource file, parses versioned header, models, lights, sounds, and effect entries |
| 0x00763010 | 73 | CRswFile__compare_version | Compares RSW file version (major.minor) against required version, returns comparison result |
| 0x00763060 | 443 | CRswFile__constructor | CRswFile constructor, inits base class, 3 linked lists, 3 strings, and zeroes all resource fields |
| 0x00763220 | 67 | CRswFile__free_model_node | Frees a single linked list node (0xC bytes) for model entry if non-null |
| 0x00763270 | 67 | CRswFile__free_light_node | Frees a single linked list node (0xC bytes) for light entry if non-null |
| 0x007632C0 | 67 | CRswFile__free_sound_node | Frees a single linked list node (0xC bytes) for sound entry if non-null |
| 0x00763310 | 78 | CRswFile__free_effect_node_a | Frees a single linked list node (0xC bytes) for effect data |
| 0x00763360 | 78 | CRswFile__free_effect_node_b | Frees a single linked list node (0xC bytes) for secondary effect data |
| 0x007633B0 | 78 | CRswFile__free_effect_node_c | Frees a single linked list node (0xC bytes) for tertiary effect data |
| 0x00763400 | 103 | CRswFile__destroy_model_list | Destroys entire model linked list, freeing all nodes and the sentinel |
| 0x00763470 | 103 | CRswFile__destroy_light_list | Destroys entire light linked list, freeing all nodes and the sentinel |
| 0x007634E0 | 103 | CRswFile__destroy_sound_list | Destroys entire sound linked list, freeing all nodes and the sentinel |
| 0x00763550 | 305 | CRswFile__destructor | CRswFile destructor, destroys all 3 linked lists and 3 strings, resets vtable to base |
| 0x00763690 | 165 | CRswFile__add_sound_entry | Adds a sound entry to the RSW sound linked list, throws if list at max capacity |
| 0x00763740 | 3 | CRswFile__validate_version_stub | Stub that always returns 0 (validation always passes) |
| 0x007B08D0 | 39 | CActRes__FreeActionData | Frees action data at offset +0x18 if non-null. Calls cleanup function, frees the 0x14-byte struct, and nulls the pointer. |
| 0x007B0930 | 170 | CActFrame__ctor | Constructs an action frame object. Copies vtable from param_3, zeroes fields 1-8, initializes SSO string (capacity 0xf), then allocates a 0x2c-byte linked list sentinel node. |
| 0x007B0A10 | 157 | CActFrame__DestroyRange | Destroys a range of action frames [param_1, param_2) with 0x84-byte stride. For each frame, destroys 5 members (4 strings and a packet parser construct) in reverse order. |
| 0x007B19B0 | 143 | CActFrame__CopyRange | Copies a range of action frames [param_1, param_2) to destination param_3. Copies each 0x84-byte frame, then destroys any leftover frames at the destination. Returns end pointer of destination. |
| 0x007B1A40 | 397 | CActFrame__move_construct | Move-constructs a CActFrame (0x84 bytes). Copies vtable, 4 string fields (with SSO move semantics - transfers buffer, resets source to empty SSO), numeric fields, and a vector at +0x5C. |
| 0x007B1BD0 | 418 | CActFrame__copy_construct | Copy-constructs a CActFrame. Copy-constructs 3 SSO strings, copies numeric fields, deep-copies a vector of 0x20-byte elements (each containing a string + 2 ints), then copies final fields and a 4th string. |
| 0x007B1D80 | 221 | CActAction__ctor | Constructs a CActAction object. Initializes 4 SSO strings (capacity 0xf each), sets 3 index fields to -1, and zeroes various state fields. |
| 0x007B2B10 | 166 | CActRes__FreeActionFrameVector | Frees a vector of action frames (0x84 bytes each). Calls cleanup on each frame first, then frees the buffer and zeroes the vector. |
| 0x00AB90A0 | 99 | CRsmModel__set_frame_all_children | Sets animation frame on all children in the node list at offset 0x170. Scales the input frame by speed factor (0x178) divided by DAT_010db1e0. Iterates children calling virtual set_frame (vfunc 8). Sets dirty flag at 0x94. |
| 0x00AB94D0 | 373 | CRsmModel__clone_child_parts | Clones all child parts from source list into this model's list at offset 0x15C. For each source part, allocates 0xE8 bytes, zeroes it, copies all 0x3A dwords from source. Creates 0xC-byte linked list nodes. Increments count at offset 0x160. |
| 0x00AB9660 | 3776 | CRsmModel__compute_bounding_box_and_normals | Computes RSM model's world-space bounding box and surface normals. Builds model transform from position, scale, and rotation. Transforms all 8 AABB corners to world space, tracking min/max. Computes center point, half-extents, and 3 normalized axis vectors (offsets 0xB0-0xD0). Iterates child parts computing per-part bounding boxes. Sets dirty flag. |
| 0x00ABB890 | 223 | CRsmModel__rebuild_transform_matrix | Rebuilds the model's world transform matrix. Sets translation from offsets 0x28-0x30, applies view transform (scale from 0x1C-0x24), then rotation Y/X/Z from euler angles at 0x10-0x18 (converted deg to rad). Multiplies with local matrix at offset 4. Computes inverse at offset 0x34. Clears dirty flag at 0x94. |
| 0x00ABD640 | 386 | CParticleEmitter__ctor | CParticleEmitter constructor. Calls CParticleEmitterBase__ctor first, then overrides vtable to PTR_FUN_011591f8. Initializes extended particle fields: gravity, emission timing, lifetime, blending mode, alpha, and various flags. Sets defaults: speed=10.0, maxCount=3, lifetime=50, blendMode=2, alpha=1.0. |
| 0x00ABD7D0 | 208 | CParticleEmitterBase__ctor | CParticleEmitterBase constructor. Sets vtable to PTR_FUN_011591a4. Initializes base emitter properties: position/velocity zeroed, speed=10.0 (0x41200000), maxCount=3, lifetime=50, blendMode=2, alpha=1.0. Does NOT set derived class fields. |
| 0x00ABD8A0 | 66 | CParticle__init_defaults | Initializes particle structure defaults. Zeroes 4 groups of 3 floats (position, velocity, acceleration, etc. at offset 0x10). Zeroes tail fields (0x40-0x48). Sets color to opaque white (0xFFFF at offset 0x51, 0xFF at 0x50). |
| 0x00ABD8F0 | 60 | CParticleVertex__init_defaults | Initializes particle vertex structure. Zeroes 4 groups of 3 fields at 32-byte stride (offset 8). Zeroes fields at 0x84 and 0x94. Used for particle render vertex data. |
| 0x00ABD930 | 110 | CParticleGroup__ctor | CParticleGroup constructor. Zeroes all 6 dwords (24 bytes). Simple structure with no vtable. |
| 0x00ABDCA0 | 116 | CParticleEmitterBase__dtor_body | CParticleEmitterBase destructor body. Sets vtable back to base class, calls clear_textures and deallocates 4-byte vector, then frees 56-byte vector buffer. |
| 0x00ABDD20 | 95 | CParticleEmitterBase__dtor_cleanup | CParticleEmitterBase destructor cleanup variant. Same cleanup as dtor_body (clear_textures, deallocate 4-byte vector, free 56-byte buffer) but without setting vtable. Used as partial destructor path. |
| 0x00ABDD80 | 220 | CParticleEmitter__scalar_deleting_dtor | CParticleEmitter scalar deleting destructor. Frees 5 vectors (36-byte, 4-byte, 84-byte, 12-byte, 156-byte), then runs base destructor cleanup. Frees 0xAC bytes if bit 0 set. |
| 0x00ABDE60 | 141 | CParticleEmitterBase__scalar_deleting_dtor | CParticleEmitterBase scalar deleting destructor. Sets vtable, runs cleanup (clear_textures, deallocate 4-byte vector, free 56-byte buffer). Frees 100 bytes if bit 0 of param set. |
| 0x00ABDEF0 | 7032 | CParticleEmitter__init_and_update | Initializes and updates particle emitter. 7K bytes. Sets up particle vertices with defaults, loads animation frames from ACT file, calculates sqrt distances. No callers (likely virtual/callback). |
| 0x00AC0200 | 334 | CParticleEmitterBase__resize_grid | Resizes the particle emitter's grid. Sets dimensions (offsets 2, 3). Resizes 84-byte particle vector to width*height elements (initializing new via CParticle__init_defaults). Resizes 12-byte vector to width*height*4 elements. Resets counters at offsets 0x16-0x17. |
| 0x00AC0360 | 1580 | CParticleEmitterBase__load_frames_from_act | Loads particle frames from ACT file data. Resizes 56-byte frame vector to frame count. For each 1024-frame block, reads frame data via CActFile__get_frame_data, computes UV coordinates in 256x256 texture atlas (8x8 sprites per frame). Creates texture via CTextureCache__create_text_surface and stores in pointer vector. Links textures to frames. |
| 0x00AC3040 | 58 | CParticleEmitterBase__clear_textures | Clears particle emitter textures. Resets end pointer to begin (offset 1 = 0). Iterates texture pointer vector (offsets 3-4) in reverse, calling virtual destructors on each texture object. Pops all entries. |
| 0x00AC6A90 | 110 | CAnimation__destroy_tree_node_1c | Destructor for an animation-related tree node. First calls CAnimation__interpolate_position on the node's data (at offset+0x10), then frees the 0x1C-byte node. SEH-wrapped with scope guard. |
| 0x00ADDAB0 | 132 | CRsmObjMgr__ctor | CRsmObjMgr constructor. Sets vtable to PTR_FUN_01159a20, initializes a 0x28-byte red-black tree sentinel node (self-referencing circular structure with color flags). Sets initial state flag at offset +4 to 1. |
| 0x00ADDD30 | 89 | CRsmObj__set_vtable_and_cleanup | Sets object vtable at offset+4 to PTR_FUN_01159a18 and calls json cleanup function. Used during destruction of RSM objects. |
| 0x00ADDD90 | 108 | CRsmObjMgr__dtor | CRsmObjMgr destructor. Resets vtable to PTR_FUN_01159a20, recursively destroys all nodes in the 0x28-byte red-black tree at offset+8, and frees the sentinel. |
| 0x00ADDE00 | 74 | CRsmObj__dtor | CRsmObj destructor. Resets vtable to PTR_FUN_01159a18 and calls json cleanup function. |
| 0x00ADDE50 | 133 | CRsmObjMgr__scalar_deleting_dtor | CRsmObjMgr scalar deleting destructor. Destroys tree and sentinel, conditionally frees the 0x10-byte object if bit 0 of param_2 is set. |
| 0x00ADDEE0 | 99 | CRsmObj__scalar_deleting_dtor | CRsmObj scalar deleting destructor. Resets vtable, calls cleanup, conditionally frees the 0x14-byte object if bit 0 of param_2 is set. |
| 0x00ADDF50 | 481 | CRsmObjMgr__insert_or_update_entry | Inserts a new entry into the RSM object manager's red-black tree if the key (param_2) doesn't exist. Creates a 0x28-byte tree node with key, vtable, size param, and associated vector data. Uses rbtree_lower_bound to check for existing key before inserting. |
| 0x00ADE140 | 104 | CRsmObjMgr__add_effect_to_entry | Adds an effect ID (param_3) to an existing entry in the RSM object tree, looked up by key (param_2). Appends to the entry's vector at offset 0x1C-0x20. Does nothing if key not found or tree is empty. |
| 0x00ADE510 | 446 | CRsmObjMgr__apply_effects_to_entity | Applies champion/special monster effects to a game entity. Looks up the monster ID (param_2) in the RSM obj tree, checks if the entity (param_3) has champion status. For champion entities, tries to load and apply each effect via FUN_00b25750/FUN_00b24a50. For non-champion, sends effect packet (opcode 0x6D) for each associated effect ID. Returns -1. |
| 0x00ADE9D0 | 78 | CRsmObjMgr__get_entry_size | Gets the size value (float at offset 0x18) from an entry in the RSM object tree looked up by key (param_2). Returns 0 if not found or tree is empty. |
| 0x00ADEA20 | 77 | CRsmObjMgr__has_entry | Checks if an entry exists in the RSM object tree for the given key (param_2). Returns 1 if found, 0 if not found or tree is empty. |
| 0x00B21070 | 120 | CParticleEffect__create | Factory function: allocates 0x138 bytes, calls CParticleEffect__constructor. Returns new object or 0 on allocation failure. |
| 0x00CA82E0 | 186 | CSprite__ctor | Constructs CSprite. Calls CSprite__ctor_base, sets vtable to CSprite, creates linked list sentinel (0xC bytes), initializes animation state and rendering fields. |
| 0x00CA8730 | 264 | CSprite__ctor_base | Base CSprite constructor. Initializes CGameObject (with unique ID), sets CSprite vtable, initializes STL string for name, creates 0x20-byte RB-tree sentinel, loads NPC sprite and state. |
| 0x00CA8840 | 67 | CSprite__free_linked_list_node | Frees a 0xC-byte linked list sentinel node of CSprite if it exists. |
| 0x00CA8890 | 67 | CSprite__free_linked_list_node_variant | Variant of CSprite linked list node free. Frees 0xC-byte sentinel if exists. |
| 0x00CA8930 | 78 | CSprite__free_action_list_sentinel | Frees the 0xC-byte action list sentinel node of CSprite if it exists. |
| 0x00CA8980 | 78 | CSprite__free_linked_list_sentinel_alt | Alt variant of CSprite linked list sentinel free. Frees 0xC-byte sentinel if exists. |
| 0x00CA8A20 | 111 | CSprite__destroy_rb_tree_and_sentinel | Destroys all nodes in CSprite's 0x20-byte RB-tree (action map) and frees the sentinel node. |
| 0x00CA8BF0 | 65 | CSprite__destroy_rb_tree_wrapper | Wrapper that calls CSprite__destroy_rb_tree_and_sentinel to clean up the sprite's RB-tree. |
| 0x00CA8C40 | 291 | CSprite__dtor | Destructor for CSprite. Sets vtable, detaches all attached game objects (calls virtual method 0x40 with detach flag 0x18), destroys the linked list, clears child object references, calls cleanup. |
| 0x00CA8EE0 | 86 | CSprite__action_map_dtor | Destructor for CSprite's action map sub-object. Sets vtable to action map vtable, destroys the 0x20-byte RB-tree and sentinel. |
| 0x00CA8F90 | 165 | CSprite__dtor_base | Base destructor for CSprite. Sets vtable, releases sprite/act resources, destroys action map RB-tree, destroys STL string name, resets to CGameObject vtable. |
| 0x00CA90A0 | 38 | CSprite__scalar_deleting_dtor | Scalar deleting destructor for CSprite. Calls CSprite__dtor, frees 0x158 bytes if flag bit 0 set. |
| 0x00CA9260 | 111 | CSprite__action_map_scalar_deleting_dtor | Scalar deleting destructor for CSprite's action map. Sets vtable, destroys RB-tree+sentinel, frees 0xC bytes if flag bit 0 set. |
| 0x00CA9340 | 38 | CSprite__base_scalar_deleting_dtor | Scalar deleting destructor for CSprite base variant. Calls CSprite__dtor_base, frees 0x138 bytes if flag bit 0 set. |
| 0x00CA93D0 | 83 | CSprite__accumulate_distance | Accumulates distance traveled by a sprite. Calculates 2D distance (X/Z) between current position and given point using sqrt, adds to running total at offset 0x240. |
| 0x00CA9470 | 182 | CSprite__calculate_velocity_vector | Calculates a 3D velocity vector from sprite position toward target point. Normalizes direction using sqrt of XZ then XYZ distance, scales by given speed. Outputs X/Y/Z components to float[3]. |
| 0x00CA9530 | 71 | CSprite__set_shadow_offset_from_direction | Sets shadow X/Z offset based on sprite direction angle and shadow distance. Uses normalize and cross product of the direction for perpendicular shadow placement. |
| 0x00CA9610 | 167 | CSprite__set_facing_toward_point | Sets sprite facing direction toward a target XZ point. Calculates angle via atan2, converts to game degrees, stores at offset 0x4C. Skips if at same position. |
| 0x00CA96C0 | 53 | CSprite__calculate_distance_2d | Calculates 2D (XZ) distance from sprite to target point using sqrt. Result not stored (likely used by caller). |
| 0x00CA9700 | 103 | CSprite__calculate_distance_3d | Calculates 3D distance from sprite to target point (XYZ). Two-step sqrt: first XZ, then combined with Y. |
| 0x00CA9770 | 1704 | CSprite__build_sprite_render_params | Builds sprite render parameters for a single frame. Calculates screen position from world coords, applies perspective depth, handles mirror/flip flags, computes Z-order, applies alpha/color based on entity flags (transparency, quake effect), handles ground light sampling. Returns 0 if off-screen, 1 if visible. |
| 0x00CA9E50 | 590 | CSprite__render_shadow_quads | Renders 4 shadow quads around a sprite when entity has shadow flag (0x1000). Calculates shadow offset based on animation frame, fades alpha by distance (30 - frame), submits quads in 4 directions (left, right, up, down) to render queue. |
| 0x00CAA0A0 | 321 | CSprite__render_wave_distortion_effect | Renders a wave distortion effect on a sprite (flag 0x8). Oscillates vertices using sine table, creates expanding/contracting quad. Increments phase counter (wraps at 180), submits as render type 5. |
| 0x00CAA1F0 | 232 | CSprite__apply_random_vertex_jitter | Applies random vertex jitter to a sprite quad (flag 0x2000). Generates 4 random offsets scaled by perspective, adds to quad corner positions. Used for shaking/vibration effects. |
| 0x00CAA2E0 | 482 | CSprite__render_afterimage_trail | Renders afterimage/trail effect (flag 0x200). Draws 5 progressively larger/faded copies of the sprite at intervals, each with reducing alpha. Phase counter wraps at 200. Submits to render queue. |
| 0x00CC5080 | 499 | CGrannyModel__ctor_00cc5080 | Constructor for CGrannyModel (Granny 3D model wrapper). Calls CGameObject__ctor_base, loads model resource by path, instantiates Granny model, allocates mesh triangle data per mesh, gets system time for animation, reads texture names. Initializes rendering state arrays and Granny animation controls. |
| 0x00CC5390 | 179 | CGrannyModel__dtor | Destructor for CGrannyModel. Frees Granny animation control, destroys 30 mesh objects and their triangle data, frees Granny model instance, chains to base class destructor. |
| 0x00CC5580 | 203 | CGrannyModel__scalar_deleting_dtor_00cc5580 | Scalar deleting destructor for CGrannyModel. Frees Granny animation control, destroys 30 mesh objects and triangle data, frees model instance, chains to base dtor. If param_2 & 1, deallocates the 600-byte object. |
| 0x00CC57A0 | 108 | CGrannyModel__destroy_meshes_and_instance | Frees all mesh data for a CGrannyModel. Frees Granny animation control, iterates through 30 mesh slots destroying mesh objects (0x28 bytes) and triangle data (0x20 bytes), then frees the Granny model instance. |
| 0x00CC5810 | 411 | CGrannyModel__reload_resource | Reloads a CGrannyModel's resource from its stored path. Clears all 30 mesh/bone data slots, reloads the resource via CResourceMgr, re-instantiates the Granny model, re-allocates mesh triangle data for each mesh, re-reads system time for animation, and re-reads texture names. |
| 0x00CC5C00 | 105 | CGrannyModel__advance_animation | Advances Granny model animation. Gets system time, computes elapsed seconds (doubled), accumulates into animation clock, calls SampleAndBuildPose with the current model instance. Simpler version without control state management. |
| 0x00CC5EE0 | 1546 | CGrannyModel__render_meshes | Renders all meshes of a CGrannyModel. Gets system time, advances animation, computes facing direction and terrain height for ground alignment. Sets up rotation matrices (X and Y) from facing angle, projects world to screen, iterates all meshes: gets render data, transforms vertices through matrices, projects to screen with depth, classifies and enqueues for rendering. |
| 0x00CC8200 | 44 | CAnimationBlend__init | Initializes an animation blend structure. Sets blend target (param_2), clears current value to 0, sets speed to max(param_3, 1), and clears elapsed time to 0. |
| 0x00CCD7B0 | 202 | SpriteActionNode__copy_ctor | Copy constructor for SpriteActionNode. Sets vtable to SpriteActionNode's, copy-constructs 6 std::string members from source (at offsets +0x4, +0x1c, +0x34, +0x4c, +0x64, +0x7c), then copies dword at +0x94 and byte at +0x98. |
| 0x00D5F3E0 | 480 | SpriteAction__store_full_node_strings | Stores multiple string parameters for a sprite action node. Copies param_2 through param_5 into STL strings, then calls SpriteAction__insert_full_node_data with param_1 (server ID). Also stores param_6 into a global if param_1 matches local server ID. |
| 0x00E4AC70 | 93 | CSprite__scalar_deleting_dtor_00e4ac70 | Scalar deleting destructor for CSprite base. Calls CSprite__dtor, frees 0x178 bytes if bit 0 of param_2 set. |
No function here matches that. Search all 47,061 functions instead.