Back to legacygamers.net
WARPGATE

Game Sprites

CSprite, CSpriteEx, CActFile, CRsmModel, CGrannyModel, CAnimation, CSkybox, CShadowDecal, CFootprint, CParticle

Functions 485Code 169 KBAddresses 0x0053FFE0 to 0x00E4AC70Group Game Logic
485 functions
AddressSizeNameDescription
0x0053FFE0160CAnimation__push_keyframe_quat_AConverts angle to quaternion (sin/cos) and pushes 20-byte keyframe onto vector
0x00540080160CAnimation__push_keyframe_quat_BConverts angle to quaternion (sin/cos) and pushes 20-byte keyframe onto vector variant B
0x00540120192CAnimation__push_keyframe_quat_32byteConverts angle to quaternion and pushes 32-byte keyframe with position+rotation data
0x0054024087CAnimation__add_keyframe_to_mapInserts keyframe into map by int key, then pushes 8-byte value into map entry's vector
0x00540370291CAnimation__interpolate_translationInterpolates translation keyframes at given time, outputs 3x4 matrix with identity+translation
0x005404A0457CAnimation__interpolate_positionLinearly interpolates position keyframes and writes result to param_4 offset 0x24
0x00540670297CAnimation__interpolate_rotationInterpolates quaternion rotation keyframes using slerp, outputs rotation matrix
0x005407A01097CAnimation__interpolate_rotation_fullFull quaternion slerp interpolation with dot product sign fix, multiplies result with parent matrix
0x00540BF0108CAnimation__interpolate_scale_singleHandles single-keyframe scale: outputs identity matrix with diagonal scale or identity if empty
0x00540C60563CAnimation__interpolate_scaleLinearly interpolates scale keyframes and builds diagonal scale matrix
0x00540EA0547CAnimation__interpolate_morph_keyframesInterpolates morph target keyframes from map, linearly blends between adjacent frames
0x005410D0131CAnimation__load_translation_keyframesReads translation keyframes from file: count + 16-byte entries (time,x,y,z) into vector
0x00541160115CAnimation__load_rotation_keyframesReads rotation keyframes from file: count + 20-byte entries (time,qx,qy,qz,qw) into vector
0x005411E0101CAnimation__load_scale_keyframesReads scale keyframes from file: count + 20-byte entries (time,sx,sy,sz) into vector
0x00541250133CAnimation__load_quaternion_keyframesReads quaternion keyframes with default identity quat initialization before reading
0x005412E0103CAnimation__load_combined_keyframesReads combined position+rotation keyframes: count + 32-byte entries into vector
0x00541350115CAnimation__load_rotation_keyframes_BReads rotation keyframes variant B from file, same 20-byte format as load_rotation_keyframes
0x005413D0422CAnimation__load_morph_keyframesReads morph keyframes from file into map structure: outer count, inner key+count+8byte pairs
0x00541610134CAnimation__save_keyframes_20byteWrites count + all 20-byte keyframe elements to file stream
0x005416A0134CAnimation__save_keyframes_20byte_BWrites count + all 20-byte keyframe elements to file stream variant B
0x00541730134CAnimation__save_keyframes_20byte_CWrites count + all 20-byte keyframe elements to file stream variant C
0x005417C0169CAnimation__save_morph_keyframesWrites morph keyframe map to file: count, then per-node key+count+data via tree traversal
0x00541CD0482CAnimation__slerp_position_and_rotationInterpolates combined position (lerp) and rotation (slerp) keyframe with extra spin
0x00551E3068CMesh__dtor_clear_vertex_dataCMesh destructor helper: clears vertex data by calling vector clear and free
0x00551E80254CMesh__dtor_free_all_buffersCMesh 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.
0x00551F8068CMesh__dtor_clear_index_dataCMesh destructor helper: clears index data by calling vector clear and free
0x00551FD01655CMesh__compute_face_and_vertex_normalsComputes face normals via cross product, then averages adjacent face normals into per-vertex normals
0x005BEA30268SpriteActionNode__constructConstructs tree node with vtable, int field, and 6 SSO strings plus byte flag
0x005BEB40141SpriteActionNode__destructDestructs tree node: destroys 6 SSO strings with proper unwind ordering
0x005BEBD0165SpriteActionNode__scalar_deleting_destructorScalar deleting destructor for tree node; optionally frees 0x9C-byte block
0x005BEC80149SpriteActionNode__clear_all_stringsClears 6 SSO strings in node by zeroing length and first char
0x005BED80134SpriteAction__destroy_tree_recursiveRecursively destroys red-black tree nodes: traverses subtrees, frees 0xB0 nodes
0x005BEE70230SpriteAction__grow_buffer_and_fillGrows backing buffer with 1.5x growth factor, fills new space with byte value
0x005BF080245SpriteAction__construct_managerConstructs sprite action manager: creates RB-tree sentinel, two linked lists
0x005BF18065SpriteAction__destroy_string_wrapperWrapper that destroys a single STL string with stack cookie check
0x005BF1D070SpriteAction__free_sentinel_nodeFrees the 0xB0-byte sentinel node if non-null
0x005BF22079SpriteAction__destroy_tree_and_sentinelDestroys entire RB-tree recursively starting from root, frees sentinel
0x005BF280119SpriteAction__destruct_and_free_sentinelDestructs sentinel node object, then frees its 0xB0-byte block
0x005BF30081SpriteAction__free_node_memoryFrees 0xB0-byte tree node memory if pointer at offset+4 is non-null
0x005BF36077SpriteAction__clear_list_a_and_freeClears linked list A, frees 8-byte head node, resets pointer to null
0x005BF3C077SpriteAction__clear_list_b_and_freeClears linked list B, frees 8-byte head node, resets pointer to null
0x005BF42090SpriteAction__destroy_tree_and_freeDestroys RB-tree from root and frees sentinel 0xB0 block
0x005BF48068SpriteAction__destruct_node_wrapper_aThin wrapper calling SpriteActionNode destructor with cookie check
0x005BF4D068SpriteAction__destruct_node_wrapper_bThin wrapper calling SpriteActionNode destructor with cookie check
0x005BF520184SpriteAction__destruct_managerDestructs sprite action manager: clears lists, destroys tree, frees allocations
0x005BF5E0243SpriteAction__find_or_insert_nodeFinds existing tree node by key or inserts new 0xB0 node into RB-tree
0x005BF740205SpriteAction__scalar_deleting_destructorScalar deleting destructor for action manager; optionally frees 0x34 block
0x005BF81092SpriteAction__expire_old_entriesRemoves entries older than 10 seconds via timeGetTime comparison
0x005BF87019SpriteAction__forward_to_processForwards call to sprite processing function at 005c1c50
0x005BF890462SpriteAction__find_node_by_stringSearches tree nodes comparing string field; returns key value or 0
0x005BFA60687SpriteAction__serialize_tree_to_bufferSerializes tree nodes to flat buffer: count + key + 4 strings per node
0x005BFD10470SpriteAction__lookup_or_create_cachedLooks up key in tree/queue; adds to queue if not found
0x005BFEF0100SpriteAction__insert_and_copy_stringFinds or inserts node by key, copies string data to offset +4
0x005BFF60229SpriteAction__dequeue_pending_entryDequeues front entry from circular queue, validates against tree
0x005C005056SpriteAction__clear_all_dataClears all data: destroys tree, resets sentinel, empties both linked lists
0x005C0090242SpriteAction__add_to_circular_queueAdds integer key to circular queue with growing bucket table if full
0x005C019057SpriteAction__contains_keyReturns true if the given key exists in the RB-tree
0x005C01D0467SpriteAction__process_pending_requestsExpires old entries, dequeues pending, sends packet 0x368, timestamps results
0x005C03B0507SpriteAction__insert_full_node_dataFinds/inserts node by key, copies 6 string fields and int value, marks valid
0x005C05B02216SpriteAction__parse_action_dataParses binary action data into tree: reads 4 string fields per entry
0x005C0E60147SpriteAction__set_node_string_field_0Finds or inserts node by key, copies string to field at offset +0x04
0x005C0F00147SpriteAction__set_node_string_field_3Finds or inserts node by key, copies string to field at offset +0x4C
0x005C0FA0147SpriteAction__set_node_string_field_4Finds or inserts node by key, copies string to field at offset +0x64
0x005C1040123SpriteAction__allocate_bufferAllocates aligned byte buffer for blocks over 0x1000, sets begin/end/capacity
0x005C10C085SpriteAction__swap_bufferFrees old buffer, replaces with new buffer pointer, sets size and capacity
0x005C1120141SpriteAction__reallocate_bufferReallocates buffer with 1.5x growth: frees old, allocates new minimum bytes
0x005C1C50387SpriteAction__erase_range_by_keyErases 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.
0x005C1DE067SpriteAction__find_node_by_keyFinds node by key in the RB-tree using _Find_lower_bound. Returns the node if key matches, otherwise returns sentinel (end).
0x005C1E50160SpriteAction__destroy_tree_recursive_005c1e50Recursively destroys all nodes in a subtree. For each node: recurse right, clear vector, destroy string, free 0x48-byte node, then follow left child.
0x005C1EF0146SpriteActionNode__construct_005c1ef0Constructs a SpriteActionNode: zeroes string length/capacity fields, initializes two STL strings to empty (capacity=0xf), zeroes array pointers (offset 0x1C-0x30).
0x005C1F90110SpriteAction__init_rbtreeInitializes 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.
0x005C200076SpriteAction__free_single_entryFrees single sprite action entry: calls cleanup at offset+4, deallocates 0x48 block
0x005C206087SpriteAction__free_single_entry_005c2060Frees single sprite action entry: recursively destroys tree nodes, then frees the 0x48-byte sentinel. Duplicate of 005c2000.
0x005C20C087SpriteActionNode__destruct_005c20c0Destructs a SpriteActionNode: clears and frees the 4-byte element vector, then destroys the STL string field.
0x005C212099SpriteAction__free_single_entry_005c2120Frees single sprite action entry: recursively destroys tree nodes, then frees the 0x48-byte sentinel. Duplicate of 005c2000.
0x005C2190198SpriteAction__copy_vector_from_nodeCopies 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.
0x005C227088SpriteAction__copy_construct_string_fieldCopy-constructs an STL string at this+4 from another string. Used during SpriteAction node initialization.
0x005C231049SpriteAction__validate_action_id_rangeValidates 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.
0x005C235093SpriteAction__add_unique_to_vectorAdds 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.
0x005C23B059SpriteAction__assign_cstring_to_fieldAssigns 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.
0x005C23F0115SpriteAction__try_assign_string_fieldConditionally 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.
0x005C247025SpriteAction__set_delaySets delay value at offset 0x20. Rejects negative values, returns 1 on success, 0 on failure.
0x005C249028SpriteAction__set_frame_countSets frame count at offset 0x1C. Rejects values >= 9999, returns 1 on success, 0 on failure.
0x005C24B025SpriteAction__set_loop_flagSets loop flag at offset 0x24. Only accepts value 0 (disables looping). Returns 1 on success, 0 for nonzero input.
0x005C24D045SpriteAction__contains_value_in_vectorChecks 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.
0x005C250062SpriteAction__find_node_data_by_keyFinds 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.
0x005C254034SpriteAction__memcpy_rangeCopies memory range [param_1, param_2) to destination param_3 using memcpy. Returns pointer past copied data in destination.
0x005C274025SpriteAction__zero_arrayZeroes an array of 4-byte elements using memset. param_2 is the element count.
0x005C276025SpriteAction__zero_array_005c2760Zeroes an array of 4-byte elements using memset. param_2 is the element count. Duplicate of 005c2740.
0x005C278028SpriteAction__is_emptyReturns 1 (true) if the first dword pointed to by param_1 is zero, indicating the SpriteAction data is empty/uninitialized.
0x006C71A0601SpriteMap__hash_erase_rangeErases range of entries from unordered_map using FNV-1a hash, frees 0x38-byte nodes
0x006C740080SpriteMap__base_dtor_return_thisDestructor that sets vtable and calls json internal cleanup, returns this ptr
0x006C746074SpriteMap__base_dtor_voidDestructor that sets vtable and calls json internal destroy, void return
0x006C74B030SpriteMap__scalar_dtor_4byteScalar deleting destructor, frees 4-byte object if flag set
0x006C74D099SpriteMap__scalar_dtor_0xcScalar deleting destructor, sets vtable, destroys inner state, frees 0xC-byte object
0x006C7540293SpriteMap__load_item_db_names_luaLoads Lua file "LuaFiles514/Lua Files/ItemDBNameTbl" for item DB name table
0x006C7670163SpriteMap__lookup_item_id_by_nameLua call "ItemDB_To_ItemID" to convert item name string to numeric item ID
0x006C7720501SpriteMap__register_sprite_1paramRegisters sprite mapping with 1 sprite ID parameter, inserts into RB-tree map
0x006C7920517SpriteMap__register_sprite_2paramsRegisters sprite mapping with 2 sprite ID parameters, inserts into RB-tree map
0x006C7B30527SpriteMap__register_sprite_3paramsRegisters sprite mapping with 3 sprite ID parameters, inserts into RB-tree map
0x006C7D40543SpriteMap__register_sprite_4paramsRegisters sprite mapping with 4 sprite ID parameters, inserts into RB-tree map
0x006C7F60543SpriteMap__register_sprite_5paramsRegisters sprite mapping with 5 sprite ID parameters, inserts into RB-tree map
0x006C8180544SpriteMap__register_sprite_6paramsRegisters sprite mapping with 6 sprite ID parameters, inserts into RB-tree map
0x006C83A0559SpriteMap__register_sprite_7paramsRegisters sprite mapping with 7 sprite ID parameters, inserts into RB-tree map
0x006C85D0575SpriteMap__register_sprite_9paramsRegisters sprite mapping with 9 sprite ID parameters, inserts into RB-tree map
0x006C8810575SpriteMap__register_sprite_11paramsRegisters sprite mapping with 11 sprite ID parameters, inserts into RB-tree map
0x006C8A50185SpriteMap__register_set_1paramRegisters sprite set mapping with 1 signed int parameter via signed-key tree
0x006C8B10191SpriteMap__register_set_2paramsRegisters sprite set mapping with 2 signed int parameters via signed-key tree
0x006C8BD0210SpriteMap__register_set_3paramsRegisters sprite set mapping with 3 signed int parameters via signed-key tree
0x006C8CB0216SpriteMap__register_set_4paramsRegisters sprite set mapping with 4 signed int parameters via signed-key tree
0x006C8D90222SpriteMap__register_set_5paramsRegisters sprite set mapping with 5 signed int parameters via signed-key tree
0x006C8E70228SpriteMap__register_set_6paramsRegisters sprite set mapping with 6 signed int parameters via signed-key tree
0x006C8F60234SpriteMap__register_set_7paramsRegisters sprite set mapping with 7 signed int parameters via signed-key tree
0x006C9050240SpriteMap__register_set_8paramsRegisters sprite set mapping with 8 signed int parameters via signed-key tree
0x006C9140294SpriteMap__register_set_17paramsRegisters sprite set mapping with 17 signed int parameters via signed-key tree
0x006C9270210SpriteMap__register_set_3params_altAlternative sprite set registration with 3 signed int params, same tree structure
0x006C9350216SpriteMap__register_set_4params_altAlternative sprite set registration with 4 signed int params, same tree structure
0x006C9430222SpriteMap__register_set_5params_altAlternative sprite set registration with 5 signed int params, same tree structure
0x006C9510228SpriteMap__register_set_6params_altAlternative sprite set registration with 6 signed int params, same tree structure
0x006C9600234SpriteMap__register_set_7params_altAlternative sprite set registration with 7 signed int params, same tree structure
0x006C96F0240SpriteMap__register_set_8params_altAlternative sprite set registration with 8 signed int params, same tree structure
0x006C97E0264SpriteMap__register_set_12params_altAlternative sprite set registration with 12 signed int params (param_3..param_14), builds RB-tree and merges into second internal map at this+4.
0x006C98F0270SpriteMap__register_set_13params_altAlternative sprite set registration with 13 signed int params (param_3..param_15), builds RB-tree and merges into second internal map at this+4.
0x006C9A00294SpriteMap__register_set_17params_altAlternative sprite set registration with 17 signed int params (param_3..param_19), builds RB-tree and merges into second internal map at this+4.
0x006C9B30339SpriteMap__register_set_24params_altAlternative sprite set registration with 24 signed int params (param_3..param_26), builds RB-tree and merges into second internal map at this+4.
0x006C9C90116SpriteMap__rbtree_copy_subtreeCopies RB-tree subtree from source to destination, updates head/tail pointers
0x006C9D10232SpriteMap__rbtree_clone_nodes_recursiveRecursively clones RB-tree nodes with 0x14-byte allocation, copies key and color
0x006C9E20118SpriteMap__rbtree_destroy_with_nestedDestroys RB-tree, calling CPacketStream operation on each node's nested data before freeing
0x006C9EA0103SpriteMap__rbtree_destroy_recursive_ARecursively destroys RB-tree nodes in post-order traversal, frees 0x14-byte nodes
0x006C9F10103SpriteMap__rbtree_destroy_recursive_BRecursively destroys RB-tree nodes in post-order traversal, identical to variant A
0x006C9F80445SpriteMap__rbtree_find_hint_uintFinds insertion hint in RB-tree with unsigned int key comparison, returns node+direction
0x006CA140434SpriteMap__rbtree_find_hint_intFinds insertion hint in RB-tree with signed int key comparison, returns node+direction
0x006CA3A075SpriteMap__rbtree_lower_bound_intRB-tree lower_bound search using signed int comparison, returns node and direction
0x006CA3F0271SpriteMap__rbtree_merge_nodesMerges RB-tree nodes from source into destination, extracts and re-inserts each node
0x006CA500298SpriteMap__rbtree_build_from_uint_arrayBuilds RB-tree from array of unsigned ints, allocates sentinel and inserts each key
0x006CA630298SpriteMap__rbtree_build_from_int_arrayBuilds RB-tree from array of signed ints, allocates sentinel and inserts each key
0x006CA76067SpriteMap__free_tree_node_0x1cFrees single 0x1C-byte tree node at offset+4 if non-null
0x006CA7B067SpriteMap__free_tree_node_0x1c_altFrees single 0x1C-byte tree node at offset+4 if non-null, identical pattern
0x006CA80067SpriteMap__free_tree_node_0x14Frees single 0x14-byte tree node at offset+4 if non-null
0x006CA85067SpriteMap__free_tree_node_0x14_altFrees single 0x14-byte tree node at offset+4 if non-null, alternate instance
0x006CA8A0111SpriteMap__rbtree_destroy_nested_recursiveDestroys RB-tree, recursively destroying nested sub-trees at each node before freeing
0x006CA940124SpriteMap__destroy_nested_tree_and_nodeDestroys nested sub-tree at offset 0x14, then frees 0x1C-byte parent node
0x006CA9C0124SpriteMap__delete_member_and_cleanupCleans up sprite map node: destroys tree at offset+0x14, frees 0x1C-byte node at offset+4
0x006CAA4078SpriteMap__scalar_deleter_006caa40Frees 0x14-byte allocation at this+4 if non-null
0x006CAA9078SpriteMap__scalar_deleter_006caa90Frees 0x14-byte allocation at this+4 if non-null
0x006CAAE078SpriteMap__scalar_deleter_006caae0Frees 0x1C-byte allocation at this+4 if non-null
0x006CAB3078SpriteMap__scalar_deleter_006cab30Frees 0x1C-byte allocation at this+4 if non-null
0x006CAB8078SpriteMap__scalar_deleter_006cab80Frees 0x14-byte allocation at this+4 if non-null
0x006CABD078SpriteMap__scalar_deleter_006cabd0Frees 0x14-byte allocation at this+4 if non-null
0x006CAC2081SpriteMap__destroy_inner_tree_006cac20Destroys red-black tree stored at this+4 via recursive cleanup
0x006CAC8081SpriteMap__destroy_inner_tree_006cac80Destroys red-black tree stored at this+4 via recursive cleanup
0x006CACE065SpriteMap__cleanup_delegateSEH-wrapped delegate that calls sprite map cleanup at 006ca8a0
0x006CAD30102SpriteMap__move_assignMoves 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
0x006CADA0275SpriteMap__find_or_insert_uint_keyFinds or inserts a uint key in RB-tree map, returns pointer to value at node+0x14
0x006CAEC0275SpriteMap__find_or_insert_uint_key_006caec0Finds or inserts a uint key in RB-tree map, returns pointer to value at node+0x14
0x006CBD303583SpriteMap__init_all_sprite_mappingsInitializes all item sprite->equipment slot mappings for head/body/weapon/shield/accessory
0x00711F80291CFootprintPng__ctorConstructor 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.
0x007120B067CFootprintPng__free_linked_list_nodeFrees the 12-byte linked list sentinel node at this+4 if non-null. Used during CFootprintPng destruction to clean up linked list storage.
0x0071210078CFootprintPng__free_list_nodeFrees a single linked list node (0xC bytes) at this+4 if non-null
0x00712150103CFootprintPng__destroy_linked_listIterates and frees all nodes in a linked list, then frees the sentinel node
0x007121C0180CFootprintPng__dtorDestructor: sets vtable 01116fd4, destroys member strings and footprint sprite list
0x00712280204CFootprintPng__scalar_dtorScalar deleting destructor for CFootprintPng (0x128 bytes), frees memory if flag set
0x00712350105CFootprintPng__clear_sprite_listDestroys all footprint sprites in list at +0xCC, resets list to empty, clears count at +0xD0
0x007123C077CFootprintPng__should_renderChecks if footprint rendering is enabled: validates actor, checks ability 0x10D, and option flag
0x00712410908CFootprintPng__load_configLoads footprint PNG config: file path, scale, alpha, duration, stride from lua settings
0x007127B0733CFootprintPng__create_spriteCreates a footprint sprite with alpha/duration, applies rotation matrix to position 4 vertices
0x00712A90433CFootprintPng__updateUpdates footprint list: creates new sprite if moved past stride distance, fades/removes expired ones
0x00712CA0386CFootprintStr__ctorConstructor: initializes vtable 011170f0, two linked lists, 4 STL strings, default transform params
0x00712E30322CFootprintStr__dtorDestructor: saves position, destroys 4 strings, frees both footprint sprite linked lists
0x00712F80346CFootprintStr__scalar_dtorScalar deleting destructor for CFootprintStr (0x178 bytes), frees memory if flag set
0x007130E0201CFootprintStr__clear_both_listsDestroys all sprites in both linked lists (+0xCC bottom, +0xD4 top), resets counts to zero
0x007131B0437CFootprintPng__calc_spawn_positionCalculates footprint spawn position using direction vector, Y-rotation matrix, and stride offset
0x0071337077CFootprintStr__should_renderChecks if STR footprint rendering is enabled: validates actor, checks ability 0x10D, and option flag
0x007133C01126CFootprintStr__load_configLoads STR footprint config: bottom/top files, scale, top height, stride, gap, angle adjust from lua
0x00713840284CFootprintStr__create_bottom_spriteCreates a bottom-layer STR footprint sprite with scale and optional height offset
0x00713960907CFootprintStr__create_footprint_pairCreates bottom and top STR footprint sprites at calculated position, alternates left/right foot
0x00713CF0268CFootprintStr__create_top_sprite_atCreates a top-layer STR footprint sprite at given world position with height offset and scale
0x00713E00296CFootprintStr__updateUpdates STR footprints: spawns new pair if moved past stride, removes finished sprites from both lists
0x00713F3064CFootprintStr__try_update_spriteTries to update a STR sprite; returns 1 if still alive, destroys it and returns 0 if finished
0x00713F70141CFootprintStr__render_allRenders all footprint sprites: iterates bottom list with render call, top list with separate render
0x00714000165CFootprintStr__push_back_spriteAppends a sprite pointer to the linked list, increments count; throws if list exceeds max
0x007140B0103CFootprintMgr__free_tree_nodes_28Recursively frees red-black tree nodes (0x28 bytes each) in post-order traversal
0x00714120103CFootprintMgr__free_tree_nodes_20Recursively frees red-black tree nodes (0x20 bytes each) in post-order traversal
0x0071419087CFootprintMgr__tree_lower_bound_28Finds lower bound in red-black tree (0x28 node), comparing 64-bit key at node+0x10
0x007141F087CFootprintMgr__tree_lower_bound_20Finds lower bound in red-black tree (0x20 node), comparing 64-bit key at node+0x10
0x007142501638CFootprintMgr__ctorConstructor: vtable 01117244, init base class, two RB-trees, inserts 5 default footprint type entries
0x007148C067CFootprintMgr__free_node_28Frees a single 0x28-byte tree node if its data pointer is non-null
0x0071491067CFootprintMgr__free_node_20Frees a single 0x20-byte tree node if its data pointer is non-null
0x00714960111CFootprintMgr__destroy_tree_28Destroys entire 0x28-node RB-tree: recursively frees all nodes then frees sentinel
0x007149E0111CFootprintMgr__destroy_tree_20Destroys entire 0x20-node RB-tree: recursively frees all nodes then frees sentinel
0x00714A6078CFootprintMgr__free_tree_node_28_aFrees a 0x28-byte tree node if data pointer at +4 is non-null
0x00714AB078CFootprintMgr__free_tree_node_20_aFrees a 0x20-byte tree node if data pointer at +4 is non-null
0x00714B0078CFootprintMgr__free_tree_node_28_bFrees a 0x28-byte tree node if data pointer at +4 is non-null (variant B)
0x00714B5078CFootprintMgr__free_tree_node_20_bFrees a 0x20-byte tree node if data pointer at +4 is non-null (variant B)
0x00714BA065CFootprintMgr__clear_tree_28Wrapper that calls destroy_tree_28 to clear the 0x28-node RB-tree
0x00714BF065CFootprintMgr__clear_tree_20Wrapper that calls destroy_tree_20 to clear the 0x20-node RB-tree
0x00714C40126CFootprintMgr__dtorDestructor: sets vtable 01117244, destroys both RB-trees (0x20 and 0x28), destroys base class
0x00714CC0268CFootprintMgr__find_or_insert_config_28Finds or inserts a 0x28-node in RB-tree by 64-bit key, returns pointer to value at node+0x18
0x00714DD0254CFootprintMgr__find_or_insert_state_20Finds or inserts a 0x20-node in RB-tree by 64-bit key, returns pointer to value at node+0x18
0x00714ED0150CFootprintMgr__scalar_dtorScalar deleting destructor for CFootprintMgr (0xF0 bytes), frees memory if flag set
0x00714F70487CFootprintMgr__spawn_abyss_effectCreates abyss shadow effect sprite, destroys old one if exists, sets scale/color/position from config
0x00715210493CFootprintMgr__respawn_abyss_effectDestroys existing abyss effect and respawns a new one, preserving scale/color/position data
0x00715420122CFootprintMgr__update_all_effectsIterates RB-tree of effects and calls update_effect_state for each entry's key and data
0x007154A02013CFootprintMgr__update_effect_stateUpdates abyss effect by state: 1=fade/respawn, 2=transform position, 3=check expiry and transform
0x00715C80125CFootprintMgr__render_all_effectsIterates RB-tree and renders each effect sprite via scene graph render call
0x00715D0043CFootprintMgr__render_single_effectRenders a single abyss effect sprite if non-null, via scene graph render
0x00715D30510CFootprintMgr__transform_effect_positionTransforms effect sprite position from local to world coordinates using view matrix multiplication
0x00715F301192CFootprintMgr__sync_effect_countAdjusts number of abyss effects to target count: spawns new or respawns excess ones
0x00716800127CShadowDecal__ctorConstructor: vtable 011173e4, init base class, zeroes sprite ptrs and flag, sets active=true
0x0071688095CShadowDecal__dtorDestructor: sets vtable 011173e4, destroys sprite vector, destroys base class
0x007168E0119CShadowDecal__scalar_dtorScalar deleting destructor for CShadowDecal (0xDC bytes), frees memory if flag set
0x0071696063CShadowDecal__clear_spritesDestroys all shadow sprites in vector at +0xCC, resets end pointer to begin
0x007169A0557CShadowDecal__create_frostbite_spritesCreates frostbite effect sprites (type 0x8E0), up to 4 per decal, with alpha/blend settings
0x00716BF0396CShadowDecal__render_spritesRenders shadow decal sprites: sets texture UV coords and vertex positions based on rotation case 0-3
0x00717180359CShadowDecal__render_single_spriteRenders one shadow decal sprite: computes UV from texture atlas, sets 4-vertex quad by rotation case
0x00730210510CParticleEffect__constructorConstructor 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.
0x00730410110CParticleEffect__destructorDestructor for CParticleEffect. Sets vtable, destroys aura sub-effects, frees texture string, calls base destructor.
0x00730480134CParticleEffect__scalar_deleting_destructorScalar deleting destructor for CParticleEffect. Calls destructor and optionally frees memory (0x138 bytes).
0x00730510760CParticleEffect__SpawnParticlesSpawns 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.
0x0073081063CParticleEffect__DestroyAllParticlesDestroys all particle sub-effects in the vector (0x12C-0x130), then resets the vector size.
0x0073086016CParticleEffect__ResetAndRespawnCalls virtual reset method then re-spawns all particles. Used when particle effect needs to restart.
0x00730880997CParticleEffect__UpdateAllParticleTransformsUpdates 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.
0x00730C70956CParticleEffect__UpdateSingleParticleTransformUpdates 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.
0x00731030164CParticleEffect__RenderAllParticlesRenders 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.
0x007310E0122CParticleEffect__RenderSingleParticleRenders 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.
0x0073116086CParticleEffect__UpdateParticleAlphaBounceUpdates 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.
0x0074368038CSpriteRes__scalar_deleting_dtor_00743680Scalar deleting destructor for CSpriteRes (0x14C variant). Calls reset_lists to clear all frame data, then optionally frees 0x14C bytes.
0x007436B0252CSpriteRes__createFactory 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.
0x007437B03567CSpriteRes__load_from_act_fileLoads 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.
0x007445A0184CSpriteRes__reset_frame_listsResets 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).
0x00744660142CSpriteRes__scalar_deleting_dtorScalar deleting destructor for CSpriteRes. Deallocates 3 internal vectors (4-byte elements, struct vector, 0xC-byte entries), sets vtable to CTokenizer, optionally frees 0x138 bytes.
0x007446F0302CSpriteRes__constructorConstructor 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).
0x007448202412CSpriteRes__load_from_textLoads 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.
0x00745190196CSpriteRes__clear_all_dataClears 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.
0x00745FB0196CSpriteTokenizer__ctorConstructor 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).
0x00749580166CSprite__CreateFactory 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.
0x00749630333CSprite__LoadFromStreamLoads 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).
0x00749780199CSprite__LoadByExtensionDispatches 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.
0x0074985083CSprite__FreeImageBuffersFrees the two image data buffers at offsets 0x11C and 0x120, then zeroes the width (0x114), height (0x118), and both buffer pointers.
0x007498B094CSprite__scalar_deleting_destructor_2Scalar deleting destructor for CSprite. Sets vtable PTR_FUN_0111aabc, conditionally frees 0x124 bytes.
0x00749910241CSpriteEx__CreateFactory 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).
0x00749A10324CSpriteEx__LoadFromFileLoads an extended sprite from file. Opens CFileStream, calls virtual load method (vtable+0x20), closes stream. Returns 1 on success, 0 on failure.
0x00749B60244CSpriteEx__LoadByExtensionOrGIFExtended sprite loader. First checks for GIF magic ("GIF"), then falls through to extension-based dispatch: .bmp, .tga, .jpg, .png. Logs error for unsupported formats.
0x00749C60181CSpriteEx__FreeAllFramesFrees 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).
0x00749D20175CSpriteEx__UpdateAnimationUpdates 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).
0x00749DE0112CSpriteEx__scalar_deleting_destructorScalar deleting destructor for CSpriteEx. Calls frame vector cleanup FUN_0074a320, sets base vtable, conditionally frees 0x140 bytes.
0x0074A1D0114CSprite__constructor_inlineConstructor for CSprite. Calls base constructor FUN_00aeda10, sets vtable, initializes image data (0x44=0) and frame vector pointers (0x47/0x48=0).
0x0074A250189CSpriteEx__constructorConstructor 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).
0x0074A320129CSpriteEx__FreeFrameVectorFrees the frame vector buffer (8-byte elements). Handles aligned allocation recovery for large buffers (>0xFFF). Resets begin/end/capacity to 0.
0x0074A4B0150CSprite__AdvanceFrameAdvances 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.
0x0074A550101CSprite__AllocatePixelBufferAllocates 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.
0x0074A5C0179CSprite__AllocatePixelBufferWithHistoryAllocates 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.
0x0074A680368CSprite__CreateTintedCopyCreates 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.
0x0074A7F065CSprite__GetPixelAtReturns 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.
0x0074AB002046CSprite__LoadImageDataLoads 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.
0x0074B3002485CSprite__LoadGIFLoads 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.
0x0074BCC0583CSprite__LoadJPEGLoads 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.
0x0074BF10993CSprite__LoadPNGLoads 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.
0x0074C300556CSprite__LoadTGALoads 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.
0x0074C54034CSprite__FreeTintedBufferFrees the tinted pixel buffer at +0x120 and nulls the pointer. Called to release memory from CreateTintedCopy.
0x0074C570932CSprite__LoadAlphaBitmapLoads 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.
0x0074C9F0147CSprite__CreateNewFactory 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.
0x0074CA90619CSprite__LoadFromFileLoads 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.
0x0074CD50112CSprite__scalar_deleting_destructorScalar 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.
0x0074CDC095CSprite__constructorCSprite constructor. Calls base constructor (FUN_00aeda10), sets vtable to PTR_FUN_0111ae00, then calls FUN_0074a250 to initialize sprite-specific fields.
0x0074CE20179CSprite__destructorCSprite destructor. Frees the frame history vector at +0x124/+0x128/+0x12C (offsets 0x49/0x4a/0x4b in dword terms). Resets vtable to base PTR_FUN_0111aabc.
0x0074DB10356CModel__CreateNewFactory 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.
0x0074DC8090CModel__LoadFromFileLoads 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.
0x0074DD1038CModel__scalar_deleting_destructorScalar deleting destructor for CModel. Calls CActFile__partial_dtor destructor, optionally frees 0x1B4 bytes if param_2 bit 0 is set.
0x0074E1C0300CModel__constructorCModel 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.
0x0074E390164CActFile__partial_dtorPartial 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.
0x0074E440105CActFile__read_5bit_valueReads 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.
0x0074E4B0138CActFile__decompress_5bit_paletteDecompresses a 5-bit packed palette (0x140 bits = 64 entries of 5 bits each) from param_1 into param_2 as 64 individual bytes.
0x0074E540264CActFile__get_frame_dataGets 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).
0x0074E650531CActFile__load_headerLoads 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.
0x0074E870738CActFile__load_extended_dataLoads 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.
0x0074EB60102CActFile__write_5bit_valueWrites 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.
0x0074EBD0147CActFile__compress_5bit_paletteCompresses 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).
0x00750950284CRsmModel__clear_all_dataClears 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.
0x00750A70146CRsmModel__createFactory function that creates a CRsmModel object (0x160 bytes). Allocates memory, calls base constructor, sets vtable, zeroes header field at +0x15C.
0x00750B104958CRsmModel__load_from_file_v1Loads 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.
0x00751E7093CRsmModel__scalar_deleting_dtorScalar deleting destructor for CRsmModel. Calls destructor, optionally frees the 0x160-byte object.
0x00751ED0156CRsmModel__create_v2Factory function that creates a CRsmModel v2 object (0x164 bytes). Like CRsmModel__create but with an extra field at +0x160 (initialized to 0).
0x00751F70537CRsmModel__load_from_fileLoads 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.
0x0075219093CRsmModel_v2__scalar_deleting_dtorScalar deleting destructor for CRsmModel v2. Calls destructor, optionally frees the 0x164-byte object.
0x007521F0388CRsmMeshNode__createFactory 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).
0x007523904457CRsmMeshNode__load_from_streamLoads 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.
0x0075351038CRsmMeshNode__scalar_deleting_dtorScalar deleting destructor for CRsmMeshNode. Calls mesh node destructor, optionally frees the 0x164-byte object.
0x00753540206CGrannyModel__createFactory function for CGrannyModel (0x3B8 bytes). Creates the object with base constructor, sets vtable, zeroes animation-related fields and resource handles.
0x007536201238CGrannyModel__load_from_fileLoads a Granny model from file. Reads Granny2 format data including meshes, skeletons, and animations. 1238 bytes.
0x00753B00121CGrannyModel__scalar_deleting_dtorScalar deleting destructor for CGrannyModel. Sets vtable, frees Granny resources if allocated, sets base vtable to CTokenizer, optionally frees the 0x3B8-byte object.
0x00753B80241CRsmModel__copy_tree_nodeRecursively 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.
0x00753C90169CRsmModel__destroy_tree_with_mapsRecursively 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.
0x00753D40128CRsmModel__destroy_tree_with_stringsRecursively 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.
0x00753DC0131CRsmModel__destroy_tree_with_vectorsRecursively destroys a tree where each node (0x20 bytes) has an embedded vector. Frees vector data, then the node. Traverses right subtree recursively, left iteratively.
0x00754C80362CRsmModel__bone_map_find_or_insertFinds 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.
0x00754DF0415CRsmModel__name_map_find_or_insertFinds 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.
0x00754F9037CRsmModel__init_linked_listInitializes a doubly-linked list for CRsmModel. Allocates a 0xC-byte sentinel node and sets both pointers to itself (empty list). Stores in param_1.
0x00754FC0286CRsmModel__copy_vector_8byteCopy-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.
0x007550E0332CRsmMeshNode__ctorConstructor for CRsmMeshNode. Calls base constructor, sets vtable, initializes linked lists, tree maps, SSO string, and rendering params (scale=1.0, blend=2, alpha=0xFF).
0x00755230217CRsmMeshNode__init_fieldsInitializes CRsmMeshNode fields. Sets up two SSO strings (offsets 0, 0x18), creates a linked list (0xC-byte sentinel), zeroes texture/material/animation/rendering fields.
0x00755340154CGrannyModel__ctorConstructor for CGrannyModel. Calls base constructor, sets vtable, zeroes animation/resource fields at various offsets.
0x007553E0372CRsmModel__init_baseInitializes 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.
0x0075556094CRsmModel__ctorConstructor for CRsmModel. Calls base init, sets vtable to CRsmModel, zeroes field at +0x15C.
0x007555C0104CRsmModel_v2__ctorConstructor for CRsmModel v2. Calls base init, sets vtable to CRsmModel_v2, zeroes fields at +0x15C and +0x160.
0x00755630219CRsmMesh__ctorConstructor for CRsmMesh. Sets vtable, initializes two SSO strings, creates a linked list (0xC-byte sentinel), zeroes texture/material/rendering fields. Sets alpha to 0xFF.
0x007558E067CRsmModel__free_list_node_0xC_aFrees a 0xC-byte linked list node if the pointer is non-null.
0x0075593067CRsmModel__free_list_node_0xC_bFrees a 0xC-byte linked list node if the pointer is non-null. Duplicate for different allocator context.
0x0075598067CRsmModel__free_list_node_0xC_cFrees a 0xC-byte linked list node if the pointer is non-null. Duplicate for different allocator context.
0x007559D067CRsmModel__free_tree_node_0x1CFrees a 0x1C-byte tree node if the pointer is non-null.
0x00755A2067CRsmModel__free_tree_node_0x2CFrees a 0x2C-byte tree node if the pointer is non-null.
0x00755A7033CRsmMesh__release_textureReleases 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.
0x00755AA078CRsmModel__free_list_node_0xC_dFrees a 0xC-byte linked list node if non-null. Variant d.
0x00755AF078CRsmModel__free_list_node_0xC_eFrees a 0xC-byte linked list node if non-null. Variant e.
0x00755B4078CRsmModel__free_list_node_0xC_fFrees a 0xC-byte linked list node if non-null. Variant f.
0x00755BA076CRsmModel__clear_map_tree_0x20Clears a std::map tree with 0x20-byte nodes. Destroys subtree then frees the sentinel.
0x00755C0076CRsmModel__clear_map_tree_0x1CClears a tree of 0x1C-byte nodes with embedded maps. Destroys subtrees recursively then frees the sentinel.
0x00755C6076CRsmModel__clear_string_tree_0x2CClears a tree of 0x2C-byte nodes with embedded strings. Destroys subtrees recursively then frees the sentinel.
0x00755CC0152CRsmModel__destroy_node_with_mapDestroys 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.
0x00755D60113CRsmModel__destroy_node_with_stringDestroys a single 0x2C-byte node that has an embedded string. Destroys the string, then frees the node.
0x00755DE078CRsmModel__free_tree_node_0x1C_bFrees a 0x1C-byte tree node if non-null. Variant b.
0x00755E3078CRsmModel__free_tree_node_0x2C_bFrees a 0x2C-byte tree node if non-null. Variant b.
0x00755E8092CRsmMesh__release_texture_bReleases a texture resource held by the mesh. Variant b - identical logic to release_texture but in different calling context.
0x00755EE0103CRsmModel__clear_list_0xC_aClears all 0xC-byte nodes from a linked list. Iterates through nodes, frees each, then frees the sentinel. Variant a.
0x00755F50103CRsmModel__clear_list_0xC_bClears all 0xC-byte nodes from a linked list. Identical to clear_list_0xC_a. Variant b.
0x00755FC0103CRsmModel__clear_list_0xC_cClears all 0xC-byte nodes from a linked list. Identical to clear_list_0xC_a. Variant c.
0x0075603087CRsmModel__clear_map_tree_0x20_bClears a std::map tree with 0x20-byte nodes. Destroys subtree then frees sentinel. Variant b.
0x0075609087CRsmModel__clear_map_tree_0x1C_bClears a tree of 0x1C-byte nodes with embedded maps. Variant b.
0x007560F087CRsmModel__DestroyTreeDestroys 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).
0x00756150112CRsmModel__DestroyTextureMapDestroys the texture map (STL map at offset +4). Calls STL_map_destroy_subtree to free all nodes, then frees the sentinel node (0x20 bytes).
0x007561C065CRsmModel__DestroyNameDestroys the model name STL string.
0x00756480180CRsmMeshNode__destructorDestructor 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.
0x00756540315CRsmMeshNode__DestroyMeshDataDestroys 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.
0x007566B0133CGrannyModel__FreeGrannyDataFrees 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).
0x0075674097CGrannyModel__destructorDestructor for CGrannyModel. Sets vtable PTR_FUN_0111afb8, frees Granny resources if loaded (offset 0x9C != 0), then sets base vtable.
0x007567B0289CRsmModel__destructorDestructor 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.
0x007568E0308CRsmMeshNode__DestroyAllDataFull data destruction for an RSM mesh node (0x58 bytes). Destroys vectors, strings, and all sub-objects.
0x00756A20126CRsmMesh__destructorDestructor for CRsmMesh. Sets vtable PTR_FUN_0111aff0, frees 0x14-byte vector, 0x10-byte vector, then calls full mesh data destructor FUN_007568e0.
0x00756AA0192CRsmMesh__DestroySubDataDestroys sub-data in an RSM mesh, including vectors and linked lists.
0x00756D60102CRsmModel__destroy_texture_name_arrayDestroys 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.
0x0075709038CRsmModel__scalar_deleting_destructorScalar deleting destructor for CRsmModel (0x15C bytes). Calls destructor then conditionally frees memory.
0x007570C035CRsmMesh__scalar_deleting_destructorScalar deleting destructor for CRsmMesh (0x58 bytes). Calls CRsmMeshNode__DestroyAllData to clean up mesh data, then conditionally frees the object memory.
0x007570F0150CRsmMesh__scalar_deleting_destructor_98Scalar 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.
0x00757190216CRsmModelV2__scalar_deleting_destructorScalar 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.
0x00757270275C3dMob__PlayBoneAnimationPlays 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.
0x007573901097C3dMob__LoadGrannyModelLoads 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.
0x007577E0105CGrannyModel__RebindMeshesRebinds 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.
0x007578503759CRsmModel__ComputeVertexLightingComputes 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.
0x00758710842CGrannyModel__ComputeScreenBBoxComputes 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).
0x00758A60200CGrannyModel__InitMeshBindingsInitializes mesh bindings for a Granny model (200 bytes).
0x00758B30427CGrannyModel__InitMeshBindingsWithTexturesInitializes 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.
0x00758CE0339CGrannyModel__InstantiateModelWithMeshesInstantiates 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.
0x00758E40584CGrannyModel__CreateInstanceCreates a Granny model instance with animation control and world pose (584 bytes).
0x00759090365CGrannyModel__ConvertTextureToD3DSurfaceConverts 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.
0x0075920042CGrannyModel__AllocBoneArrayAllocates an array of bone entries (param_2 * 0xC bytes) and stores the pointer at offset +4.
0x0075923062CGrannyModel__ExtractTextureFromFileExtracts 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).
0x00759270187CGrannyModel__AllocMeshDataAllocates mesh data structures for a Granny model (187 bytes).
0x00759350102CGrannyModel__FindBoneByNameSearches 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.
0x007593C0102CRsmModel__FindMeshNodeByNameSearches 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.
0x00759430120CGrannyModel__FindTextureByMaterialFinds 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.
0x007594B0151CGrannyModel__FreeInstanceFrees 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.
0x00759550375CRsmModel__ForEachMeshNodeIterates 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.
0x007596D0201C3dMob__GetBoneModelRetrieves 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.
0x007597A053CGrannyModel__GetMeshTriangleCountReturns the number of triangles in a Granny mesh by dividing the index count by 3. param_2 = mesh index.
0x007597E056CGrannyModel__GetRigidMeshBoneIndexChecks 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.
0x00759840101CGrannyModel__LoadSkeletonFromFileLoads 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.
0x00759ED03138CRsmModel__LoadFromStream_v1Loads 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.
0x0075AB203516CRsmModel__LoadFromStream_v2Loads 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.
0x0075B8E03631CRsmModel__LoadFromStream_v3Loads 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.
0x0075C710517CRsmModel__DestroyMeshNodesDestroys 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.
0x0075C920171CRsmMeshNode__FreeBuffersFrees 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).
0x0075C9D074C3dMob__CleanupCleans 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.
0x0075CA20260CGrannyModel__FreeResourcesFrees 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.
0x0075CB3036CGrannyModel__GetMeshRenderData_ThunkThunk that delegates to CGrannyModel__GetMeshRenderData using the model info at offset +0x270.
0x0075CB60545CGrannyModel__GetMeshRenderDataGets 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.
0x0075CD9093CGrannyModel__FindHairPivotMeshSearches 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.
0x0075CDF0382CRsmModel__LoadBoneTexturesIterates 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.
0x0075CF7029CRsmModel__ApplyScaleFactorApplies a scale factor to a float value. Computes: *param_1 = param_2 + param_2/DAT_010df490. Used to scale model dimensions.
0x0075CF9033CRsmModel__SetScaledAnimSpeedSets the animation speed at offset +0x110 using a scale factor: speed = param_2 + param_2/DAT_010df490.
0x0075CFC0134CGrannyModel__SampleAndBuildPoseSamples 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.
0x0075D6A0125CRsmModel__ClearBoneNameListClears 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.
0x0075D730158C3dMob__CreateCreates 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.
0x0075DB0094C3dMob__ScalarDestructorScalar deleting destructor for C3dMob. Sets vtable to base class, conditionally frees the 0x910 byte object if param_2 & 1.
0x0075DB60106C3dMob__InitInitializes 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.
0x0075DC0066CSkybox__InitFaceDataInitializes 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.
0x0075DC50449CSkybox__InitVerticesInitializes 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.
0x0075DE20392CSkybox__CreateCreates 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.
0x0075DFF025CSkybox__DestroyModelInstanceDestroys the skybox model instance by calling its virtual destructor at vfunc[0] with delete flag, then nulls the instance pointer at offset +4.
0x0075E0101312CSkybox__FrustumCullTestPerforms 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.
0x0075E5301252CSkybox__InitLensFlareDataInitializes 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).
0x0075EA20672CSkybox__UpdateVertexPositionsUpdates 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.
0x0075ECC0960CSkybox__RenderLensFlaresRenders 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).
0x0075F0802454CSkybox__RenderSkyQuadsRenders 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.
0x0075FA201029CSkybox__RenderSkyQuads_IndoorRenders 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.
0x00761940499CRswFile__create_instanceAllocates CRswFile (0x1D0 bytes), inits 3 linked lists for models/lights/sounds and 3 std::strings
0x00761B40378CRswFile__clear_all_resourcesFrees all model, light, and sound entries from the RSW linked lists
0x00761CC03252CRswFile__load_from_fileLoads RSW map resource file, parses versioned header, models, lights, sounds, and effect entries
0x0076301073CRswFile__compare_versionCompares RSW file version (major.minor) against required version, returns comparison result
0x00763060443CRswFile__constructorCRswFile constructor, inits base class, 3 linked lists, 3 strings, and zeroes all resource fields
0x0076322067CRswFile__free_model_nodeFrees a single linked list node (0xC bytes) for model entry if non-null
0x0076327067CRswFile__free_light_nodeFrees a single linked list node (0xC bytes) for light entry if non-null
0x007632C067CRswFile__free_sound_nodeFrees a single linked list node (0xC bytes) for sound entry if non-null
0x0076331078CRswFile__free_effect_node_aFrees a single linked list node (0xC bytes) for effect data
0x0076336078CRswFile__free_effect_node_bFrees a single linked list node (0xC bytes) for secondary effect data
0x007633B078CRswFile__free_effect_node_cFrees a single linked list node (0xC bytes) for tertiary effect data
0x00763400103CRswFile__destroy_model_listDestroys entire model linked list, freeing all nodes and the sentinel
0x00763470103CRswFile__destroy_light_listDestroys entire light linked list, freeing all nodes and the sentinel
0x007634E0103CRswFile__destroy_sound_listDestroys entire sound linked list, freeing all nodes and the sentinel
0x00763550305CRswFile__destructorCRswFile destructor, destroys all 3 linked lists and 3 strings, resets vtable to base
0x00763690165CRswFile__add_sound_entryAdds a sound entry to the RSW sound linked list, throws if list at max capacity
0x007637403CRswFile__validate_version_stubStub that always returns 0 (validation always passes)
0x007B08D039CActRes__FreeActionDataFrees action data at offset +0x18 if non-null. Calls cleanup function, frees the 0x14-byte struct, and nulls the pointer.
0x007B0930170CActFrame__ctorConstructs 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.
0x007B0A10157CActFrame__DestroyRangeDestroys 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.
0x007B19B0143CActFrame__CopyRangeCopies 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.
0x007B1A40397CActFrame__move_constructMove-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.
0x007B1BD0418CActFrame__copy_constructCopy-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.
0x007B1D80221CActAction__ctorConstructs a CActAction object. Initializes 4 SSO strings (capacity 0xf each), sets 3 index fields to -1, and zeroes various state fields.
0x007B2B10166CActRes__FreeActionFrameVectorFrees a vector of action frames (0x84 bytes each). Calls cleanup on each frame first, then frees the buffer and zeroes the vector.
0x00AB90A099CRsmModel__set_frame_all_childrenSets 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.
0x00AB94D0373CRsmModel__clone_child_partsClones 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.
0x00AB96603776CRsmModel__compute_bounding_box_and_normalsComputes 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.
0x00ABB890223CRsmModel__rebuild_transform_matrixRebuilds 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.
0x00ABD640386CParticleEmitter__ctorCParticleEmitter 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.
0x00ABD7D0208CParticleEmitterBase__ctorCParticleEmitterBase 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.
0x00ABD8A066CParticle__init_defaultsInitializes 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).
0x00ABD8F060CParticleVertex__init_defaultsInitializes 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.
0x00ABD930110CParticleGroup__ctorCParticleGroup constructor. Zeroes all 6 dwords (24 bytes). Simple structure with no vtable.
0x00ABDCA0116CParticleEmitterBase__dtor_bodyCParticleEmitterBase destructor body. Sets vtable back to base class, calls clear_textures and deallocates 4-byte vector, then frees 56-byte vector buffer.
0x00ABDD2095CParticleEmitterBase__dtor_cleanupCParticleEmitterBase 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.
0x00ABDD80220CParticleEmitter__scalar_deleting_dtorCParticleEmitter 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.
0x00ABDE60141CParticleEmitterBase__scalar_deleting_dtorCParticleEmitterBase 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.
0x00ABDEF07032CParticleEmitter__init_and_updateInitializes 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).
0x00AC0200334CParticleEmitterBase__resize_gridResizes 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.
0x00AC03601580CParticleEmitterBase__load_frames_from_actLoads 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.
0x00AC304058CParticleEmitterBase__clear_texturesClears 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.
0x00AC6A90110CAnimation__destroy_tree_node_1cDestructor 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.
0x00ADDAB0132CRsmObjMgr__ctorCRsmObjMgr 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.
0x00ADDD3089CRsmObj__set_vtable_and_cleanupSets object vtable at offset+4 to PTR_FUN_01159a18 and calls json cleanup function. Used during destruction of RSM objects.
0x00ADDD90108CRsmObjMgr__dtorCRsmObjMgr 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.
0x00ADDE0074CRsmObj__dtorCRsmObj destructor. Resets vtable to PTR_FUN_01159a18 and calls json cleanup function.
0x00ADDE50133CRsmObjMgr__scalar_deleting_dtorCRsmObjMgr scalar deleting destructor. Destroys tree and sentinel, conditionally frees the 0x10-byte object if bit 0 of param_2 is set.
0x00ADDEE099CRsmObj__scalar_deleting_dtorCRsmObj scalar deleting destructor. Resets vtable, calls cleanup, conditionally frees the 0x14-byte object if bit 0 of param_2 is set.
0x00ADDF50481CRsmObjMgr__insert_or_update_entryInserts 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.
0x00ADE140104CRsmObjMgr__add_effect_to_entryAdds 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.
0x00ADE510446CRsmObjMgr__apply_effects_to_entityApplies 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.
0x00ADE9D078CRsmObjMgr__get_entry_sizeGets 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.
0x00ADEA2077CRsmObjMgr__has_entryChecks 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.
0x00B21070120CParticleEffect__createFactory function: allocates 0x138 bytes, calls CParticleEffect__constructor. Returns new object or 0 on allocation failure.
0x00CA82E0186CSprite__ctorConstructs CSprite. Calls CSprite__ctor_base, sets vtable to CSprite, creates linked list sentinel (0xC bytes), initializes animation state and rendering fields.
0x00CA8730264CSprite__ctor_baseBase 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.
0x00CA884067CSprite__free_linked_list_nodeFrees a 0xC-byte linked list sentinel node of CSprite if it exists.
0x00CA889067CSprite__free_linked_list_node_variantVariant of CSprite linked list node free. Frees 0xC-byte sentinel if exists.
0x00CA893078CSprite__free_action_list_sentinelFrees the 0xC-byte action list sentinel node of CSprite if it exists.
0x00CA898078CSprite__free_linked_list_sentinel_altAlt variant of CSprite linked list sentinel free. Frees 0xC-byte sentinel if exists.
0x00CA8A20111CSprite__destroy_rb_tree_and_sentinelDestroys all nodes in CSprite's 0x20-byte RB-tree (action map) and frees the sentinel node.
0x00CA8BF065CSprite__destroy_rb_tree_wrapperWrapper that calls CSprite__destroy_rb_tree_and_sentinel to clean up the sprite's RB-tree.
0x00CA8C40291CSprite__dtorDestructor 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.
0x00CA8EE086CSprite__action_map_dtorDestructor for CSprite's action map sub-object. Sets vtable to action map vtable, destroys the 0x20-byte RB-tree and sentinel.
0x00CA8F90165CSprite__dtor_baseBase destructor for CSprite. Sets vtable, releases sprite/act resources, destroys action map RB-tree, destroys STL string name, resets to CGameObject vtable.
0x00CA90A038CSprite__scalar_deleting_dtorScalar deleting destructor for CSprite. Calls CSprite__dtor, frees 0x158 bytes if flag bit 0 set.
0x00CA9260111CSprite__action_map_scalar_deleting_dtorScalar deleting destructor for CSprite's action map. Sets vtable, destroys RB-tree+sentinel, frees 0xC bytes if flag bit 0 set.
0x00CA934038CSprite__base_scalar_deleting_dtorScalar deleting destructor for CSprite base variant. Calls CSprite__dtor_base, frees 0x138 bytes if flag bit 0 set.
0x00CA93D083CSprite__accumulate_distanceAccumulates 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.
0x00CA9470182CSprite__calculate_velocity_vectorCalculates 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].
0x00CA953071CSprite__set_shadow_offset_from_directionSets shadow X/Z offset based on sprite direction angle and shadow distance. Uses normalize and cross product of the direction for perpendicular shadow placement.
0x00CA9610167CSprite__set_facing_toward_pointSets 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.
0x00CA96C053CSprite__calculate_distance_2dCalculates 2D (XZ) distance from sprite to target point using sqrt. Result not stored (likely used by caller).
0x00CA9700103CSprite__calculate_distance_3dCalculates 3D distance from sprite to target point (XYZ). Two-step sqrt: first XZ, then combined with Y.
0x00CA97701704CSprite__build_sprite_render_paramsBuilds 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.
0x00CA9E50590CSprite__render_shadow_quadsRenders 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.
0x00CAA0A0321CSprite__render_wave_distortion_effectRenders 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.
0x00CAA1F0232CSprite__apply_random_vertex_jitterApplies 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.
0x00CAA2E0482CSprite__render_afterimage_trailRenders 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.
0x00CC5080499CGrannyModel__ctor_00cc5080Constructor 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.
0x00CC5390179CGrannyModel__dtorDestructor for CGrannyModel. Frees Granny animation control, destroys 30 mesh objects and their triangle data, frees Granny model instance, chains to base class destructor.
0x00CC5580203CGrannyModel__scalar_deleting_dtor_00cc5580Scalar 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.
0x00CC57A0108CGrannyModel__destroy_meshes_and_instanceFrees 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.
0x00CC5810411CGrannyModel__reload_resourceReloads 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.
0x00CC5C00105CGrannyModel__advance_animationAdvances 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.
0x00CC5EE01546CGrannyModel__render_meshesRenders 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.
0x00CC820044CAnimationBlend__initInitializes 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.
0x00CCD7B0202SpriteActionNode__copy_ctorCopy 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.
0x00D5F3E0480SpriteAction__store_full_node_stringsStores 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.
0x00E4AC7093CSprite__scalar_deleting_dtor_00e4ac70Scalar deleting destructor for CSprite base. Calls CSprite__dtor, frees 0x178 bytes if bit 0 of param_2 set.