Back to legacygamers.net
WARPGATE

Game Render

CRenderPipeline, CD3DDevice, CD3D9Device, CCamera, CMatrix, CTexture, CTextRenderer, CBitmapFont, CSceneManager, GDI+

Functions 572Code 154 KBAddresses 0x0049DC90 to 0x0107ED70Group Game Logic
572 functions
AddressSizeNameDescription
0x0049DC90194CRenderPipeline__static_init_0049dc90Initializes CRenderPipeline static globals: allocates 0x10-byte linked list node, sets scale to 1.0f (0x3f800000), resizes vector to 16 entries, registers atexit_CRenderPipeline_destroy_wrapper for cleanup
0x0049E8F0194CRenderPipeline__static_init_0049e8f0Static init for CRenderPipeline: allocates linked list sentinel (0x10 bytes), clears counters, sets float 1.0 scale, resizes vector to 16 entries, registers atexit destructor
0x004A33F0194CRenderPipeline__static_init_004a33f0Static init for CRenderPipeline: allocates linked list sentinel (0x10 bytes), clears counters, sets float 1.0 scale, resizes vector to 16 entries, registers atexit destructor
0x004A6110194CRenderPipeline__static_init_004a6110Static init for CRenderPipeline: allocates linked list sentinel (0x10 bytes), clears counters, sets float 1.0 scale, resizes vector to 16 entries, registers atexit destructor
0x0053FB0054CColor__constructor_rgbaConstructs a color object with 5 float fields (RGBA + alpha/intensity)
0x0053FB4037CColor__constructor_defaultConstructs a color with RGBA=0 and alpha/intensity=1.0f
0x0053FB7044CVector4__constructorConstructs a 4-component vector (x, y, z, w) from float params
0x00542B50292CD3DSurface__create_rendertargetCreates D3D render target surface with aligned dimensions via CreateRenderTarget
0x00542C80220CD3DSurface__create_from_surfaceCreates D3D surface wrapper from existing IDirect3DSurface9, queries desc for dimensions
0x00542DC0104CD3DSurface__releaseReleases D3D surface COM object and resets vtable to base class
0x00542E60125CD3DSurface__destructorD3D surface destructor: releases COM surface, resets vtable, optionally frees 20-byte obj
0x00542F70142CD3DSurface__fill_solid_colorFills D3D surface rectangle with solid color converted to device pixel format
0x00543000227CD3DSurface__resizeResizes D3D render target: releases old surface and creates new with aligned dimensions
0x005430F0208CD3DSurface__blit_to_surfaceBlits rectangular region from this surface to another D3D surface via StretchRect
0x005431C088CD3DSurface__clear_surfaceClears D3D surface by filling full rect with color via ColorFill
0x0054322077CD3DDevice__convert_rgb_to_pixelConverts RGB components to device pixel format using stored shift/mask values
0x005432A034CD3DSurface__set_paletteSets palette on D3D surface via COM vtable call at offset 0x44
0x00543370131CD3DSurface__get_descGets D3D surface description: format, width, height, pitch via LockRect
0x0054340023CD3DSurface__set_color_keySets color key on D3D surface via COM vtable call at offset 0x68
0x00543420744CD3DSurface__save_to_jpegSaves D3D surface content to JPEG file using Intel JPEG Library (ijlWrite)
0x00543730608CD3DSurface__blit_pixels_with_colorkeyBlits ARGB pixel data to D3D surface with magenta (0xFF00FF) color key transparency
0x00543990186CD3DSurface__create_and_fillCreates render target, blits pixel data onto it, then clears temp surface
0x00543B00140CTexture__constructor_defaultConstructs CTexture with device reference, sets vtable, 1x1 default size
0x00543B90559CTexture__constructor_createConstructs CTexture and creates D3D texture with specified format, width, height, mipmaps
0x00543DC0110CTexture__releaseReleases D3D texture COM object and resets vtable to CTexture
0x00543E30134CTexture__destructorCTexture destructor: releases D3D texture, optionally frees 300-byte object
0x00543FC022CD3DDevice__check_pixel_formatChecks if surface pixel format matches expected format (RGB555, ARGB4444, RGB565, ARGB8888)
0x00544080148CTexture__fill_solid_colorFills texture surface rectangle with solid color converted to pixel format
0x0054412052CTexture__blit_to_textureBlits from source surface to this texture via D3D Blt call
0x00544160196CTexture__blit_regionBlits rectangular region from source texture to this texture via D3D Blt
0x00544230445CTexture__recreateRecreates D3D texture with new dimensions and pixel format, releases old surface first
0x005443F023CTexture__draw_callbackInvokes virtual draw method at vtable offset 0x3C with position and pixel format
0x00544410511CTexture__draw_sprite_quadSubmits textured quad to render queue: 4 vertices with UV coords, position, and color
0x00544610551CTexture__draw_sprite_quad_from_regionDraws a textured quad using UV sub-region from object fields (offsets 0x14/0x18) with white color. Unlike draw_sprite_quad which takes full texture UVs, this uses a stored sub-rectangle for sprite sheet rendering.
0x00544840544CTexture__draw_sprite_quad_from_region_coloredDraws a textured quad using UV sub-region from object fields (offsets 0x14/0x18) with a custom color parameter. Uses stored sub-rectangle for sprite sheet rendering with per-vertex tinting.
0x00544A7037CTexture__is_surface_validChecks if DirectDraw surface at offset 0x128 is still valid (not lost). Calls IDirectDrawSurface::IsLost, returns true if surface is OK (HRESULT >= 0), false if lost or null.
0x00544AA0134CTexture__get_surface_descRetrieves DirectDraw surface description via GetSurfaceDesc and fills output struct with pixel format info
0x00544B3026CTexture__set_color_keySets color key on DirectDraw surface via IDirectDrawSurface::SetColorKey vtable call
0x00544B5052CTexture__select_pixel_formatDirectDraw EnumPixelFormats callback that stores matching format by bpp (16-bit 555/4444/565 or 32-bit ARGB)
0x00544C901288CTexture__lock_and_blit_pixelsLocks DirectDraw surface, converts ARGB pixels to surface format (555/4444/565/32bit) with color key, then unlocks
0x005451B0231CTexture__generate_mipmapsIterates attached mipmap surfaces, halving dimensions each level and blitting source data to each
0x005452A0320CTexture__clear_and_blit_regionLocks surface region, clears it with memset based on bpp, then calls blit helper and unlocks
0x00545790172CBitmapFont__constructorInitializes bitmap font object with vtable, linked list node, CreateCompatibleDC for rendering
0x0054584067CBitmapFont__free_list_nodeFrees the 12-byte linked list node at offset +4 if allocated
0x0054589078CBitmapFont__free_list_node_safeSafe variant of list node free with SEH frame, frees 12-byte node at offset +4
0x005458E0103CBitmapFont__destroy_linked_listWalks and frees all 12-byte nodes in the intrusive linked list, then frees sentinel node
0x005459F0254CBitmapFont__destructorDestroys bitmap font: releases cached surfaces, frees list nodes, deletes GDI DC and bitmap objects
0x00545B20275CBitmapFont__scalar_deleting_destructorScalar deleting destructor: runs destructor logic and optionally frees 0x2C-byte object memory
0x00545C40477CBitmapFont__render_sprite_layersIterates sprite layers, loads SPR/ACT frames, applies scale and draws each layer via vtable call
0x00545E20645CBitmapFont__draw_rle_sprite_to_bufferDecodes RLE-compressed indexed sprite data, applies palette lookup with 555-to-RGB conversion, writes to pixel buffer
0x005460B02341CBitmapFont__draw_scaled_minimap_tileRenders scaled minimap tile from 4444/555 source texture to ARGB buffer with color transform and alpha
0x005469E02673CBitmapFont__draw_scaled_minimap_spriteRenders scaled minimap sprite with bounds checking, color blending, and flip support for 4444/555 formats
0x00547460177CBitmapFont__fill_rect_colorFills pixel buffer region (or entire buffer if rect is null) with ARGB color, byte-swapping R and B
0x00547790163CBitmapFont__blit_with_colorkeyCopies pixel rect from source buffer to this buffer, skipping magenta (0xFF00FF) colorkey pixels
0x00547840561CBitmapFont__blit_with_alpha_blendBlits source region to this buffer with per-pixel alpha blending or opaque copy (skipping magenta colorkey)
0x00547A80254CBitmapFont__create_dib_sectionCreates 32-bit top-down DIB section for offscreen rendering, releases old cached surfaces and GDI objects
0x00547B80264CBitmapFont__render_cached_tilesRenders cached surface tiles in 256x256 chunks or full-surface mode by iterating linked list nodes
0x00547C90114CBitmapFont__flush_to_textureSets alpha to 0xFF for all pixels then creates or updates DirectDraw texture from pixel buffer
0x00547D1021CBitmapFont__get_dcReturns the compatible DC handle and marks the buffer as dirty
0x00547D4061CBitmapFont__ensure_sizeResizes DIB section if requested dimensions exceed current buffer width or height
0x00547D801197CBitmapFont__scale_and_blit_pixelsScales source pixel array by X/Y factors (nearest-neighbor) and writes to offscreen pixel buffer
0x00548230158CBitmapFont__copy_pixels_to_bufferCopies pixel array to buffer at (x,y) with bounds check, optionally skipping magenta colorkey pixels
0x005482D0166CBitmapFont__compute_alpha_from_luminanceCalculates per-pixel alpha from RGB luminance average divided by divisor, writes to alpha byte
0x00548380709CBitmapFont__sync_to_surfacesSyncs dirty pixel buffer to DirectDraw surfaces: creates 256x256 tile surfaces or single surface, copies pixel data
0x00548650296CBitmapFont__darken_rectDarkens pixels in rect by multiplying RGB by (100-param)/100, skipping magenta colorkey
0x00548780615CBitmapFont__blit_subregion_blendedCopies subregion from source buffer with optional colorkey skip and per-pixel alpha blending
0x005489F0306CBitmapFont__adjust_brightness_rectAdds brightness offset to each RGB channel in rect, clamping to [0,255], skipping magenta colorkey
0x0054926012CTextureProxy__releaseForwards release call to inner texture via vtable offset 0x24
0x0054929012CTextureProxy__restoreForwards restore call to inner texture via vtable offset 0x28
0x005492A014CTextureProxy__get_widthForwards get_width call to inner texture via vtable offset 0x18
0x005492B012CTextureProxy__get_heightForwards get_height call to inner texture via vtable offset 0x1C
0x005492C047CTextureProxy__ensure_sizeChecks if inner texture meets minimum dimensions, calls resize via vtable if too small
0x005492F035CTextureProxy__blit_regionForwards blit region call to inner texture via vtable offset 0x20
0x0054932035CTextureProxy__blit_region_directForwards blit region call to inner texture with direct params via vtable offset 0x20
0x005493B0249CD3DDeviceCaps__init_defaultsInitializes D3D device capabilities struct with default values: texture sizes=8, all caps=0
0x005494C0172CD3DDevice__clamp_texture_dimensionsRounds dimensions up to next power-of-2, clamps to device min/max texture size and aspect ratio
0x0054957070CD3DDevice__restore_primary_surfaceRestores primary DirectDraw surface via Blt, falls back to BltFast if Blt fails
0x005495C0118CD3DDevice__check_and_restore_surfacesChecks if surfaces are lost (DDERR_SURFACELOST), restores them and reloads D3D device if needed
0x00549640141CD3DDevice__test_cooperative_levelTests cooperative level on primary, secondary, and Z-buffer surfaces, restores device if lost
0x005496D088CD3DDevice__clear_viewport_with_colorClears the D3D viewport with both color and Z-buffer (flags=3), using full client rect and specified ARGB color parameter
0x0054973085CD3DDevice__clear_viewportClears the D3D viewport with z-buffer clear flag using full client rect
0x00549790132CD3DDevice__flip_or_blit_to_frontFlips to front buffer in fullscreen, or blits backbuffer to front in windowed mode via BltFast
0x005498A01255CD3DDevice__create_surfacesCreates primary/backbuffer surfaces, Z-buffer, sets cooperative level and display mode for windowed or fullscreen
0x00549E10276CD3DDevice__create_d3d_deviceCreates Direct3D device from DirectDraw, sets viewport, enumerates texture formats requiring 32-bit
0x00549F30203CD3DDevice__create_directdrawCreates DirectDraw7 object, queries display mode caps, sets cooperative level with exclusive/normal flags
0x0054A000886CD3DDevice__initialize_fullFull D3D initialization: creates DirectDraw, surfaces, D3D device, viewport, Z-buffer, and texture format
0x0054A380543CD3DDevice__create_render_pipelineDetects pixel format, queries device caps, creates CRenderPipeline with viewport and ambient color
0x0054A5A0162CD3DDevice__create_render_targetCreates render target surface, falls back to offscreen plain if dimensions exceed max texture size
0x0054A650237CD3DDevice__recreate_zbufferRecreates Z-buffer surface with current pixel format and attaches to render target
0x0054A74039CD3DDevice__extract_blue_channelExtracts and rescales blue channel from pixel value using device-specific mask and shift
0x0054A77039CD3DDevice__extract_green_channelExtracts and rescales green channel from pixel value using device-specific mask and shift
0x0054A7A039CD3DDevice__extract_red_channelExtracts and rescales red channel from pixel value using device-specific mask and shift
0x0054A7D0218CD3DDevice__release_all_objectsReleases all D3D/DDraw objects: device, surfaces, Z-buffer, clipper, restores cooperative level
0x0054A8D089CD3DDevice__set_clipperCreates clipper, associates with HWND, and attaches to primary surface for windowed rendering
0x0054A93060CD3DDevice__update_anisotropic_flagsSets anisotropic filtering global flags based on device capability bit 0x20 and config flag
0x0054A9C066CD3DDevice__restore_display_modeRestores original display mode in fullscreen, redraws menu bar and window
0x0054AA1056CD3DDevice__unlock_surfacesUnlocks back and front surfaces, then flips the surface chain
0x0054AAD0895CD3DDevice__startupFull device startup: initializes D3D, sets render states (lighting, alpha, textures), configures texture stages
0x0054AE5053CD3DDevice__is_valid_texture_sizeReturns true if width/height are within device min/max texture size limits
0x0054AE9027CD3DDevice__restore_lost_surfacesRestores Z-buffer surface and reloads all DirectDraw surfaces after device loss
0x0054AEB070CD3DDevice__blit_backbuffer_to_primaryBlits render target to primary surface via Blt, falls back to BltFast on failure
0x0054AF108CD3DDevice__mark_surfaces_lostSets surface-lost flag at offset 0x248 to trigger restoration on next frame
0x0054AF20288CD3DDevice__present_framePresents rendered frame: handles windowed blit, fullscreen flip, and virtual desktop positioning
0x0054B0401913CD3DDevice__calibrate_texture_coordinatesRenders test quads to find optimal UV bias for pixel-perfect texturing, stores result in global DAT_01312de0/de4
0x0054B7C0104CRenderState__init_defaultsInitializes render state object: zeros all state fields, clears 0x1A0 bytes of render data
0x0054B840219CD3DDevice__find_best_display_modeEnumerates display modes matching resolution, selects highest refresh rate available
0x0054B92091CD3DDevice__acquire_adapter_infoQueries DirectDraw adapter identifier and stores in device struct at offset 0x530
0x0054B980197CD3DDevice__calc_clamped_texture_sizeRounds to next power-of-2 and clamps to device max texture size, enforces aspect ratio constraint
0x0054BA50114CD3D9Device__create_swap_chainCreates D3D9 swap chain for presentation, acquires back buffer from chain
0x0054BAD050CD3D9Device__begin_sceneChecks device cooperative status, calls IDirect3DDevice9::BeginScene (vtable 0xA4), then resets texture stage counters. Returns 1 on success, 0 on failure.
0x0054BB1067CD3D9Device__set_scissor_testSets D3D9 scissor rect if device supports it (D3DCAPS bit 0x40000000)
0x0054BB60426CD3D9Device__check_device_statusTests D3D9 cooperative level, handles device lost/reset/removal, logs errors with HRESULT lookup
0x0054BD10643CD3D9Device__initializeCreates D3D9Ex, finds display mode, creates device with present params, queries adapter and device caps
0x0054BFA0114CD3D9Device__release_allReleases D3D9 device, swap chain, back buffer, and adapter objects
0x0054C02038CD3D9Device__update_anisotropic_filterEnables anisotropic filtering flag if device supports it and global config flag is set
0x0054C05031CD3D9Device__end_sceneFlushes render state and calls IDirect3DDevice9::EndScene
0x0054C080188CD3D9Device__find_display_modeFinds matching display mode for adapter, falls back to CheckDeviceType if enumeration fails
0x0054C140278CD3D9Device__startupFull D3D9 startup: initializes device, queries caps, sets render states, clips cursor in fullscreen
0x0054C44075CD3D9Device__stretch_rect_to_backbufferStretches render target surface to back buffer via StretchRect, releases surface on failure
0x0054C49063CD3D9Device__clip_cursor_fullscreenClips cursor to window rect in fullscreen mode (when windowed flag is 0)
0x0054C4D061CD3D9Device__clip_cursor_fullscreen_voidClips cursor to window rect in fullscreen mode (void return variant)
0x0054C51043CD3D9Device__presentCalls IDirect3DDevice9::Present(0,0,0,0) and stores HRESULT at offset 0x68C
0x0054D4B060CGDIContext__acquire_dcAcquires DC from provider via vtable, saves current font, sets transparent background mode
0x0054D4F052CTextVertex__initInitializes text vertex with position, color, bold flag, and zero width/height
0x0054D530135CGDIPlusContext__constructorInitializes GDI+ context: zeros fields, calls GdiplusStartup to initialize GDI+ subsystem
0x0054D7E085CGDIContext__release_dcRestores original font into DC and releases it back to provider via vtable
0x0054D890129CGDIPlusContext__destructorDestroys GDI+ context: deletes cached font objects, shuts down GDI+, frees font vector
0x0054D98056CTextVertex__equalsCompares two text vertices for equality on all 5 fields (position, color, bold, italic)
0x0054D9C053CTextVertex__less_thanLexicographic less-than comparison on first 3 fields of text vertex
0x0054DC90221CTextVertex__create_gdi_fontCreates GDI HFONT from vertex settings: enumerates font families, applies bold/italic, stores handle
0x0054DD70355CTextVertex__create_rix_fontCreates LOGFONT from Rix font family (Squirrel/Loveangel/Diary/MiniHeart/Freshman/Magic) by ID, calls CreateFontIndirectA
0x0054DEE0572CTextVertex__load_scdream_fontLoads SCDream4/SCDream6 OTF font via AddFontResourceExA, creates HFONT with bold=700 if flag set
0x0054E12024CTextVertex__set_rix_font_handleCreates Rix font with size 0xc and stores HFONT at this+0x10
0x0054E140356CTextVertex__remove_scdream_fontRemoves SCDream4/SCDream6 font resource via RemoveFontResourceExA if font type is 0x1d
0x0054E2B0421render_line_as_textured_quadComputes perpendicular offset from line (p1,p2) using acos/sin/cos, submits a textured quad strip
0x0054E460302render_filled_rectRenders solid colored rectangle via 4-vertex mesh, checks alpha!=0, enqueues with blend mode 0x201
0x0054E590316render_filled_rect_additiveRenders solid colored rectangle with additive blending (src=5 dst=6, mode 0x205)
0x0054E6D0692render_dashed_line_as_quadsRenders dashed line from (p1,p2) to (p3,p4) as repeated textured quad segments with gap spacing
0x0054ED40309render_textured_rectRenders textured rectangle with UV coords (0,0)-(1,1), optional texture override, blend mode 0x201
0x0054EE80333render_textured_rect_custom_uvRenders textured rectangle with caller-specified UV coordinates per corner, blend mode 0x201
0x0054EFD0744render_textured_rect_from_textureRenders textured rect computing UV from texture dimensions via vtable calls, blend mode 0x201
0x0054F2C026CTextVertex__compare_font_nameEnumFontFamiliesEx callback: compares font name with string at param+0x1c via _stricmp
0x0054F2E0115CTextVertex__find_color_code_offsetScans string for pipe-delimited color code (\|XX), returns offset of first color code or full length
0x0054F3601031CTextVertex__get_or_create_cached_fontLooks up font in sorted vector cache by (type,size,charset,bold,italic); creates if missing via CreateFontIndirectA
0x0054F770188CTextVertex__find_system_font_nameEnumerates system fonts to find matching face name, tries primary then fallback font table
0x0054F830102CTextVertex__lookup_font_index_by_nameSearches fallback font name table for matching string, returns table index or 0 if not found
0x0054F8A01117CTextVertex__get_gdiplus_font_family_nameLoads private font file via GDI+, gets family name via GdipGetFamilyName, converts to ANSI string
0x0054FD00155CTextVertex__measure_text_with_color_codesMeasures text width handling embedded \|XX color codes, sums widths of each color segment
0x0054FF1075CTextVertex__check_starts_with_color_codeReturns 1 if string starts with "\|XX" color code pattern (pipe + two hex digits)
0x0054FF6059CTextVertex__check_caret_color_codeReturns 1 if string starts with ^XXXXXX (caret + 6 hex digits) color code format
0x0054FFA015CTextVertex__is_hex_digitReturns nonzero if byte is valid hex digit via lookup table at DAT_01311f60
0x0054FFB035CTextVertex__parse_hex_color_byteParses two hex chars at offset+1 and +2 into a color byte value using hex lookup table
0x0054FFE0283CTextVertex__configure_font_styleSets font type/size/name based on global font mode (1-12), adjusts size for specific charset modes
0x0055013018CTextVertex__set_bk_colorWrapper: calls SetBkColor on the HDC stored at this+0
0x0055015018CTextVertex__set_bk_modeWrapper: calls SetBkMode on the HDC stored at this+0
0x0055017018CTextVertex__set_text_colorWrapper: calls SetTextColor on the HDC stored at this+0
0x00550190141CTextVertex__draw_text_segmentDraws single text segment, splits at color code if present and draws second part with parsed color
0x00550220323CTextVertex__draw_text_with_color_codesDraws text with embedded \|XX color codes, iterates through segments advancing x position
0x00550520351CTextVertex__measure_text_extentMeasures text via MultiByteToWideChar + GetTextExtentPoint32W, optionally sums ABC widths for italic
0x00550680248CTextVertex__draw_text_outDraws text via MultiByteToWideChar + TextOutW with font selection from cache
0x00550AF039CD3DDeviceState__initInitializes D3D device state block: zeroes 0x4c8 bytes of render/texture/sampler state storage
0x00550B20223CD3DDeviceState__copy_from_deviceCopies D3D state from device: 0xd2 render states, 0x42 texture stage states, 0x1c sampler states
0x00550C0049CD3DDeviceState__reset_texturesClears 2 texture slots: sets cached texture to NULL and calls device SetTexture(stage, NULL)
0x00550F5021CD3DDeviceState__clear_countersZeros two counters at offset 0x4c8 and 0x4cc in device state block
0x0055143030CD3DDeviceState__get_fvfReturns cached FVF (flexible vertex format) value from state block at offset +4
0x0055145034CD3DDeviceState__get_render_stateReturns cached render state value by index from state block array at offset +8
0x0055148062CD3DDeviceState__get_sampler_stateReturns cached sampler state value by (stage, type) from array at offset +0x458, max 2 stages
0x005514C055CD3DDeviceState__get_texture_stage_stateReturns cached texture stage state by (stage, type) from array at offset +0x350, max 2 stages
0x00551500201CD3DDeviceState__capture_all_statesCaptures full D3D state: FVF + 0xd2 render states + 0x42 texture stage states + 0x1c sampler states
0x005515D0199CD3DDeviceState__refresh_all_statesRefreshes cached D3D state from device: FVF + render states + texture stage + sampler states
0x005516A0314CD3DDeviceState__apply_dirty_statesCompares cached vs device states, applies only changed render/texture/sampler states to D3D device
0x005517E062CD3DDeviceState__set_fvfSets FVF on device if changed from cached value, updates cache on success
0x0055182070CD3DDeviceState__set_render_stateSets D3D render state if changed from cached value, updates cache on success
0x00551870109CD3DDeviceState__set_sampler_stateSets D3D sampler state if changed from cached value, max 2 stages, updates cache on success
0x005518E089CD3DDeviceState__set_textureSets D3D texture on stage if changed from cached value, max 2 stages, updates cache on success
0x00551940103CD3DDeviceState__set_texture_stage_stateSets D3D texture stage state if changed from cached, max 2 stages x 0x21 types, updates cache
0x005529C0727CMatrix__apply_view_transformMultiplies 3x4 matrix by global view matrix with translation offset from global camera position
0x00552CA0718CMatrix__multiply_by_global_with_translationMultiplies this matrix in-place by a global 3x3 matrix (at DAT_01312438) and adds translation from param_2. Same as apply_view_transform but with explicit translation vector parameter.
0x00552F70759CMatrix__set_rotation_xSets 3x4 matrix to X-axis rotation by angle using sin/cos, preserves translation
0x00553270767CMatrix__set_rotation_ySets 3x4 matrix to Y-axis rotation by angle using sin/cos, preserves translation
0x00553570735CMatrix__set_rotation_zSets 3x4 matrix to Z-axis rotation by angle using sin/cos, preserves translation
0x00553850771CRay__intersect_AABBRay-AABB intersection test using slab method. Tests ray against 3 axis-aligned slab pairs. Returns 1 if ray hits the box within the ray's max distance (param_1[6]), 0 otherwise.
0x00553B60537CRay__intersect_triangleRay-triangle intersection using Moller-Trumbore algorithm. Computes barycentric coordinates (u,v) and distance t. Returns 1 if intersection within valid range, outputs u/v/t via param_5/param_6/param_7.
0x00553D80734CRay__intersect_AABB_altRay-AABB intersection test (alternate version). Same slab method as CRay__intersect_AABB but with slightly different early-out logic. Returns 1 if hit, 0 otherwise.
0x00554060531CRay__intersect_triangle_altRay-triangle intersection (alternate version). Moller-Trumbore method. Returns 1 if hit, outputs barycentric u/v and distance t. Does not check max distance like AABB version.
0x00554280189trig_table_init_sincos_361Initializes precomputed trigonometry lookup tables for 361 entries (0-360 degrees). Stores angle (radians), sin, cos, -angle, -sin, -cos in parallel global arrays at DAT_01387460+.
0x00554340143CMatrix__extract_quaternion_from_rotationExtracts a quaternion (w,x,y,z) from a 3x3 rotation matrix using the standard trace-based method. Stores result at param_2: [+0x10]=w, [+4]=x, [+8]=y, [+0xC]=z.
0x005543D071trig_table_lookup_cosLooks up cosine value from precomputed table by integer index (0-360 degrees). Handles wraparound for indices outside [-360,360] range. Negative indices use the negated cosine table.
0x0055442071trig_table_lookup_angleLooks up angle (radian) value from precomputed table by integer index (0-360 degrees). Handles wraparound for indices outside [-360,360] range. Negative indices use the negated angle table.
0x0055447071trig_table_lookup_sinLooks up sine value from precomputed table by integer index (0-360 degrees). Handles wraparound for indices outside [-360,360] range. Negative indices use the negated sine table.
0x00554620208CMatrix__is_approximately_identityChecks if a 3x4 matrix is approximately identity. Returns 1 if diagonal elements are ~1.0 and all off-diagonal/translation elements are ~0.0 (within epsilon tolerance DAT_010dd074).
0x0055490027CMatrix__extract_diagonal_3x3Extracts diagonal elements from source matrix into 3-element vector
0x00554920539CMatrix__compute_inverse_3x4Computes inverse of 3x4 affine transform matrix using cofactor expansion
0x00554B4068CMatrix__init_identity_set_scale_diagonalLoads identity then sets diagonal scale factors [0],[4],[8]
0x00554B90309CMatrix__from_quaternion_rotation_onlyBuilds 3x4 rotation matrix from quaternion, translation zeroed
0x00554CD0309CMatrix__from_quaternion_rotation_only_altDuplicate quaternion-to-rotation-matrix conversion
0x00554E10337CMatrix__from_axis_angle_with_translationBuilds 3x4 matrix from axis-angle rotation with translation
0x00554F70336CMatrix__from_axis_angle_rotation_onlyBuilds 3x4 rotation matrix from axis-angle, translation zeroed
0x005550C069CMatrix__init_identity_set_translationLoads identity then sets translation [9],[10],[11]
0x00555110589CMatrix__build_lookat_matrixBuilds look-at view matrix from eye, target, and up vector
0x00555360110CMatrix__init_rotation_xBuilds identity then sets X-axis rotation using sin/cos
0x005553D0112CMatrix__init_rotation_yBuilds identity then sets Y-axis rotation using sin/cos
0x00555440112CMatrix__init_rotation_zBuilds identity then sets Z-axis rotation using sin/cos
0x005554B0536CMatrix__multiply_3x4Multiplies two 3x4 affine matrices including translation
0x005556D0339CMatrix__normalize_columnsNormalizes each column of 3x4 matrix by vector magnitudes
0x00555AF0666CMatrix__multiply_inplace_with_translationIn-place multiply 3x4 matrix with translation application
0x00555D9069CQuaternion__dot_productComputes dot product of two 4-component quaternions
0x00555DE0240CQuaternion__multiplyMultiplies two quaternions using Hamilton product formula
0x00555ED0306CQuaternion__to_rotation_matrixConverts quaternion to 3x3 rotation matrix in 3x4 layout
0x00556010184CQuaternion__to_axis_angleConverts quaternion to axis-angle using acos and sin
0x005560D0582CMatrix__compute_inverse_orthonormalComputes inverse by transposing rotation and normalizing
0x00556320533CMatrix__build_oriented_frame_from_pointsBuilds orthonormal 3x4 frame from two 3D points
0x00556540200CQuaternion__from_axis_angleCreates quaternion from axis vector and angle
0x00556610132CRay__squared_distance_to_pointComputes squared perpendicular distance from point to ray
0x005566A0426CMatrix__build_frame_from_directionBuilds orthonormal 3x4 frame from direction vector
0x00556850435CMatrix__build_frame_from_normal_vectorBuilds orthonormal 3x4 frame from normal with up reference
0x00556A1090CMatrix__set_from_four_vectorsSets 3x4 matrix columns from four 3-element vectors
0x00556A70257CMatrix__set_from_axes_and_positionSets 3x4 matrix from 3 axis vectors and position
0x00556B80693CMatrix__build_view_matrix_from_pointsBuilds view matrix from eye and target points
0x00556E4016math_cosf_wrapperWrapper around x87 fcos instruction
0x00556E5016math_sinf_wrapperWrapper around x87 fsin instruction
0x00556E6016math_sqrtf_wrapperWrapper around SQRT intrinsic
0x00559260178CRenderer__draw_batch_meshesIterates mesh list, sets render state and texture, draws
0x00559320175CRenderer__draw_batch_meshes_alpha_testIterates mesh list with alpha test render state
0x00559420848CRenderPipeline__constructorInitializes render pipeline with 20+ internal buffers
0x0055977067CRenderPipeline__free_buffer_8byteFrees 8-byte allocation at this+4
0x005597C0131CRenderPipeline__destroy_linked_list_and_vectorClears vector and frees linked list nodes
0x005598E0103CRenderPipeline__destroy_linked_listWalks and frees 0x10-byte linked list nodes
0x005599E071CRenderPipeline__destructorSets vtable and calls cleanup to free all buffers
0x00559A3099CRenderPipeline__destructor_scalarScalar deleting destructor, frees 0x284-byte object
0x00559AA0305CRenderPipeline__acquire_render_node_poolGets/allocates pool node from linked list at this+0xC
0x00559BE0107CRenderPipeline__add_to_post_process_queueAdds item to post-process queue at 0x1F8 or 0x204
0x00559C5065CRenderPipeline__add_to_overlay_queueAdds item to overlay render queue at 0x240
0x00559CA0720CRenderPipeline__classify_and_enqueue_meshRoutes mesh to correct queue based on material flags
0x00559F70262CRenderPipeline__submit_renderable_objectAllocates render node, sets draw type 3, classifies mesh
0x0055A090369CRenderPipeline__compute_screen_rayComputes normalized ray from screen pixel coordinates
0x0055A21045CRenderPipeline__toggle_fog_stateEnables or disables fog rendering
0x0055A240276CRenderPipeline__set_fog_color_blendedBlends fog color with global based on alpha ratio
0x0055A360401CRenderPipeline__begin_frameResets all 20+ render queues, recycles pool nodes
0x0055A500732CRenderPipeline__setup_lighting_and_fogSets up D3D lighting materials and fog parameters
0x0055A7E0315CRenderPipeline__draw_hourly_clock_overlayDraws clock overlay that fades in/out on the hour
0x0055A920899CRenderPipeline__draw_coordinate_displayRenders map coordinate digits using sprite font
0x0055ACB076CRenderPipeline__draw_indexed_primitive_FVF1C4Draws indexed primitive with FVF 0x1C4
0x0055AD0076CRenderPipeline__draw_indexed_primitive_FVF2C4Draws indexed primitive with FVF 0x2C4
0x0055AD5076CRenderPipeline__draw_indexed_primitive_FVF2C4_altDraws indexed primitive FVF 0x2C4 variant
0x0055ADA099CRenderPipeline__begin_sceneCalls D3D BeginScene and begins frame reset
0x0055AFA091CRenderPipeline__pack_rgb565_colorPacks RGB into 16-bit using format shift/mask values
0x0055B000183CRenderPipeline__end_frame_and_presentTracks FPS, calls EndScene and Present
0x0055B0C0151CRenderPipeline__sort_and_draw_opaque_queueSorts opaque queue at 0x180 by depth and draws
0x0055B1601019CRenderPipeline__draw_alpha_blended_meshesDraws alpha blended queues at 0x18C and 0x1BC
0x0055B560110CRenderPipeline__draw_unsorted_queue_198Draws meshes from queue at 0x198 unsorted
0x0055B5D0151CRenderPipeline__sort_and_draw_queue_1A4Sorts and draws queue at 0x1A4 by depth
0x0055B670151CRenderPipeline__sort_and_draw_queue_228Sorts and draws queue at 0x228 by depth
0x0055B720219CRenderPipeline__draw_blended_objects_queue_1ECDraws objects from queue 0x1EC with blend states
0x0055B800151CRenderPipeline__sort_and_draw_queue_1C8Sorts and draws queue at 0x1C8 by depth
0x0055B8A0151CRenderPipeline__sort_and_draw_queue_1D4Sorts and draws queue at 0x1D4 by depth
0x0055B940151CRenderPipeline__sort_and_draw_queue_1E0Sorts and draws queue at 0x1E0 by depth
0x0055B9E0353CRenderPipeline__draw_ground_meshesDraws ground queues at 0x15C and 0x1B0
0x0055BB50226CRenderPipeline__draw_transparent_depth_sorted_234Draws transparent objects from queue 0x234
0x0055BC40142CRenderPipeline__sort_and_draw_queue_168Sorts queue at 0x168 by texture and draws
0x0055BCD0142CRenderPipeline__sort_and_draw_queue_174Sorts queue at 0x174 by texture and draws
0x0055BD60217CRenderPipeline__draw_multitexture_queue_1F8Draws dual-texture meshes from queue 0x1F8
0x0055BE40708CRenderPipeline__draw_lightmap_overlay_queue_240Draws lightmap overlay meshes from queue 0x240
0x0055C110151CRenderPipeline__sort_and_draw_queue_21CSorts and draws queue at 0x21C by depth
0x0055C1B0182CRenderPipeline__draw_blended_objects_queue_210Draws objects from queue 0x210 with blend modes
0x0055C2703223CRenderPipeline__render_all_queuesMain render pass drawing all queues
0x0055CF10167CRenderPipeline__setup_scene_lighting_paramsCopies global light data, sets fog type
0x0055D0F046CRenderPipeline__get_elapsed_time_floatReturns elapsed time at offset 0x264 as float
0x0055D15019CRenderPipeline__world_to_screen_scaleConverts world-space size to screen-space
0x0055D1704CRenderPipeline__get_near_clipReturns near clip plane distance from offset 0x18
0x0055D1804CRenderPipeline__get_far_clipReturns far clip plane distance from offset 0x1C
0x0055D200269CTextRenderer__measure_text_dimensionsMeasures text dimensions (width/height) for the given string. Acquires GDI DC, configures font style, measures text accounting for color codes, then releases DC. Returns dimensions via param_1.
0x0055D3E0146CRenderPipeline__query_display_format_capsQueries D3D display format capabilities
0x0055D480219CRenderPipeline__project_world_to_screen_2dProjects 3D world point to 2D screen coordinates
0x0055D560229CRenderPipeline__project_world_to_screen_offsetProjects to screen with custom offset for centering
0x0055D650243CRenderPipeline__project_world_to_screen_with_depthProjects to screen with perspective depth value
0x0055D750243CRenderPipeline__project_world_to_screen_with_depth_altDuplicate projection function
0x0055D8601410CRenderPipeline__save_screenshot_bmpSaves backbuffer to BMP with optional watermark
0x0055DDF01346CRenderPipeline__save_screenshot_jpegSaves backbuffer to JPEG using Intel JPEG Library
0x0055E3401268CRenderPipeline__save_logo_screenshot_jpegCaptures screen with logo overlay as JPEG
0x0055E840957CRenderPipeline__draw_overlays_and_screen_effectsDraws clock, coordinates, debug, glitch effects
0x0055EC0016CRenderPipeline__set_fog_colorSets fog color ARGB value at offset 0x270
0x0055EC10235CRenderPipeline__set_directional_lightSets D3D directional light 0 with negated direction, diffuse and ambient colors
0x0055ED0060CRenderPipeline__set_texture_stage1Sets D3D texture on stage 1, caches at offset 0x26C
0x0055ED502296CRenderPipeline__set_texture_blend_modeSets D3D texture stage states for 16 different blend modes (0-15)
0x0055F69016CRenderPipeline__set_ambient_colorSets ambient color ARGB value at offset 0x24C
0x0055F6A0300CRenderPipeline__set_viewport_dimensionsSets viewport width/height, computes projection scales and FOV
0x0055F7D0210CRenderPipeline__set_texture_by_stageSets D3D texture on specified stage with caching
0x0055F8B060CRenderPipeline__set_texture_stage0Sets D3D texture on stage 0, caches at offset 0x268
0x0055F8F0420CRenderPipeline__draw_fps_counterDraws FPS counter text using GDI TextOutA at bottom-right
0x0055FAA037CRenderPipeline__reset_fps_timerResets FPS counter state at offsets 0x25C-0x264
0x0055FAD0217CRenderPipeline__draw_text_at_positionDraws text string at (x,y) with specified color via GDI
0x0055FF60326CRenderPipeline__grow_circular_bufferGrows circular buffer by doubling, copies with wraparound
0x00560A402903CSceneManager__constructorInitializes scene manager with vtable, linked lists, circular buffers, vectors
0x005615A065CSceneManager__cleanup_wrapper_AWrapper calling internal cleanup with SEH frame
0x005615F065CSceneManager__cleanup_wrapper_BWrapper calling internal cleanup B with SEH frame
0x0056164065CSceneManager__cleanup_wrapper_CSEH wrapper calling CSceneManager__destroy_circular_buffer_168byte for 0xa8-byte element circular buffer cleanup
0x00561690148CSceneManager__destroy_render_node_poolsDestroys render node pools: calls free_render_node_pool_lists, then frees two linked lists of 8-byte nodes
0x00561730131CSceneManager__destroy_circular_queueDestroys a circular queue: calls STL_vector_deallocate to free the backing array, then frees linked list of 0x14-byte sentinel nodes
0x0056185075CSceneManager__destroy_element_arrayCalls _eh_vector_destructor_iterator_ to destroy array of 25 elements (4 bytes each), using CSceneManager__free_node_list_with_vectors as dtor
0x005618A0201CSceneManager__destroy_circular_buffer_40byteDestroys circular buffer with 0x28-byte elements: drains count to zero, frees each element slot, frees backing array and sentinel node
0x00561970204CSceneManager__destroy_circular_buffer_188byteDestroys circular buffer with 0xBC-byte elements: drains count to zero, frees each element slot, frees backing array and sentinel node
0x00561A50204CSceneManager__destroy_circular_buffer_168byteDestroys circular buffer with 0xA8-byte elements: drains count to zero, frees each element slot, frees backing array and sentinel node
0x00561B3083CSceneManager__free_linked_listFrees a singly-linked list of 8-byte nodes, walking via first field as next pointer
0x00561B90197CSceneManager__free_node_list_with_vectorsFrees linked list of 0x20-byte nodes, each containing a vector of 0x28-byte elements. Deallocates vector buffer then node for each entry.
0x00561C60103CSceneManager__free_circular_queue_sentinelFrees a circular queue sentinel: clears sentinel's count, walks and frees linked list of 0x14-byte nodes, then frees sentinel itself
0x00561CD065CSceneManager__cleanup_wrapper_DSEH wrapper calling CSceneManager__destroy_circular_queue
0x00562090464CSceneManager__dtorCSceneManager destructor: resets vtable, deallocates 20+ internal vectors (4-byte and 8-byte types), destroys circular buffers, render node pools, element arrays, and linked lists
0x0056226038CSceneManager__scalar_deleting_dtorCSceneManager scalar deleting destructor: calls dtor, optionally frees 0x25C-byte object if flag bit 0 is set
0x00562290221CSceneManager__free_render_node_pool_listsFrees two render node pool linked lists: walks each list, for each node with a non-null sub-buffer frees 32-byte elements then 12-byte header, then frees the 8-byte list nodes
0x00562370320CSceneManager__circular_buffer_resize_fillResizes a circular buffer's backing array to param_2 slots, filling each with param_3. If already large enough, fills existing elements. Handles aligned allocation for >4KB.
0x005624C0400CSceneManager__circular_buffer_growGrows circular buffer capacity by at least param_2 slots (doubles until sufficient, min 8). Copies existing data preserving wrap-around, frees old buffer. Throws deque too long on overflow.
0x00564D90131CSceneManager__render_batch_with_alpha_testCSceneManager: render batch with alpha test
0x00564E20130CSceneManager__render_batch_with_alpha_blendCSceneManager: render batch with alpha blend
0x00564EB0144CSceneManager__ctorCSceneManager constructor. Calls CSceneManager base constructor, sets vtable to PTR_010dd2e0, stores parent renderer at +0x25C, D3D device at +0x260, and initializes render queue fields (0x264-0x270) to zero.
0x00564F4072CSceneManager__release_child_objectReleases a COM-like child object stored at this[0]. If non-null, calls its Release method (vtable+8) with security cookie frame setup.
0x00564F9061CSceneManager__release_child_object_00564f90Releases a COM-like child object stored at this[0]. If non-null, calls its Release method (vtable+8). Same pattern as 00564f40 but slightly different calling convention.
0x00564FE071CSceneManager__dtor_00564fe0CSceneManager destructor. Sets vtable to PTR_010dd2e0, then calls base class cleanup via stub_00562090. Non-deleting destructor.
0x0056503054CSceneManager__flush_render_statesFlushes dirty render states by calling CD3DDeviceState__apply_dirty_states. Wrapper with SEH frame setup.
0x0056507099CSceneManager__scalar_deleting_dtor_00565070CSceneManager scalar deleting destructor. Sets vtable, calls base cleanup via stub_00562090, then optionally deletes (0x274 bytes) if param_2 bit 0 is set.
0x005650F092CSceneManager__save_device_stateSaves current D3D device state. Stores pointer to this+0x0C into param_2, then calls CD3DDeviceState__copy_from_device to snapshot the current render states.
0x0056515066CSceneManager__clear_render_targetClears the D3D render target. If param_2 is nonzero, clears with flags (0,0,3). Otherwise clears with color 0xFF000000 (black opaque), z=1.0f, stencil=0 and flags (0,0,2). Calls D3D device Clear via vtable+0xAC.
0x005651A0100CSceneManager__clear_with_ambient_colorClears the render target using the ambient color stored at +0x264. If render mode is 1 and a specific flag at the mode object +0xFC is set, blends the ambient color with a global fog color (DAT_01389650). Calls D3D device Clear with the computed color, z=1.0f, stencil=0.
0x00565210703CSceneManager__render_to_textureRenders a scene to a texture (render-to-texture). Creates a D3D texture surface if not already cached in param_5, sets up render target, saves/restores device state, configures render states (z-write off, fog off, alpha test on, alpha func on, alpha blend on), then iterates a linked list of render entries binding textures and drawing. Returns 1 on success, 0 on failure.
0x005654D0619CSceneManager__setup_fog_and_projectionSets up fog parameters and projection matrix for the scene. When mode flag (+0x154) is 1: creates perspective projection via D3DXMatrixPerspectiveFovLH, sets world/view/projection transforms, configures fog color, table mode, start/end/density render states. Handles range-based fog enable from game settings flags. Always applies fog enable state at the end.
0x00565740139CSceneManager__draw_primitive_batchDraws a batch of primitives. Sets FVF to 0x1C4 (position+normal+diffuse+tex1). If index buffer (param_2[4]) is present, calls DrawIndexedPrimitive via vtable+0x150; otherwise calls DrawPrimitive via vtable+0x14C. Primitive type comes from param_2[9] (4=tri list, else tri strip). Vertex stride is 0x20.
0x005657D0139CSceneManager__draw_primitive_batch_texturedDraws a batch of textured primitives. Sets FVF to 0x2C4 (position+normal+diffuse+tex2). If index buffer (param_2[3]) is present, calls DrawIndexedPrimitive via vtable+0x150; otherwise calls DrawPrimitive via vtable+0x14C. Vertex stride is 0x28.
0x00565860139CSceneManager__draw_primitive_batch_textured_00565860Draws a batch of textured primitives. Sets FVF to 0x2C4. Identical to 005657d0 but located in a different vtable slot (used for a different render pass). Vertex stride 0x28.
0x005658F0124CSceneManager__render_sorted_batchRenders a sorted batch of render entries. If param_2 (sort flag) is nonzero, sorts the float-pair array via introsort_float_pair_array first. Then iterates entries (8-byte stride), binds texture from each entry's +8 field (+300 for D3D texture handle), and calls the virtual draw method at vtable+0x38.
0x00565B70186CSceneManager__present_framePresents the rendered frame. Increments frame counter (+0x38) and per-second FPS counter (+0x26C). Every 1000ms, calculates FPS as count/elapsed_seconds and stores at +0x270. Calls CD3D9Device__present to flip the backbuffer. Updates debug source line markers.
0x00565C30362CSceneManager__render_transparent_passRenders transparent geometry pass. Saves device state, sorts the render queue at +0x180, then renders in two sub-passes: first with alpha test + z-write (RS 0x0F=1, 0x0E=1, 0x18=0x9F, 0x19=7), then without alpha test for back faces (RS 0x0E=0, 0x18=0x9F, 0x19=2). Restores device state afterward.
0x00565DA0889CSceneManager__render_3d_objects_passMain 3D object render pass. Saves device state, sorts two render queues (+0x18C and +0x1BC) by depth. Sets alpha blend (src=5/dst=6), alpha test, z-write, fog. If +0x48 flag is set (wireframe/debug mode), renders with sampler filtering using alpha_test batch renderer and sorted batch with multiple passes for front/back face culling. Otherwise renders with alpha_blend batch renderer. Restores state at end.
0x00566120215CSceneManager__render_additive_blend_passRenders additive blend pass. Saves device state, sets blend mode to src_alpha+inv_src_alpha (RS 0x13=5, 0x14=6), renders sorted batch at +0x198, then restores device state.
0x00566200200CSceneManager__render_alpha_masked_passRenders alpha-masked geometry pass. Saves device state, sets alpha reference to 0xCF (RS 0x18=0xCF), renders sorted batch at +0x228, then restores device state.
0x005662D0365CSceneManager__render_custom_blend_passRenders custom-blend geometry pass. Saves device state, sets src/dst blend to src_alpha (RS 0x13=2, 0x14=2), linear sampler filtering. Iterates render queue at +0x1EC/+0x1F0, for each entry: binds texture, sets blend mode from entry (stub_00568470 for FVF, RS 0x13/0x14 from entry +0x18/+0x1C), calls virtual draw. Restores state.
0x00566440215CSceneManager__render_effect_layer1_passRenders effect layer 1 pass. Saves device state, sets blend to src_alpha (RS 0x13=2, 0x14=2), renders sorted batch at +0x1C8, restores device state.
0x00566520215CSceneManager__render_effect_layer2_passRenders effect layer 2 pass. Saves device state, sets blend to src_alpha (RS 0x13=2, 0x14=2), renders sorted batch at +0x1D4, restores device state.
0x00566600215CSceneManager__render_effect_layer3_passRenders effect layer 3 pass. Saves device state, sets blend to src_alpha (RS 0x13=2, 0x14=2), renders sorted batch at +0x1E0, restores device state.
0x005666E0463CSceneManager__render_ground_textures_passRenders ground/terrain texture pass. Saves device state, sets trilinear sampler filtering. Sorts and renders two render queues: first queue at +0x15C/+0x160 with trilinear filtering, second queue at +0x1B0/+0x1B4 with linear filtering. Each entry binds texture (+8 -> +300) and calls virtual draw (vtable+0x38). Restores sampler state and flushes.
0x005668B0846CSceneManager__render_ground_lightmap_passRenders ground with lightmaps. Sets clip plane and fill mode. Checks game option 0x77 (lightmap quality). If disabled, falls back to simple ground render. If lightmap hardware is available (DAT_01311ec4=1), uses dual-texture with lightmap in stage 1 (MODULATE2X), sorting by offsets +0x10/+0x14 and drawing with vtable+0x34. Otherwise falls back to modulate blend pass with texture stage MODULATE. Restores clip plane and fill mode.
0x00566C00348CSceneManager__render_depth_sorted_objects_passRenders depth-sorted objects. Saves device state, iterates render queue at +0x234/+0x238 (float-pair array with depth key + entry pointer). For each entry: binds texture, sets FVF via stub_00568470, chooses blend mode based on depth threshold (DAT_010dd228): below threshold uses entry's own blend, above uses additive (src=5/dst=6). Calls virtual draw and restores state.
0x00566D60278CSceneManager__render_ground_simple_passSimple ground render pass (no lightmaps). Saves device state, sorts render queue at +0x168/+0x16C by offset+8, iterates entries binding textures and calling virtual draw (vtable+0x38). Restores state.
0x00566E80390CSceneManager__render_ground_modulate_passGround modulate blend pass (lightmap fallback). Saves device state, sets texture stage 0 to MODULATE for color and alpha operations, enables alpha blend and z-write, sets blend to src_alpha + inv_src_alpha (RS 0x13=2, 0x14=5). Sorts and renders queue at +0x174/+0x178. Restores state.
0x00567010356CSceneManager__render_dual_texture_passRenders dual-texture (lightmap) pass. Saves device state, sets texture stage 1 to MODULATE2X. Sorts render queue at +0x1F8/+0x1FC by dual-key (offsets +0x10/+0x14). Iterates entries with vertex count > 0, binds both texture 0 (from +0x10) and texture 1 (from +0x14), calls virtual draw at vtable+0x34. Restores texture stage 1 and flushes state.
0x00567180611CSceneManager__render_multitexture_blend_passMulti-texture blend render pass. Only executes if render queue at +0x240/+0x244 is non-empty. Saves device state, sorts by dual-key (+0x10/+0x14). Configures elaborate texture stage states for 2-stage blending: stage 0 with MODULATE for color/alpha, stage 1 with MODULATE for color + SELECTARG2 for alpha, with extensive sampler state configuration (linear/trilinear filtering per stage). Renders entries with vertex count > 0 using vtable+0x30 draw call. Restores state.
0x005673F0197CSceneManager__render_no_zwrite_passRenders a pass with z-write disabled (RS 7=0). Saves device state, renders sorted batch at +0x21C, restores state. Used for overlays or effects that should not write to depth buffer.
0x005674C0336CSceneManager__render_no_fog_custom_blend_passRenders custom-blend objects with fog and alpha test disabled. Saves device state, sets RS 0x1C=0 (fog off), RS 0x0E=0 (alpha blend off). Iterates render queue at +0x210/+0x214, for each non-null entry: binds texture, sets FVF via stub_00568470, configures per-entry blend modes (RS 0x13/0x14 from +0x18/+0x1C), calls virtual draw (vtable+0x38). Restores state.
0x005676102050CSceneManager__render_full_sceneMain scene render orchestrator. Calls all render sub-passes in order: (1) setup_fog_and_projection, (2) z-write on + alpha ref 0xCF, (3) render_ground_textures_pass, (4) render_ground_lightmap_pass, (5) alpha test on + multitexture_blend_pass, (6) save state + render_no_fog_custom_blend (no fog/alpha disabled items at +0x210), (7) z-write off sorted batch at +0x21C, (8) transparent pass at +0x180, (9) effect layers (src_alpha blend at +0x1C8), (10) 3d_objects_pass, (11) alpha masked at +0x228, (12) effect layers 2+3 at +0x1D4/+0x1E0, (13) custom_blend_pass at +0x1EC, (14) additive blend at +0x198, (15) depth_sorted_objects at +0x234.
0x00567E2070CSceneManager__set_fog_paramsSets fog parameters for the scene. Marks fog mode as enabled (+0x154=1), reads range fog capability bit from game settings (+0x25C->+0x574 bit 7), stores fog enable state at +0x150. Sets global fog density (DAT_01389654=1) and fog table mode (DAT_0138964c=3).
0x00567E80106CSceneManager__query_backbuffer_formatQueries the backbuffer surface format from the D3D device. Gets the display surface via GetDisplayMode, stores width at +0x250 and height at +0x254. Based on the D3D format type (+0x530), determines the bit depth: formats 0x15-0x16 -> 32bpp, 0x17-0x1A -> 16bpp, default -> 0. Stores bit depth at +0x258. Returns 1 on success, 0 on failure.
0x00567FC0102CSceneManager__save_screenshotSaves a screenshot to file. If param_2 (render info) is provided, creates a D3D texture from the entity's position/size data at +0x110-0x11C. Calls save_surface_to_file with the texture, then releases the texture if created. Uses D3DXSaveSurfaceToFileA with format determined by param_1.
0x00568030102CSceneManager__save_screenshot_as_bmpSaves a screenshot as BMP format. Same as save_screenshot but passes format=1 (BMP) to save_surface_to_file instead of format=0.
0x005680A0559CSceneManager__save_surface_to_fileSaves a D3D surface to a file using D3DXSaveSurfaceToFileA. If param_4 (overlay texture) is provided, renders it to the backbuffer first: creates a CActionQueue, queues a textured quad draw at the calculated position, begins a scene, saves device state, sets up render states (z-write off, fog off, alpha test on, alpha blend on), renders all queued entries, ends scene, restores state. Then saves the backbuffer surface. Returns true on success.
0x005682D0139CSceneManager__save_logo_screenshotSaves a screenshot with the logo overlay ("scr_logo.bmp"). Loads the logo texture via CMessageStringTable__load_and_process, creates a render texture from it via stub_005717a0, then calls save_surface_to_file with BMP format (1) and the logo texture overlay. Cleans up the string afterward.
0x0056836016CSceneManager__set_ambient_colorSets the ambient/clear color for the scene manager. Stores param_2 at offset +0x264, which is used by clear_with_ambient_color for the render target clear color.
0x00568370238CSceneManager__set_lightSets a D3D light on the device. Builds a D3DLIGHT9 structure: type=3 (directional), XORs direction vector with global constant (DAT_010dc0d0) for obfuscation, copies diffuse color from param_3 and ambient color from param_4, sets diffuse/ambient range to 255.0f. Calls SetLight (vtable+0xCC) for index 0, then LightEnable (vtable+0xD4) to activate it.
0x005684702528CRenderPipeline__apply_texture_blend_modeLarge switch on blend mode index (0-15). Configures D3D texture stage states for color and alpha operations on stages 0 and 1. Each case sets up a different blending configuration (modulate, add, multiply, etc.) for multi-texture rendering.
0x00568E9042CRenderPipeline__bind_texture_from_resourceBinds a texture to a given stage. If param_2 is non-null, reads the D3D texture handle at offset +300 (0x12C). If null, binds texture 0 (none).
0x0056931036CRenderPipeline__free_vertex_and_index_buffersFrees two heap-allocated buffers, the vertex data buffer at field 0 and the index buffer at field 2, and nullifies both pointers.
0x0056947015CD3DDevice__draw_indexed_primitiveCalls a virtual method at vtable offset +0x38 on the global D3D device object (DAT_01389638). This is IDirect3DDevice::DrawIndexedPrimitive or similar draw call.
0x0056948015CD3DDevice__draw_primitiveCalls a virtual method at vtable offset +0x34 on the global D3D device object (DAT_01389638). This is IDirect3DDevice::DrawPrimitive or similar draw call.
0x0056949015CD3DDevice__draw_primitive_upCalls a virtual method at vtable offset +0x30 on the global D3D device object (DAT_01389638). This is IDirect3DDevice::DrawPrimitiveUP (user pointer, non-indexed).
0x005699A09CRenderPipeline__clear_render_typeSets the render type/state field to 0. Simple single-field reset on a render pipeline object.
0x00569C9076CRenderPipeline__release_d3d_resource_and_spritesReleases a COM object (calls Release via vtable[0] with param=1 if non-null), then nullifies the pointer and calls thunk_free_all_sprite_buffers to clean up sprite resources. SEH-protected.
0x00569CF087CRenderPipeline__destroy_two_stringsDestroys two std::string members sequentially. Calls STL_string_dtor twice with exception frame tracking. Used as element destructor for a struct with two string fields.
0x00569D5068CRenderPipeline__destroy_single_stringDestroys a single std::string member with SEH frame tracking. Calls STL_string_dtor once. Used as element destructor for a struct with one string field.
0x00569DA0186CRenderPipeline__compare_render_effectsCompares two render effect/material structs for equality. First checks the type field (offset 0). For type 1: compares two sets of 4-DWORD blocks (positions/colors at offsets +0x20 and +0x30). For type 2: compares 3 blocks of 4 DWORDs and then a string field using std::_Traits_equal. Returns 1 if equal, 0 if different.
0x00569E6040CRenderPipeline__compare_three_dwordsCompares first 3 DWORD fields of two structs for equality. Returns 1 if all three match, 0 if any differ. Used to compare simple 3-component data like RGB colors or XYZ coordinates.
0x00569E90124CRenderPipeline__create_bitmap_fontAllocates a new CBitmapFont object (0x2C bytes) and calls CBitmapFont__constructor with two params. If param_3 is non-zero, calls a virtual method at vtable offset +0x2C to set color to 0xFFFF00FF (opaque magenta). Returns the CBitmapFont pointer. SEH-protected with new/delete.
0x00569F1014CBitmapFont__get_line_heightReturns the line height by calling the virtual method at vtable offset +0x1C on the font object pointed to by *param_1. Returns 0 if the font pointer is null.
0x00569F2021CBitmapFont__get_char_widthReturns character width by calling the virtual method at vtable offset +0x24 on the font object pointed to by *param_1. Returns 0 if the font pointer is null.
0x00569F4021CBitmapFont__get_text_widthReturns text width by calling the virtual method at vtable offset +0x28 on the font object pointed to by *param_1. Returns 0 if the font pointer is null.
0x00569F6021CBitmapFont__set_colorSets the font color by calling the virtual method at vtable offset +0x2C on the font object pointed to by *param_1. Does nothing if the font pointer is null.
0x00569F8017CBitmapFont__draw_textDraws text by calling the virtual method at vtable offset +0x0C on the font object pointed to by *param_1. Returns 0x8000000E (E_POINTER-like error) if the font pointer is null.
0x00569FA019CBitmapFont__begin_renderingCalls a virtual method at vtable offset +0x20 on the font object pointed to by *param_1. Likely a begin/prepare rendering call. Does nothing if the font pointer is null.
0x00569FC012CBitmapFont__end_renderingCalls a virtual method at vtable offset +0x38 on the font object pointed to by *param_1. Likely an end/flush rendering call. Does nothing if the font pointer is null.
0x00569FD012CBitmapFont__flushCalls a virtual method at vtable offset +0x40 on the font object pointed to by *param_1. Likely a flush/commit operation for batched text rendering. Does nothing if the font pointer is null.
0x00569FE012CBitmapFont__resetCalls a virtual method at vtable offset +0x3C on the font object pointed to by *param_1. Likely a reset/clear operation. Does nothing if the font pointer is null.
0x00569FF0167CRenderPipeline__init_render_data_by_typeInitializes render data based on type parameter. Type 1: calls stub_0056b8c0 for D3D-style init. Type 2: calls stub_0056d770 for alternative init. Otherwise: zeroes 3 DWORDs (empty/null state). SEH-protected.
0x0056A23015CBitmapFont__get_texture_countReturns the texture/page count by calling the virtual method at vtable offset +0x04 on the font object pointed to by *param_1. Returns -1 (0xFFFFFFFF) if the font pointer is null.
0x0056AFE0163CD3DDeviceDX7__ctorConstructor for CD3DDeviceDX7. Sets vtable pointers, zeroes fields, allocates CD3DDeviceCaps (0x24c bytes) and stores it globally at DAT_01387340. Size 0x14.
0x0056B2E0183CD3DDeviceDX7__dtorDestructor for CD3DDeviceDX7. Sets vtable, frees CD3DDeviceCaps (0x24c bytes) at field[1], releases COM shared_ptr at field[4], releases render surface at field[2], then resets vtable to base class.
0x0056B4A036CD3DSurface__scalar_deleting_dtorScalar deleting destructor for CD3DSurface. Sets vtable to PTR_stub_0056c4e0_010dd4ac. Frees 0x20 bytes if bit 0 of param_2 is set.
0x0056B500204CD3DDeviceDX7__scalar_deleting_dtorScalar deleting destructor for CD3DDeviceDX7. Calls the full destructor chain (frees DeviceCaps, releases COM ptrs, releases render surfaces), then frees 0x14 bytes if requested.
0x0056B5F0135CD3DDeviceDX7__create_rendertarget_surfaceCreates a render target surface via CD3DSurface. Allocates 0x14 bytes for the surface object and calls CD3DSurface__create_rendertarget with device caps. Returns 0 on allocation failure.
0x0056B680141CD3DDeviceDX7__create_textureCreates a texture via CTexture. Allocates 300 bytes for the texture object and calls CTexture__constructor_create with device caps and width/height/format params. Returns 0 on allocation failure.
0x0056B710173CD3DDeviceDX7__create_texture_or_rendertargetCreates either a CTexture or CD3DRenderTarget depending on whether the requested size is a valid texture size. If valid, creates CTexture (300 bytes); otherwise falls back to CD3DRenderTarget (0x14 bytes) with device dimensions.
0x0056B7C0168CD3DDeviceDX7__release_render_surfaceReleases the render surface at field[2] (calls its destructor via vtable), clears the COM shared_ptr via move-assign, then calls CD3DDevice__release_all_objects to clean up remaining D3D resources.
0x0056B87012CD3DDeviceDX7__release_com_objectThin wrapper that calls safe_release_com_object to release a COM interface held by the DX7 device.
0x0056BBA0207CD3DDeviceDX7__get_or_create_backbuffer_textureGets or lazily creates the backbuffer texture for the DX7 device. If field[2] is null, allocates a new CTexture (300 bytes) with default device params, then swaps ownership via shared_ptr semantics. Returns the texture pointer.
0x0056BC80325CD3DDeviceDX7__get_or_create_depth_surfaceGets or lazily creates the depth surface for the DX7 device. If field[3] is null, allocates a CD3DSurface (0x20 bytes), creates it from the existing device surface, and stores via shared_ptr swap. Returns result through param_2 with refcount increment.
0x0056C4E011CD3DSurface__release_internalReleases the internal surface by calling the destructor via vtable at field[3] with param=0.
0x0056CEE0127CD3D9Device__create_render_targetAllocates a 0x154-byte render target object and initializes it via stub_00572500 using the source parameter. Returns the new object pointer through param_1.
0x0056CF60158CD3D9Device__ctorCD3D9Device constructor. Sets up vtable chain, zeroes vector members at offsets 2-4, allocates a 0x690-byte CRenderState object and stores at offset 1.
0x0056D00072CD3D9Device__release_inner_deviceReleases the inner COM device pointer at offset 0. Calls Release (vtable+8) on the COM interface if non-null. SEH-protected.
0x0056D05061CD3D9Device__release_deviceReleases the D3D device COM pointer at offset 0. Calls vtable+8 (Release) if non-null. SEH-protected.
0x0056D180183CD3D9Device__dtorCD3D9Device destructor (non-deleting). Sets vtable, deletes CRenderState (0x690 bytes) at offset 1, releases shared_ptr at offset 4, releases COM object at offset 2, restores base vtable.
0x0056D320204CD3D9Device__scalar_deleting_dtorCD3D9Device scalar deleting destructor. Runs full destructor (releases CRenderState, shared_ptr, COM objects), then conditionally frees 0x14 bytes if bit 0 of param_2 is set.
0x0056D3F0130CD3D9Device__create_scene_managerCreates a CSceneManager instance (0x274 bytes) using the render state pointer at offset 4, then sets viewport dimensions from the render state's width/height fields.
0x0056D480135CD3D9Device__create_small_render_targetCreates a small render target (0x14 bytes). Allocates with nothrow new, initializes via stub_00570720 with the device's render state and two parameters.
0x0056D510147CD3D9Device__create_render_target_exCreates an extended render target (0x154 bytes) with full parameter set (6 params). Allocates with nothrow new, initializes via stub_005725c0.
0x0056D5B0188CD3D9Device__create_render_target_autoCreates a render target, automatically choosing small (0x14) or extended (0x154) based on whether dimensions exceed the device's stored resolution at offsets 0x5a8/0x5ac.
0x0056D670168CD3D9Device__shutdownShuts down the D3D9 device. Releases COM object at offset 8, resets shared_ptr via move-assign, then calls CD3D9Device__release_all to clean up remaining resources.
0x0056D770845CD3D9Device__enumerate_display_modesCreates IDirect3D9Ex, enumerates all display adapters and their modes. Builds a vector of 0x68-byte display mode info structs containing adapter name, device name, and display mode details.
0x0056DAC0207CD3D9Device__get_or_create_render_targetLazy-initializes the render target at offset 8. If null, allocates a 0x154-byte render target object, sets it via atomic swap, and returns the (possibly pre-existing) target pointer.
0x0056DBA0328CD3D9Device__get_or_create_swap_chainGets or creates the swap chain at offset 0xc. If null, allocates a CD3D9RefCounted (0x20 bytes), initializes it with the device's render state, and sets it via shared_ptr move. Returns swap chain via param_2 with addref.
0x0056DCF01362CD3D9Device__enumerate_resolutionsCreates IDirect3D9Ex, enumerates display modes for a specific adapter (param_2) with format D3DFMT_X8R8G8B8 (0x16). Filters modes >= 664 width, removes duplicates, sorts, then builds resolution string list with formatted labels.
0x0056E270353CD3D9Device__init_deviceInitializes the D3D9 device. Enumerates display modes, shows error if none compatible. Loads render config, finds first matching display mode, then calls CD3D9Device__startup with the selected adapter.
0x0056E40012CD3D9Device__present_wrapperThin wrapper that calls CD3D9Device__present to present the rendered frame to screen.
0x00570720161CD3DSurface__ctor_createConstructor for a D3D surface wrapper object. Sets vtable to CD3DBase then to CD3DSurface vtable. Stores the D3D device reference at [1], aligns width/height to 4-byte boundaries, calls IDirect3DDevice::CreateTexture (vfunc 0x90/0x24) to create the D3D surface at [4]. Size: 0x14 bytes per instance.
0x005707D0174CD3DSurface__ctor_from_resourceConstructor for CD3DSurface from an existing D3D resource (e.g., a texture level). Sets vtable, stores device ref, queries the resource's description (vfunc 0x30), stores width/height, calls AddRef (vfunc 4) on the resource, stores it at [4]. If query fails, zeros dimensions.
0x00570880104CD3DSurface__release_00570880Releases the D3D surface. Sets vtable to CD3DSurface, if the D3D resource at [4] is non-null, calls Release (vfunc 8) on it and zeros the pointer. Then calls stub_00572370 (base class cleanup).
0x005708F0125CD3DSurface__scalar_deleting_dtor_005708f0Scalar deleting destructor for CD3DSurface. Releases the D3D resource (vfunc 8) at [4], calls base cleanup, and if param_2 & 1, frees the object (0x14 bytes).
0x005709F036CD3DSurface__update_subregionUpdates a rectangular sub-region of the D3D surface. If the surface resource at [+0x10] is non-null, retrieves the D3D device from [+4]+8 and calls a device method (vfunc 0x8c) to upload the update with the given source coordinates.
0x00570A20124CD3DSurface__resize_00570a20Resizes the D3D surface to new dimensions. Releases old resource if present, aligns width/height to 4-byte boundaries, calls IDirect3DDevice::CreateTexture (vfunc 0x90) to create a new surface. Returns 1 on success, 0 on failure.
0x00570AA0252CD3DSurface__blit_from_bufferBlits pixel data from a source buffer onto the D3D surface. Computes destination rect from (param_2, param_3) with size (param_4, param_5), clamps to surface bounds twice (once for dest, once for lock rect), queries surface description, locks the surface, calls the D3D device StretchRect-like method (vfunc 0x88) to perform the copy, then unlocks. Source data comes from param_6 with stride from the D3D device at +0x680.
0x00570BA0139CD3DSurface__blit_from_buffer_no_lockBlits pixel data onto the D3D surface without locking. Similar to blit_from_buffer but passes flag=2 and no lock rect to the D3D device method (vfunc 0x88). Computes and clamps destination rect, uses surface resource at +0x10 directly.
0x00570C3035CD3DSurface__set_filter_modeSets a filter mode on the D3D surface resource. If the resource at [+0x10] is non-null, calls vfunc 0x3c (SetAutoGenFilterType or similar) with param_2. Returns 1 on success (HRESULT >= 0), 0 otherwise.
0x00570CC0137CD3DSurface__get_surface_infoRetrieves surface information into a 6-field output struct (param_2). Queries the D3D resource description (vfunc 0x30) and lock info (vfunc 0x34). Populates: [0]=valid flag, [1]=width, [2]=pitch, [3]=height, [4]=bits pointer, [5]=pixel bit depth from format. Returns 0s if resource is null or queries fail.
0x00570D5023CD3DSurface__unlockUnlocks the D3D surface. If the resource at [+0x10] is non-null, calls its Unlock method (vfunc 0x40) with param_2 (the lock token/level).
0x00570DC0593CD3DSurface__write_pixels_with_colorkeyWrites pixel data from a source buffer to the locked D3D surface, handling color key transparency (0xFF00FF = magenta). Supports multiple D3D formats: 32-bit (0x15/0x16) uses SIMD-like 4-pixel-at-a-time loop with color key masking; 16-bit R5G6B5 (0x17) converts via bit shifting; A1R5G5B5 (0x18/0x19) uses convert_argb8888_to_argb1555; A4R4G4B4 (0x1a) extracts 4 bits per channel. Locks surface, writes row by row with stride param_8, then unlocks.
0x0057120067CTextureCache__delete_head_nodeDeletes the head node (offset +4) of the texture cache tree if it exists. Frees 0x18 bytes per node.
0x00571250111CTextureCache__destroy_all_nodesDestroys all nodes in the texture cache tree. Iterates from head, removes each key via stub_005710a0, frees each 0x18-byte node, then frees the root sentinel.
0x005712D078CTextureCache__delete_head_node_altDeletes the head node (offset +4) if it exists. Same as CTextureCache__delete_head_node but with different SEH setup.
0x0057132078CTextureCache__delete_head_node_alt2Deletes the head node (offset +4) if it exists. Variant with different SEH handler address.
0x0057137065CTextureCache__dtor_wrapperDestructor wrapper that calls CTextureCache__destroy_all_nodes to clean up the texture cache tree.
0x005713C0192CTextureCache__release_all_and_clearReleases all texture objects in the cache by calling their destructor (vtable[0] with flag=1), then clears the tree by removing all nodes and resetting the sentinel pointers. Finally calls destroy_all_nodes.
0x005714E0253CTextureCache__insert_entryInserts a texture entry into the cache tree. The key is a string at param2+0x24. If the key already exists (lower_bound finds it), skips. Otherwise allocates a 0x18-byte tree node with the key string pointer and value pointer, then calls Insert_node. Throws if map size exceeds 0xAAAAAAA.
0x005715E0115CTextureCache__create_text_surfaceCreates a text rendering surface. Takes width/height and a pixel-mode flag. If flag is 1, uses raw pixel dimensions; otherwise divides by the global scale factor (DAT_01361650). Initializes text render singleton, gets text width via CBitmapFont, then calls vtable[0x20] to set up the surface area.
0x0057166016CTextureCache__get_default_text_widthWrapper that initializes the text render singleton and returns the default text width from CBitmapFont.
0x00571670118CTextureCache__release_all_textures_and_clearIterates all entries in the texture cache tree, releases each texture object (vtable[0] with flag=1), then removes all tree nodes and resets the sentinel. Similar to release_all_and_clear but without calling destroy_all_nodes at the end, just resets count to 0.
0x005716F0101CTextureCache__remove_entry_by_resourceRemoves a texture cache entry based on a resource parameter. If the resource's field at +0x1C is 0, gets the render device caps, checks if the resource differs from the current device, finds the entry by key string (at resource+0x24), and if found releases the texture object and erases the tree node.
0x0057176045CTextureCache__find_entryLooks up a texture cache entry by key string. Returns the value (node+0x14) if found, or 0 if the key is not in the tree.
0x0057179012CTextureCache__get_render_device_capsInitializes text render singleton and returns the D3D render system device caps via CRenderSystem vtable offset 0x30.
0x005717A0391CTextureCache__find_or_load_textureFinds an existing texture in the cache by key, or loads a new one. First checks the tree via lower_bound. If found, updates timestamps and returns the cached texture. If not found, calls load_texture_from_file to create it, sets the filename, updates timestamps, inserts into the cache tree, and returns the new texture object.
0x00571930475CTextureCache__load_texture_from_fileLoads a texture from file. If the filename contains a video extension (checked via strstr with DAT_010dd690), loads via CVideoRes__FindOrLoadByName. Otherwise loads the image file via CResourceMgr, extracts dimensions (w/h/hasAlpha from offsets 0x114/0x118/0x11C/0x110), creates a text surface, and removes the resource. Falls back to a 1x1 pixel default surface if loading fails.
0x00571B1095CTextureCache__resize_and_set_surfaceResizes a texture surface and sets its area. If the texture is in pixel mode (field +8 == 1), calls vtable[0x3C] with raw dimensions. Otherwise divides dimensions by the global scale factor. Then calls vtable[0x20] to update the surface rectangle.
0x00571B70211CTextureCache__reload_all_texturesIterates all entries in the texture cache tree and reloads each texture from its resource file. For each entry, loads the image via CResourceMgr, extracts dimensions, calls resize_and_set_surface on the texture object, then removes the resource. Used to refresh textures after a device reset or resolution change.
0x00571C50141CTextureCache__evict_expired_entriesEvicts expired texture cache entries. Gets current time via timeGetTime, computes elapsed time since DAT_0134b748. Iterates the tree; for each entry where ref_count (field +7*4) is 0 and max_age (field +8*4) has elapsed, releases the texture and erases the node. After eviction, compacts the process heap and flushes the bitmap font.
0x00571CE0704CTextureCache__erase_nodeErases a node from the red-black tree used by the texture cache. Performs standard RB-tree removal with rebalancing (rotations and color fixes). Decrements the tree size. Returns the removed node pointer for deallocation by the caller.
0x0057227099CTextureCache__lower_boundPerforms a lower_bound search on the texture cache tree by string key. Calls stub_00571110 to find the insertion point, then compares the key string at the found node. Returns the found node if key matches, or the root sentinel if not found.
0x00572500177CD3DSurface__ctorConstructor for CD3DSurface (derived from CD3DTexture, size 0x154). Calls CD3DTexture__ctor, sets vtable to CD3DSurface (010dd6e0), stores the pixel format (param_2) at offset +0x124 (field 0x49). Zeroes out surface-specific fields (0x4A-0x54). Sets initial scale factors to 1.
0x005725C0136CD3DSurface__ctor_with_paramsExtended constructor for CD3DSurface. Calls CD3DSurface__ctor with format param, sets vtable, sets render-target flag (offset +0x12A) and mipmap flag (offset +299), then calls create_d3d_texture to allocate the D3D texture and clamp_dimensions_to_power_of_two.
0x00572650252CD3DSurface__ctor_from_d3d_surfaceConstructor for CD3DSurface from an existing IDirect3DSurface9. Calls CD3DSurface__ctor, then queries the surface (vtable[0x48]) to get the texture interface and its description (vtable[0x30]). Extracts format, dimensions, alpha capability from the surface description. Maps D3D format codes to internal format enum (0x15->4, 0x17->2, 0x18->3, 0x19->0, 0x1A->1).
0x0057277072CD3DSurface__release_d3d_surfaceReleases the D3D surface COM object at field[0] (IDirect3DSurface9) by calling its Release method (vtable[8]). Uses SEH for exception safety.
0x005727C061CD3DSurface__release_d3d_surface_simpleReleases the D3D surface COM object at field[0] by calling Release (vtable[8]). Simpler variant without passing extra params to the Release call.
0x00572810136CD3DSurface__dtorDestructor for CD3DSurface. Sets vtable to CD3DSurface, releases the surface COM object (field 0x4C) and texture COM object (field 0x4B) via their Release methods, then calls CD3DTexture__dtor_base for base class cleanup.
0x005728A0160CD3DSurface__scalar_deleting_dtor_005728a0Scalar deleting destructor for CD3DSurface (size 0x154). Sets vtable, releases surface and texture COM objects, calls base dtor. If param_2 bit 0 is set, frees the 0x154-byte memory block.
0x00572940147CD3DSurface__load_surface_from_memoryLoads pixel data from memory into the D3D surface at offset +0x130 using D3DXLoadSurfaceFromMemory. Source format is D3DFMT_A8R8G8B8 (0x15), pitch=4. After loading, generates mipmaps via D3DXFilterTexture if the texture has multiple mip levels and is not a render target or managed texture.
0x005729E0215CD3DSurface__copy_surface_regionCopies a rectangular region from a source surface to this surface using D3DXLoadSurfaceFromSurface with D3DX_FILTER_BOX (3). Source/dest rectangles are computed from x,y,width,height parameters. After copying, generates mipmaps if the texture has multiple levels and is not a render target.
0x00572AC0594CD3DSurface__create_d3d_textureCreates the underlying D3D texture and surface for this CD3DSurface. Releases any existing surface/texture COM objects first. Determines D3D format from internal format enum (0->0x19, 1->0x1A, 2->0x17, 3->0x18, 4->0x15). Clamps dimensions via CD3DDevice. Determines usage flags (managed/render-target). Calls IDirect3DDevice9::CreateTexture, then gets surface level 0. For non-managed textures, clears all mip levels by filling them with a solid color.
0x00572D5061CD3DSurface__generate_mipmapsGenerates mipmaps for the texture using D3DXFilterTexture if: (1) not a render target (offset +0x129 == 0), (2) not a managed-mipmap texture (offset +299 == 0), and (3) the texture object at offset +300 exists with more than 1 mip level.
0x00572D9038CD3DSurface__lock_surface_rectLocks the D3D surface at offset +0x130 for direct pixel access by calling IDirect3DSurface9::LockRect (vtable[0x3C]). Returns 1 on success, 0 on failure or if no surface exists.
0x00572DC0405CD3DSurface__clear_surface_with_colorClears a D3D surface by filling it with a solid color. Locks the surface, then fills every pixel based on the surface format: D3DFMT_A8R8G8B8 (0x15) uses 32-bit writes, D3DFMT_A1R5G5B5 (0x19) and D3DFMT_A4R4G4B4 (0x1A) and D3DFMT_R5G6B5 (0x17) use 16-bit writes with format conversion. Unlocks after filling.
0x00572F70218CD3DSurface__clear_all_mip_levelsClears all mip levels of the texture with a solid color (value 0). Only operates on non-managed textures (offset +299 == 0). Iterates through all mip levels of the texture (field 0x4B), gets each surface level, clears it, and releases it.
0x00573050121CD3DSurface__get_surface_info_00573050Fills an output structure with surface information. Locks the surface to get the locked rect data, then populates: valid flag, pitch, pixel data pointer, scaled width/height, and bits-per-pixel (32 for D3DFMT_A8R8G8B8/A8B8G8R8, 16 for 16-bit formats, 0 for unknown).
0x0057311086CD3DSurface__unlock_and_generate_mipmapsUnlocks the D3D surface (calls vtable[0x40] on surface at +0x130) and then generates mipmaps via D3DXFilterTexture if the texture has multiple mip levels and is not a render target or managed texture.
0x00575A7034CObjectPool__copy_rangeCopies a range of memory from param_1 to param_3, with length (param_2 - param_1). Returns pointer past the end of the destination.
0x00575AA031CObjectPool__fill_rangeCObjectPool: fill range
0x00575AC0208CObjectPool__ctor_size_0xB0CObjectPool constructor for element size 0xB0. Sets vtable to allocate_size_0xB0, initializes linked list sentinel, free list, critical section, and stores pool capacity param.
0x00575B90208CObjectPool__ctor_size_0xC8CObjectPool constructor for element size 0xC8. Sets vtable to allocate_size_0xC8, initializes linked list sentinel, free list, critical section, and stores pool capacity param.
0x00575C60208CObjectPool__ctor_size_0x100CObjectPool constructor for element size 0x100. Sets vtable to allocate_size_0x100, initializes linked list sentinel, free list, critical section, and stores pool capacity param.
0x00575D30208CObjectPool__ctor_size_0xC8bCObjectPool constructor for element size 0xC8 variant b. Sets vtable to allocate_size_0xC8b, initializes linked list sentinel, free list, critical section, and stores pool capacity param.
0x00575E00208CObjectPool__ctor_size_0xC8cCObjectPool constructor for element size 0xC8 variant c. Sets vtable to allocate_size_0xC8c, initializes linked list sentinel, free list, critical section, and stores pool capacity param.
0x00575ED0208CObjectPool__ctor_size_0xD0CObjectPool constructor for element size 0xD0. Sets vtable to allocate_size_0xD0, initializes linked list sentinel, free list, critical section, and stores pool capacity param.
0x00575FA0208CObjectPool__ctor_size_0xE0CObjectPool constructor for element size 0xE0. Sets vtable to allocate_size_0xE0, initializes linked list sentinel, free list, critical section, and stores pool capacity param.
0x00576070208CObjectPool__ctor_size_0xC8dCObjectPool constructor for element size 0xC8 variant d. Sets vtable to allocate_size_0xC8d, initializes linked list sentinel, free list, critical section, and stores pool capacity param.
0x00576140208CObjectPool__ctor_size_0xD0bCObjectPool constructor for element size 0xD0 variant b. Sets vtable to allocate_size_0xD0b, initializes linked list sentinel, free list, critical section, and stores pool capacity param.
0x00576210208CObjectPool__ctor_size_0x120CObjectPool constructor for element size 0x120. Sets vtable to allocate_size_0x120, initializes linked list sentinel, free list, critical section, and stores pool capacity param.
0x005762E0208CObjectPool__ctor_size_0xD0cCObjectPool constructor for element size 0xD0 variant c. Sets vtable to allocate_size_0xD0c, initializes linked list sentinel, free list, critical section, and stores pool capacity param.
0x005763B0208CObjectPool__ctor_size_0xE8CObjectPool constructor for element size 0xE8. Sets vtable to allocate_size_0xE8, initializes linked list sentinel, free list, critical section, and stores pool capacity param.
0x00576480208CObjectPool__ctor_size_0x118CObjectPool constructor for element size 0x118. Sets vtable to allocate_size_0x118, initializes linked list sentinel, free list, critical section, and stores pool capacity param.
0x00576550208CObjectPool__ctor_size_0xC8eCObjectPool constructor for element size 0xC8 variant e. Sets vtable to allocate_size_0xC8e, initializes linked list sentinel, free list, critical section, and stores pool capacity param.
0x0057662062CObjectPool__init_linked_listInitializes a simple linked list structure with 5 zero fields and a sentinel node (8 bytes). Used as internal storage for CObjectPool.
0x005766D0191CObjectPool__dtor_size_0xB0CObjectPool destructor for element size 0xB0. Sets vtable, destroys all pooled objects via virtual dtor, deletes critical section, frees linked list nodes, then calls CHashMap__clear_and_free.
0x00576790191CObjectPool__dtor_size_0xC8CObjectPool destructor for element size 0xC8. Sets vtable, destroys all pooled objects via virtual dtor, deletes critical section, frees linked list nodes, then calls CHashMap__clear_and_free.
0x00576850191CObjectPool__dtor_size_0x100CObjectPool destructor for element size 0x100. Sets vtable, destroys all pooled objects via virtual dtor, deletes critical section, frees linked list nodes, then calls CHashMap__clear_and_free.
0x00576910191CObjectPool__dtor_size_0xC8bCObjectPool destructor for element size 0xC8 variant b. Sets vtable, destroys all pooled objects via virtual dtor, deletes critical section, frees linked list nodes, then calls CHashMap__clear_and_free.
0x005769D0191CObjectPool__dtor_size_0xC8cCObjectPool destructor for element size 0xC8 variant c. Sets vtable, destroys all pooled objects via virtual dtor, deletes critical section, frees linked list nodes, then calls CHashMap__clear_and_free.
0x00576A90191CObjectPool__dtor_size_0xD0CObjectPool destructor for element size 0xD0. Sets vtable, destroys all pooled objects via virtual dtor, deletes critical section, frees linked list nodes, then calls CHashMap__clear_and_free.
0x00576B50191CObjectPool__dtor_size_0xE0CObjectPool destructor for element size 0xE0. Sets vtable, destroys all pooled objects via virtual dtor, deletes critical section, frees linked list nodes, then calls CHashMap__clear_and_free.
0x00576C10191CObjectPool__dtor_size_0xC8dCObjectPool destructor for element size 0xC8 variant d. Sets vtable, destroys all pooled objects via virtual dtor, deletes critical section, frees linked list nodes, then calls CHashMap__clear_and_free.
0x00576CD0191CObjectPool__dtor_size_0xD0bCObjectPool destructor for element size 0xD0 variant b. Sets vtable, destroys all pooled objects via virtual dtor, deletes critical section, frees linked list nodes, then calls CHashMap__clear_and_free.
0x00576D90191CObjectPool__dtor_size_0x120CObjectPool destructor for element size 0x120. Sets vtable, destroys all pooled objects via virtual dtor, deletes critical section, frees linked list nodes, then calls CHashMap__clear_and_free.
0x00576E50191CObjectPool__dtor_size_0xD0cCObjectPool destructor for element size 0xD0 variant c. Sets vtable, destroys all pooled objects via virtual dtor, deletes critical section, frees linked list nodes, then calls CHashMap__clear_and_free.
0x00576F10191CObjectPool__dtor_size_0xE8CObjectPool destructor for element size 0xE8. Sets vtable, destroys all pooled objects via virtual dtor, deletes critical section, frees linked list nodes, then calls CHashMap__clear_and_free.
0x00576FD0191CObjectPool__dtor_size_0x118CObjectPool destructor for element size 0x118. Sets vtable, destroys all pooled objects via virtual dtor, deletes critical section, frees linked list nodes, then calls CHashMap__clear_and_free.
0x00577090191CObjectPool__dtor_size_0xC8eCObjectPool destructor for element size 0xC8 variant e. Sets vtable, destroys all pooled objects via virtual dtor, deletes critical section, frees linked list nodes, then calls CHashMap__clear_and_free.
0x0057715067CObjectPool__delete_node_0xCDeletes the node at this+4 if non-null, freeing 0xC bytes. Used as a cleanup helper for linked list nodes.
0x005771A067CObjectPool__delete_node_0x24Deletes the node at this+4 if non-null, freeing 0x24 bytes. Used as a cleanup helper for hash map nodes with string keys.
0x005771F078CObjectPool__delete_node_0xC_variantDeletes the node at this+4 if non-null, freeing 0xC bytes. Variant with different SEH layout than delete_node_0xC.
0x00577240113CObjectPool__delete_string_node_0x24Destroys the std::string in the node at this+4, then deletes the 0x24-byte node. Used to clean up hash map nodes that contain string keys.
0x00577390103CObjectPool__destroy_linked_listDestroys all nodes in a linked list. Walks the list from the first node, frees each 0xC-byte node, then frees the sentinel node itself.
0x005775F0212CObjectPool__scalar_deleting_dtor_size_0xB0CObjectPool scalar deleting destructor for element size 0xB0. Runs full destructor (destroy objects, critical section, linked list, hash map), then conditionally frees the pool object itself (0x40 bytes) if param_2 bit 0 is set.
0x005776D0212CObjectPool__scalar_deleting_dtor_size_0xC8CObjectPool scalar deleting destructor for element size 0xC8. Runs full destructor, then conditionally frees the pool object itself (0x40 bytes) if param_2 bit 0 is set.
0x005777B0212CObjectPool__scalar_deleting_dtor_size_0x100CObjectPool scalar deleting destructor for element size 0x100. Runs full destructor, then conditionally frees the pool object itself (0x40 bytes) if param_2 bit 0 is set.
0x00577890212CObjectPool__scalar_deleting_dtor_size_0xC8bCObjectPool scalar deleting destructor for element size 0xC8 variant b. Runs full destructor, then conditionally frees the pool object itself (0x40 bytes) if param_2 bit 0 is set.
0x00577970212CObjectPool__scalar_deleting_dtor_size_0xC8cCObjectPool scalar deleting destructor for element size 0xC8 variant c. Runs full destructor, then conditionally frees the pool object itself (0x40 bytes) if param_2 bit 0 is set.
0x00577A50212CObjectPool__scalar_deleting_dtor_size_0xD0CObjectPool scalar deleting destructor for element size 0xD0. Runs full destructor, then conditionally frees the pool object itself (0x40 bytes) if param_2 bit 0 is set.
0x00577B30212CObjectPool__scalar_deleting_dtor_size_0xE0CObjectPool scalar deleting destructor for element size 0xE0. Runs full destructor, then conditionally frees the pool object itself (0x40 bytes) if param_2 bit 0 is set.
0x00577C10212CObjectPool__scalar_deleting_dtor_size_0xC8dCObjectPool scalar deleting destructor for element size 0xC8 variant d. Runs full destructor, then conditionally frees the pool object itself (0x40 bytes) if param_2 bit 0 is set.
0x00577CF0212CObjectPool__scalar_deleting_dtor_size_0xD0bCObjectPool scalar deleting destructor for element size 0xD0 variant b. Runs full destructor, then conditionally frees the pool object itself (0x40 bytes) if param_2 bit 0 is set.
0x005782F0221CObjectPool__allocate_size_0xB0_005782f0Object pool allocator for 0xB0-byte objects via 0x5b9e50
0x005783D0221CObjectPool__allocate_size_0xC8_005783d0Object pool allocator for 0xC8-byte objects via 0x5bdaa0
0x005784B0221CObjectPool__allocate_size_0x100_005784b0Object pool allocator for 0x100-byte objects via 0x5cd7b0
0x00578590221CObjectPool__allocate_size_0xC8b_00578590Object pool allocator for 0xC8-byte objects via 0x5e4a50
0x00578670221CObjectPool__allocate_size_0xC8c_00578670Object pool allocator for 0xC8-byte objects via 0x5e7c10
0x00578750221CObjectPool__allocate_size_0xD0_00578750Object pool allocator for 0xD0-byte objects via 0x5e9c00
0x00578830221CObjectPool__allocate_size_0xE0_00578830Object pool allocator for 0xE0-byte objects via 0x5ebf50
0x00578910221CObjectPool__allocate_size_0xC8d_00578910Object pool allocator for 0xC8-byte objects via 0x5cf1b0
0x005789F0221CObjectPool__allocate_size_0xD0b_005789f0Object pool allocator for 0xD0-byte objects via 0x5d0470
0x00578AD0221CObjectPool__allocate_size_0x120_00578ad0Object pool allocator for 0x120-byte objects via 0x5d1640
0x00578BB0221CObjectPool__allocate_size_0xD0c_00578bb0Object pool allocator for 0xD0-byte objects via 0x607b10
0x00578C90221CObjectPool__allocate_size_0xE8_00578c90Object pool allocator for 0xE8-byte objects via 0x608d60
0x00578D70221CObjectPool__allocate_size_0x118_00578d70Object pool allocator for 0x118-byte objects via 0x5d3600
0x00578E50221CObjectPool__allocate_size_0xC8e_00578e50Object pool allocator for 0xC8-byte objects via 0x5d5d70
0x0057A6F0138CObjectPool__return_to_pool_0057a6f0Returns object to pool; locks mutex, searches active list, moves to free list
0x0057A780138CObjectPool__return_to_pool_0057a780Returns object to pool; locks mutex, searches active list, moves to free list
0x0057A810138CObjectPool__return_to_pool_0057a810Returns object to pool; locks mutex, searches active list, moves to free list
0x0057A8A0138CObjectPool__return_to_pool_0057a8a0Returns object to pool; locks mutex, searches active list, moves to free list
0x0057A930138CObjectPool__return_to_pool_0057a930Returns object to pool; locks mutex, searches active list, moves to free list
0x0057A9C0138CObjectPool__return_to_pool_0057a9c0Returns object to pool; locks mutex, searches active list, moves to free list
0x0057AA50138CObjectPool__return_to_pool_0057aa50Returns object to pool; locks mutex, searches active list, moves to free list
0x0057AAE0138CObjectPool__return_to_pool_0057aae0Returns object to pool; locks mutex, searches active list, moves to free list
0x0057AB70138CObjectPool__return_to_pool_0057ab70Returns object to pool; locks mutex, searches active list, moves to free list
0x0057AC00138CObjectPool__return_to_pool_0057ac00Returns object to pool; locks mutex, searches active list, moves to free list
0x0057AC90138CObjectPool__return_to_pool_0057ac90Returns object to pool; locks mutex, searches active list, moves to free list
0x0057AD20138CObjectPool__return_to_pool_0057ad20Returns object to pool; locks mutex, searches active list, moves to free list
0x0057ADB0138CObjectPool__return_to_pool_0057adb0Returns object to pool; locks mutex, searches active list, moves to free list
0x0057AE40138CObjectPool__return_to_pool_0057ae40Returns object to pool; locks mutex, searches active list, moves to free list
0x006F3680206math_quadratic_bezier_3dEvaluates quadratic Bezier curve at parameter t for 3D point (x,y,z)
0x007AB1C0206math_quadratic_bezier_3d_interpComputes a quadratic Bezier curve interpolation in 3D space. Takes output float[3], three control points (3 floats each), and parameter t. Uses pow for blending: result = (1-t)^2*P0 + 2*t*(1-t)*P1 + t^2*P2.
0x007E0FC084CColorPicker__GetPixelRGBGets RGB color values at a specific pixel position from the color picker sprite. Extracts R, G, B channels from the packed pixel value.
0x0085E37049draw_editbox_background_spriteDraws the background sprite for edit boxes. Loads sprite from DAT_01133af0 and renders at (0,0) with full opacity.
0x0090A2E02082CTextRenderer__layout_multiline_textLays out text into multiple lines for rendering. Takes text string, font parameters, width limit, and text segments. If text hasn't been cached (checked via unordered_map lookup), parses text into word segments using CItemListWnd__parse_and_split_item_text, measures text width per character using FUN_00a80580, and splits into up to 3 lines. Caches results in the unordered_map for future lookups. Falls through to FUN_0090ad60 to render the laid-out lines.
0x0090AB10588CTextRenderer__draw_text_with_wrappingDraws text with word wrapping and color code support. If text fits in one line, renders segments with color alternation. Otherwise wraps text across multiple lines, measuring each character to determine line breaks. Handles color codes (3-byte escape sequences via CTextVertex__find_color_code_offset), draws ellipsis '...' when text truncated at boundary. param_1=x, param_2=y, param_3=max width, param_5/param_6=text segments, param_7/param_8=colors for alternating lines, param_10=line height.
0x0090AD60201CTextRenderer__draw_multiline_segmentsRenders pre-laid-out multi-line text segments. Iterates through lines (vector of vectors of text segments at param_5). Centers text vertically by offsetting by -(numLines-1)*lineHeight/2. For each line, renders each text segment at the accumulated x position using FUN_00a86510, advancing x by the measured text width.
0x00917D701052render_line_with_trail_effectRenders a line between two points with a trailing visual effect. Computes direction angle using acos, rotates perpendicular offset for line thickness (param_13), clips against two bounding rectangles (params 5-12). Submits textured quads for the line segment with optional arrowhead at the tip when param_17 < 1.0.
0x009183801150render_dashed_line_with_arrowheadRenders a dashed line with optional arrowhead between two points. Computes line direction angle, perpendicular offset for thickness (param_6), and scales total length by param_10. Draws dash segments as textured quads with fading alpha (starting at 0x33FFFFFF, incrementing by 0x33000000 each segment). Dash size controlled by param_5. Optional arrowhead drawn at the end if param_10 < 1.0.
0x0091B010132render_selection_highlight_overlayRenders a selection highlight overlay. If DAT_01389998 is non-zero and DAT_013899bc matches DAT_01389968, renders a textured rect using texture from DAT_011423ac with near-full alpha (0xEEFFFFFF) over the selection bounds from DAT_013899a0-ac.
0x0091B0A0205render_zone_overlay_rectsRenders zone overlay rectangles. Iterates through entries from util_00617860/handler_00617730, draws filled rects with per-zone colors from DAT_01389a2c array, then overlays textured rects with zone-specific textures from DAT_01389a6c array using stub_005717a0.
0x0091B600156render_minimap_dotsRenders small dots on the minimap. Iterates through pairs of coordinates from DAT_016fc59c to DAT_016fc5a0, scales each by param_3 * DAT_011425e4, offsets by (param_1, param_2), and draws 2x2 pixel dots in green (0xF0F00A).
0x0091B6A0165render_player_position_dotRenders the player's position on the minimap as a colored dot. Gets player coordinates via FUN_00b961e0, converts to map coords via FUN_00b97e90, draws a 3x3 blue dot (0xFF) with a 1x1 yellow center (0xFFFF). Returns 1 if player position was valid, 0 otherwise.
0x0093EF00747render_minimap_npc_labelsRenders NPC labels on the minimap. Iterates through minimap overlay groups (DAT_01737950/DAT_01737958), for each group iterates entries in an std::map. For each entry, draws a colored rectangle background (0x8F8FBC), truncates label text to fit, measures text width, centers it horizontally, and renders alternating between top and bottom alignment. Uses white text (0xFFFFFF) with font size 10.
0x009409E0416render_map_label_with_backgroundRenders a map label with a filled background rectangle. Skips rendering if coordinates match the cached tooltip position. Draws white border rect, then semi-transparent black fill (0x66000000). Looks up display name via FUN_00dde770, and renders the label text in yellow-gold color (0xD2FF) with font size 12, offset by (2,5) from top-left corner.
0x00941060189render_map_overlay_text_with_shadowRenders map overlay text with a dark shadow effect. Iterates through overlay entries (DAT_016fc5b0, 0x2C bytes each), finds entry matching param_1, renders text in dark gray (0x1E1E1E) offset by +1,+1 as shadow, then renders main text in light gray (0xE6E6E6) at original position. Uses font size 12.
0x0096660048CColorEntry__set_rgbaSets RGBA color values on a CColorEntry struct. Stores 4 bytes (RGBA) at offsets 0xC-0xF, two ints at +4 and +8, and sets byte at offset 0 to 1 (valid flag).
0x0099A1F0269CColorPicker__create_scroll_list_0099a1f0Creates a UIScrollList child for CColorPicker. Allocates 0xE0 bytes, constructs UIScrollList, sets dimensions, gets initial pixel RGB, sets color 0xFF0500FF, and adds to parent at offset 0xB4.
0x0099A300233CColorPicker__render_color_list_0099a300Renders the color list for CColorPicker. Sets background color (magenta if list active, else custom). Iterates through stored color entries (24-byte records) and draws text using FUN_00a84e30.
0x0099A3F055CColorPicker__draw_border_0099a3f0Draws a two-layer border around CColorPicker. Outer border at full size, inner border inset by 1 pixel on each side with different colors.
0x0099A430418CColorPicker__handle_command_0099a430CColorPicker command handler. For command 0x1D, splits input by delimiter 0x23, populates scroll list items. Otherwise delegates to UIGridView__handle_scroll_command.
0x00AD5480151render_fps_counter_overlayRenders the FPS counter overlay text. Only draws when DAT_01737ab8==1 (debug mode) and DAT_01737ac0!=1. Computes a position near the bottom-right of the screen, loads the FPS text resource, and draws it via FUN_00ad5fa0 with transparency (0xEEFFFFFF).
0x00AD55201298render_animated_cursorRenders the animated cursor sprite. Loads cursors.act and cursors.spr resources, computes the current animation frame based on time and cursor state (param_1->offset 0x50). Calculates sprite positions using the action/frame data, creates textured quads with UV coordinates, and submits them to the render pipeline (flag 0x205). Handles different animation speeds for different cursor states.
0x00AD5A701315render_sprite_action_frameRenders a sprite action frame at a given position (param_1, param_2) using ACT (param_3) and SPR (param_4) resources. Supports rotation via param_8 (angle). For each layer in the frame, looks up the sprite data, computes UV coordinates, creates a textured quad with position/rotation, and enqueues it via CRenderPipeline__classify_and_enqueue_mesh. param_9 is the color, param_10 is the render flags.
0x00AD5FA0884render_textured_quad_2dRenders a 2D textured quad (billboard/UI element). Takes a rectangle (param_1 as 4 ints: left, top, right, bottom), optional rotation angle (param_2), Z-depth (param_3), color (param_4), texture (param_5), and UV coordinates (param_6-9). Computes perspective correction, optionally applies rotation via sin/cos, sets up vertex positions and UVs, and enqueues the mesh with flag 0x201.
0x00AD674093render_screen_fade_in_effectRenders a screen fade-in effect. On first call (offset 0x10 != 0), records start time and calls CAntiCheat__get_hwid_a, then clears the flag. Over the next 255ms, draws a full-screen black rectangle with decreasing alpha (0xFF down to 0x00) to create a fade-in effect.
0x00ADB0D01154CCamera__compute_frustum_planesComputes 6 frustum planes for the camera from half-extents (param_2=right, param_3=top) and a 3x4 view/projection matrix (param_4). Transforms the 6 frustum directions (+/-right, +/-up, near, far) through the matrix to get world-space plane equations. Stores planes at offsets 0x10-0x6C with corresponding normals at 0x70-0xB4. Calls FUN_00adb910 for further processing.
0x00ADB560451CCamera__update_view_matrixUpdates the camera view matrix. Computes rotation from pitch (offset 0x2C) and yaw (offset 0x30), transforms the zoom distance (offset 0x34) to get camera position (offset 0x80-0x88). Clamps camera Y to terrain height via C3dAttr__GetInterpolatedHeight. Builds lookat matrix from camera position to look target (offset 0x20), computes inverse, and updates the render pipeline.
0x00ADB730183CCamera__test_aabb_against_frustumTests an axis-aligned bounding box (from param_2) against the camera's 6 frustum planes. For each plane, computes signed distance using AABB extents (at param_2+0x38/3C/40) and center (at 0x2C/30/34). Returns 0 if fully outside any plane, 1 if partially intersecting, 2 if fully inside all planes.
0x00ADB7F0274CCamera__test_obb_against_frustumTests an oriented bounding box (from param_2) against the camera's 6 frustum planes. Uses 3 OBB axes (3x3 matrix at param_2+6/7/8/9/10/11/12/13/14) with half-extents (param_2+0/1/2) to compute projected radius along each frustum normal. Returns 0=outside, 1=intersecting, 2=inside.
0x00ADB910297CCamera__traverse_scene_treeRecursively traverses a scene/octree node structure for frustum culling. If depth==5, calls leaf handler FUN_00adcb60. Otherwise, iterates over 4 child nodes, tests each against the camera frustum planes, and recurses into visible children. Propagates partial/full visibility state (param_4) to avoid redundant frustum tests on fully-inside subtrees.
0x00ADBAC0145CCamera__get_look_directionComputes the normalized camera look direction vector. Subtracts camera position (offset 0x80-0x88) from look target (offset 0x20-0x28), normalizes the result, and stores in param_2 as (x,y,z) floats.
0x00ADBB60365CCamera__compute_lookat_at_yawComputes a camera lookat matrix at a specified yaw angle (param_3). Constructs rotation from current pitch (offset 0x2C) and the given yaw, transforms zoom distance to camera position, clamps Y to terrain height, builds lookat matrix. Returns param_2 as the result.
0x00ADBCD0656CCamera__update_smooth_and_fogUpdates camera yaw wrapping (clamping to 0-360), smoothly interpolates camera pitch/zoom toward target values, optionally smooths camera position (unless game option 0x36 is set). Computes field-of-view and fog-related values based on current camera orientation and zoom distance. Updates global render pipeline fog parameters.
0x00ADBF60490CCamera__update_frameCamera per-frame update. Reads target position from scene object (offset 0x1B0), updates smoothing and fog, applies camera shake, recomputes rotation matrix from pitch/yaw, calculates camera position from zoom, clamps to terrain height, builds lookat matrix, computes inverse, and updates the render pipeline.
0x00ADC7A0795CCamera__apply_shake_effectApplies camera shake effect during an active transition/earthquake. Checks if shake is enabled (offset 0x14) and if the duration has elapsed. If still active, generates random position offsets, zoom perturbation, and pitch variation using rand() and per-axis amplitude parameters. Uses global counters with sign flipping for oscillating behavior. Clears shake state when duration expires.
0x00ADCAC098CCamera__start_shakeStarts a camera shake effect. Sets shake enabled flag (offset 0x14), records start time via timeGetTime(), stores position/zoom/pitch amplitudes. Duration types: 0=650ms, 1=200ms, other=direct ms value.
0x00ADCB3037CCamera__set_shake_amplitudesSets the camera shake amplitudes: position X (offset 0x04), position Z (offset 0x08), zoom (offset 0x0C).
0x00CD1450570render_ground_marker_quadRenders a textured quad marker on the ground at world position (param_1, param_2) with radius param_3 and color param_4. Grows the render pipeline deque if needed, sets up 4 vertices in a diamond/triangle pattern around center, applies perspective correction, and enqueues into the render pipeline with blend mode 0x201.
0x00CD2960167render_skill_loading_animationRenders a skill loading animation sprite at center-top of screen. Loads sprite from resource paths at 011a0d28/011a0d40. Advances frame counter (DAT_017203f0) divided by 3. Only renders if current frame index is less than total sprite frame count.
0x00CECB90615CCamera__initialize_view_parametersInitializes camera view parameters. Copies 3D position from map object to camera at offsets 0x20-0x28 and 0x38-0x40. Parses INI file values for zoom/angle via FUN_00de3410. Handles indoor/outdoor camera modes differently. Clamps pitch (DAT_0135f448) and yaw (DAT_0135f44c) to configured min/max ranges. Applies cutscene camera overrides if flag at +0x258 is set.
0x0107ED7066CRenderPipeline__seh_destroy_linked_list_and_vectorSEH-wrapped call to CRenderPipeline__destroy_linked_list_and_vector. Sets up FS-based exception handler frame with stack cookie, calls the destroy function, then tears down the SEH frame.