Game Render
CRenderPipeline, CD3DDevice, CD3D9Device, CCamera, CMatrix, CTexture, CTextRenderer, CBitmapFont, CSceneManager, GDI+
| Address | Size | Name | Description |
|---|---|---|---|
| 0x0049DC90 | 194 | CRenderPipeline__static_init_0049dc90 | Initializes 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 |
| 0x0049E8F0 | 194 | CRenderPipeline__static_init_0049e8f0 | Static init for CRenderPipeline: allocates linked list sentinel (0x10 bytes), clears counters, sets float 1.0 scale, resizes vector to 16 entries, registers atexit destructor |
| 0x004A33F0 | 194 | CRenderPipeline__static_init_004a33f0 | Static init for CRenderPipeline: allocates linked list sentinel (0x10 bytes), clears counters, sets float 1.0 scale, resizes vector to 16 entries, registers atexit destructor |
| 0x004A6110 | 194 | CRenderPipeline__static_init_004a6110 | Static init for CRenderPipeline: allocates linked list sentinel (0x10 bytes), clears counters, sets float 1.0 scale, resizes vector to 16 entries, registers atexit destructor |
| 0x0053FB00 | 54 | CColor__constructor_rgba | Constructs a color object with 5 float fields (RGBA + alpha/intensity) |
| 0x0053FB40 | 37 | CColor__constructor_default | Constructs a color with RGBA=0 and alpha/intensity=1.0f |
| 0x0053FB70 | 44 | CVector4__constructor | Constructs a 4-component vector (x, y, z, w) from float params |
| 0x00542B50 | 292 | CD3DSurface__create_rendertarget | Creates D3D render target surface with aligned dimensions via CreateRenderTarget |
| 0x00542C80 | 220 | CD3DSurface__create_from_surface | Creates D3D surface wrapper from existing IDirect3DSurface9, queries desc for dimensions |
| 0x00542DC0 | 104 | CD3DSurface__release | Releases D3D surface COM object and resets vtable to base class |
| 0x00542E60 | 125 | CD3DSurface__destructor | D3D surface destructor: releases COM surface, resets vtable, optionally frees 20-byte obj |
| 0x00542F70 | 142 | CD3DSurface__fill_solid_color | Fills D3D surface rectangle with solid color converted to device pixel format |
| 0x00543000 | 227 | CD3DSurface__resize | Resizes D3D render target: releases old surface and creates new with aligned dimensions |
| 0x005430F0 | 208 | CD3DSurface__blit_to_surface | Blits rectangular region from this surface to another D3D surface via StretchRect |
| 0x005431C0 | 88 | CD3DSurface__clear_surface | Clears D3D surface by filling full rect with color via ColorFill |
| 0x00543220 | 77 | CD3DDevice__convert_rgb_to_pixel | Converts RGB components to device pixel format using stored shift/mask values |
| 0x005432A0 | 34 | CD3DSurface__set_palette | Sets palette on D3D surface via COM vtable call at offset 0x44 |
| 0x00543370 | 131 | CD3DSurface__get_desc | Gets D3D surface description: format, width, height, pitch via LockRect |
| 0x00543400 | 23 | CD3DSurface__set_color_key | Sets color key on D3D surface via COM vtable call at offset 0x68 |
| 0x00543420 | 744 | CD3DSurface__save_to_jpeg | Saves D3D surface content to JPEG file using Intel JPEG Library (ijlWrite) |
| 0x00543730 | 608 | CD3DSurface__blit_pixels_with_colorkey | Blits ARGB pixel data to D3D surface with magenta (0xFF00FF) color key transparency |
| 0x00543990 | 186 | CD3DSurface__create_and_fill | Creates render target, blits pixel data onto it, then clears temp surface |
| 0x00543B00 | 140 | CTexture__constructor_default | Constructs CTexture with device reference, sets vtable, 1x1 default size |
| 0x00543B90 | 559 | CTexture__constructor_create | Constructs CTexture and creates D3D texture with specified format, width, height, mipmaps |
| 0x00543DC0 | 110 | CTexture__release | Releases D3D texture COM object and resets vtable to CTexture |
| 0x00543E30 | 134 | CTexture__destructor | CTexture destructor: releases D3D texture, optionally frees 300-byte object |
| 0x00543FC0 | 22 | CD3DDevice__check_pixel_format | Checks if surface pixel format matches expected format (RGB555, ARGB4444, RGB565, ARGB8888) |
| 0x00544080 | 148 | CTexture__fill_solid_color | Fills texture surface rectangle with solid color converted to pixel format |
| 0x00544120 | 52 | CTexture__blit_to_texture | Blits from source surface to this texture via D3D Blt call |
| 0x00544160 | 196 | CTexture__blit_region | Blits rectangular region from source texture to this texture via D3D Blt |
| 0x00544230 | 445 | CTexture__recreate | Recreates D3D texture with new dimensions and pixel format, releases old surface first |
| 0x005443F0 | 23 | CTexture__draw_callback | Invokes virtual draw method at vtable offset 0x3C with position and pixel format |
| 0x00544410 | 511 | CTexture__draw_sprite_quad | Submits textured quad to render queue: 4 vertices with UV coords, position, and color |
| 0x00544610 | 551 | CTexture__draw_sprite_quad_from_region | Draws 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. |
| 0x00544840 | 544 | CTexture__draw_sprite_quad_from_region_colored | Draws 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. |
| 0x00544A70 | 37 | CTexture__is_surface_valid | Checks 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. |
| 0x00544AA0 | 134 | CTexture__get_surface_desc | Retrieves DirectDraw surface description via GetSurfaceDesc and fills output struct with pixel format info |
| 0x00544B30 | 26 | CTexture__set_color_key | Sets color key on DirectDraw surface via IDirectDrawSurface::SetColorKey vtable call |
| 0x00544B50 | 52 | CTexture__select_pixel_format | DirectDraw EnumPixelFormats callback that stores matching format by bpp (16-bit 555/4444/565 or 32-bit ARGB) |
| 0x00544C90 | 1288 | CTexture__lock_and_blit_pixels | Locks DirectDraw surface, converts ARGB pixels to surface format (555/4444/565/32bit) with color key, then unlocks |
| 0x005451B0 | 231 | CTexture__generate_mipmaps | Iterates attached mipmap surfaces, halving dimensions each level and blitting source data to each |
| 0x005452A0 | 320 | CTexture__clear_and_blit_region | Locks surface region, clears it with memset based on bpp, then calls blit helper and unlocks |
| 0x00545790 | 172 | CBitmapFont__constructor | Initializes bitmap font object with vtable, linked list node, CreateCompatibleDC for rendering |
| 0x00545840 | 67 | CBitmapFont__free_list_node | Frees the 12-byte linked list node at offset +4 if allocated |
| 0x00545890 | 78 | CBitmapFont__free_list_node_safe | Safe variant of list node free with SEH frame, frees 12-byte node at offset +4 |
| 0x005458E0 | 103 | CBitmapFont__destroy_linked_list | Walks and frees all 12-byte nodes in the intrusive linked list, then frees sentinel node |
| 0x005459F0 | 254 | CBitmapFont__destructor | Destroys bitmap font: releases cached surfaces, frees list nodes, deletes GDI DC and bitmap objects |
| 0x00545B20 | 275 | CBitmapFont__scalar_deleting_destructor | Scalar deleting destructor: runs destructor logic and optionally frees 0x2C-byte object memory |
| 0x00545C40 | 477 | CBitmapFont__render_sprite_layers | Iterates sprite layers, loads SPR/ACT frames, applies scale and draws each layer via vtable call |
| 0x00545E20 | 645 | CBitmapFont__draw_rle_sprite_to_buffer | Decodes RLE-compressed indexed sprite data, applies palette lookup with 555-to-RGB conversion, writes to pixel buffer |
| 0x005460B0 | 2341 | CBitmapFont__draw_scaled_minimap_tile | Renders scaled minimap tile from 4444/555 source texture to ARGB buffer with color transform and alpha |
| 0x005469E0 | 2673 | CBitmapFont__draw_scaled_minimap_sprite | Renders scaled minimap sprite with bounds checking, color blending, and flip support for 4444/555 formats |
| 0x00547460 | 177 | CBitmapFont__fill_rect_color | Fills pixel buffer region (or entire buffer if rect is null) with ARGB color, byte-swapping R and B |
| 0x00547790 | 163 | CBitmapFont__blit_with_colorkey | Copies pixel rect from source buffer to this buffer, skipping magenta (0xFF00FF) colorkey pixels |
| 0x00547840 | 561 | CBitmapFont__blit_with_alpha_blend | Blits source region to this buffer with per-pixel alpha blending or opaque copy (skipping magenta colorkey) |
| 0x00547A80 | 254 | CBitmapFont__create_dib_section | Creates 32-bit top-down DIB section for offscreen rendering, releases old cached surfaces and GDI objects |
| 0x00547B80 | 264 | CBitmapFont__render_cached_tiles | Renders cached surface tiles in 256x256 chunks or full-surface mode by iterating linked list nodes |
| 0x00547C90 | 114 | CBitmapFont__flush_to_texture | Sets alpha to 0xFF for all pixels then creates or updates DirectDraw texture from pixel buffer |
| 0x00547D10 | 21 | CBitmapFont__get_dc | Returns the compatible DC handle and marks the buffer as dirty |
| 0x00547D40 | 61 | CBitmapFont__ensure_size | Resizes DIB section if requested dimensions exceed current buffer width or height |
| 0x00547D80 | 1197 | CBitmapFont__scale_and_blit_pixels | Scales source pixel array by X/Y factors (nearest-neighbor) and writes to offscreen pixel buffer |
| 0x00548230 | 158 | CBitmapFont__copy_pixels_to_buffer | Copies pixel array to buffer at (x,y) with bounds check, optionally skipping magenta colorkey pixels |
| 0x005482D0 | 166 | CBitmapFont__compute_alpha_from_luminance | Calculates per-pixel alpha from RGB luminance average divided by divisor, writes to alpha byte |
| 0x00548380 | 709 | CBitmapFont__sync_to_surfaces | Syncs dirty pixel buffer to DirectDraw surfaces: creates 256x256 tile surfaces or single surface, copies pixel data |
| 0x00548650 | 296 | CBitmapFont__darken_rect | Darkens pixels in rect by multiplying RGB by (100-param)/100, skipping magenta colorkey |
| 0x00548780 | 615 | CBitmapFont__blit_subregion_blended | Copies subregion from source buffer with optional colorkey skip and per-pixel alpha blending |
| 0x005489F0 | 306 | CBitmapFont__adjust_brightness_rect | Adds brightness offset to each RGB channel in rect, clamping to [0,255], skipping magenta colorkey |
| 0x00549260 | 12 | CTextureProxy__release | Forwards release call to inner texture via vtable offset 0x24 |
| 0x00549290 | 12 | CTextureProxy__restore | Forwards restore call to inner texture via vtable offset 0x28 |
| 0x005492A0 | 14 | CTextureProxy__get_width | Forwards get_width call to inner texture via vtable offset 0x18 |
| 0x005492B0 | 12 | CTextureProxy__get_height | Forwards get_height call to inner texture via vtable offset 0x1C |
| 0x005492C0 | 47 | CTextureProxy__ensure_size | Checks if inner texture meets minimum dimensions, calls resize via vtable if too small |
| 0x005492F0 | 35 | CTextureProxy__blit_region | Forwards blit region call to inner texture via vtable offset 0x20 |
| 0x00549320 | 35 | CTextureProxy__blit_region_direct | Forwards blit region call to inner texture with direct params via vtable offset 0x20 |
| 0x005493B0 | 249 | CD3DDeviceCaps__init_defaults | Initializes D3D device capabilities struct with default values: texture sizes=8, all caps=0 |
| 0x005494C0 | 172 | CD3DDevice__clamp_texture_dimensions | Rounds dimensions up to next power-of-2, clamps to device min/max texture size and aspect ratio |
| 0x00549570 | 70 | CD3DDevice__restore_primary_surface | Restores primary DirectDraw surface via Blt, falls back to BltFast if Blt fails |
| 0x005495C0 | 118 | CD3DDevice__check_and_restore_surfaces | Checks if surfaces are lost (DDERR_SURFACELOST), restores them and reloads D3D device if needed |
| 0x00549640 | 141 | CD3DDevice__test_cooperative_level | Tests cooperative level on primary, secondary, and Z-buffer surfaces, restores device if lost |
| 0x005496D0 | 88 | CD3DDevice__clear_viewport_with_color | Clears the D3D viewport with both color and Z-buffer (flags=3), using full client rect and specified ARGB color parameter |
| 0x00549730 | 85 | CD3DDevice__clear_viewport | Clears the D3D viewport with z-buffer clear flag using full client rect |
| 0x00549790 | 132 | CD3DDevice__flip_or_blit_to_front | Flips to front buffer in fullscreen, or blits backbuffer to front in windowed mode via BltFast |
| 0x005498A0 | 1255 | CD3DDevice__create_surfaces | Creates primary/backbuffer surfaces, Z-buffer, sets cooperative level and display mode for windowed or fullscreen |
| 0x00549E10 | 276 | CD3DDevice__create_d3d_device | Creates Direct3D device from DirectDraw, sets viewport, enumerates texture formats requiring 32-bit |
| 0x00549F30 | 203 | CD3DDevice__create_directdraw | Creates DirectDraw7 object, queries display mode caps, sets cooperative level with exclusive/normal flags |
| 0x0054A000 | 886 | CD3DDevice__initialize_full | Full D3D initialization: creates DirectDraw, surfaces, D3D device, viewport, Z-buffer, and texture format |
| 0x0054A380 | 543 | CD3DDevice__create_render_pipeline | Detects pixel format, queries device caps, creates CRenderPipeline with viewport and ambient color |
| 0x0054A5A0 | 162 | CD3DDevice__create_render_target | Creates render target surface, falls back to offscreen plain if dimensions exceed max texture size |
| 0x0054A650 | 237 | CD3DDevice__recreate_zbuffer | Recreates Z-buffer surface with current pixel format and attaches to render target |
| 0x0054A740 | 39 | CD3DDevice__extract_blue_channel | Extracts and rescales blue channel from pixel value using device-specific mask and shift |
| 0x0054A770 | 39 | CD3DDevice__extract_green_channel | Extracts and rescales green channel from pixel value using device-specific mask and shift |
| 0x0054A7A0 | 39 | CD3DDevice__extract_red_channel | Extracts and rescales red channel from pixel value using device-specific mask and shift |
| 0x0054A7D0 | 218 | CD3DDevice__release_all_objects | Releases all D3D/DDraw objects: device, surfaces, Z-buffer, clipper, restores cooperative level |
| 0x0054A8D0 | 89 | CD3DDevice__set_clipper | Creates clipper, associates with HWND, and attaches to primary surface for windowed rendering |
| 0x0054A930 | 60 | CD3DDevice__update_anisotropic_flags | Sets anisotropic filtering global flags based on device capability bit 0x20 and config flag |
| 0x0054A9C0 | 66 | CD3DDevice__restore_display_mode | Restores original display mode in fullscreen, redraws menu bar and window |
| 0x0054AA10 | 56 | CD3DDevice__unlock_surfaces | Unlocks back and front surfaces, then flips the surface chain |
| 0x0054AAD0 | 895 | CD3DDevice__startup | Full device startup: initializes D3D, sets render states (lighting, alpha, textures), configures texture stages |
| 0x0054AE50 | 53 | CD3DDevice__is_valid_texture_size | Returns true if width/height are within device min/max texture size limits |
| 0x0054AE90 | 27 | CD3DDevice__restore_lost_surfaces | Restores Z-buffer surface and reloads all DirectDraw surfaces after device loss |
| 0x0054AEB0 | 70 | CD3DDevice__blit_backbuffer_to_primary | Blits render target to primary surface via Blt, falls back to BltFast on failure |
| 0x0054AF10 | 8 | CD3DDevice__mark_surfaces_lost | Sets surface-lost flag at offset 0x248 to trigger restoration on next frame |
| 0x0054AF20 | 288 | CD3DDevice__present_frame | Presents rendered frame: handles windowed blit, fullscreen flip, and virtual desktop positioning |
| 0x0054B040 | 1913 | CD3DDevice__calibrate_texture_coordinates | Renders test quads to find optimal UV bias for pixel-perfect texturing, stores result in global DAT_01312de0/de4 |
| 0x0054B7C0 | 104 | CRenderState__init_defaults | Initializes render state object: zeros all state fields, clears 0x1A0 bytes of render data |
| 0x0054B840 | 219 | CD3DDevice__find_best_display_mode | Enumerates display modes matching resolution, selects highest refresh rate available |
| 0x0054B920 | 91 | CD3DDevice__acquire_adapter_info | Queries DirectDraw adapter identifier and stores in device struct at offset 0x530 |
| 0x0054B980 | 197 | CD3DDevice__calc_clamped_texture_size | Rounds to next power-of-2 and clamps to device max texture size, enforces aspect ratio constraint |
| 0x0054BA50 | 114 | CD3D9Device__create_swap_chain | Creates D3D9 swap chain for presentation, acquires back buffer from chain |
| 0x0054BAD0 | 50 | CD3D9Device__begin_scene | Checks device cooperative status, calls IDirect3DDevice9::BeginScene (vtable 0xA4), then resets texture stage counters. Returns 1 on success, 0 on failure. |
| 0x0054BB10 | 67 | CD3D9Device__set_scissor_test | Sets D3D9 scissor rect if device supports it (D3DCAPS bit 0x40000000) |
| 0x0054BB60 | 426 | CD3D9Device__check_device_status | Tests D3D9 cooperative level, handles device lost/reset/removal, logs errors with HRESULT lookup |
| 0x0054BD10 | 643 | CD3D9Device__initialize | Creates D3D9Ex, finds display mode, creates device with present params, queries adapter and device caps |
| 0x0054BFA0 | 114 | CD3D9Device__release_all | Releases D3D9 device, swap chain, back buffer, and adapter objects |
| 0x0054C020 | 38 | CD3D9Device__update_anisotropic_filter | Enables anisotropic filtering flag if device supports it and global config flag is set |
| 0x0054C050 | 31 | CD3D9Device__end_scene | Flushes render state and calls IDirect3DDevice9::EndScene |
| 0x0054C080 | 188 | CD3D9Device__find_display_mode | Finds matching display mode for adapter, falls back to CheckDeviceType if enumeration fails |
| 0x0054C140 | 278 | CD3D9Device__startup | Full D3D9 startup: initializes device, queries caps, sets render states, clips cursor in fullscreen |
| 0x0054C440 | 75 | CD3D9Device__stretch_rect_to_backbuffer | Stretches render target surface to back buffer via StretchRect, releases surface on failure |
| 0x0054C490 | 63 | CD3D9Device__clip_cursor_fullscreen | Clips cursor to window rect in fullscreen mode (when windowed flag is 0) |
| 0x0054C4D0 | 61 | CD3D9Device__clip_cursor_fullscreen_void | Clips cursor to window rect in fullscreen mode (void return variant) |
| 0x0054C510 | 43 | CD3D9Device__present | Calls IDirect3DDevice9::Present(0,0,0,0) and stores HRESULT at offset 0x68C |
| 0x0054D4B0 | 60 | CGDIContext__acquire_dc | Acquires DC from provider via vtable, saves current font, sets transparent background mode |
| 0x0054D4F0 | 52 | CTextVertex__init | Initializes text vertex with position, color, bold flag, and zero width/height |
| 0x0054D530 | 135 | CGDIPlusContext__constructor | Initializes GDI+ context: zeros fields, calls GdiplusStartup to initialize GDI+ subsystem |
| 0x0054D7E0 | 85 | CGDIContext__release_dc | Restores original font into DC and releases it back to provider via vtable |
| 0x0054D890 | 129 | CGDIPlusContext__destructor | Destroys GDI+ context: deletes cached font objects, shuts down GDI+, frees font vector |
| 0x0054D980 | 56 | CTextVertex__equals | Compares two text vertices for equality on all 5 fields (position, color, bold, italic) |
| 0x0054D9C0 | 53 | CTextVertex__less_than | Lexicographic less-than comparison on first 3 fields of text vertex |
| 0x0054DC90 | 221 | CTextVertex__create_gdi_font | Creates GDI HFONT from vertex settings: enumerates font families, applies bold/italic, stores handle |
| 0x0054DD70 | 355 | CTextVertex__create_rix_font | Creates LOGFONT from Rix font family (Squirrel/Loveangel/Diary/MiniHeart/Freshman/Magic) by ID, calls CreateFontIndirectA |
| 0x0054DEE0 | 572 | CTextVertex__load_scdream_font | Loads SCDream4/SCDream6 OTF font via AddFontResourceExA, creates HFONT with bold=700 if flag set |
| 0x0054E120 | 24 | CTextVertex__set_rix_font_handle | Creates Rix font with size 0xc and stores HFONT at this+0x10 |
| 0x0054E140 | 356 | CTextVertex__remove_scdream_font | Removes SCDream4/SCDream6 font resource via RemoveFontResourceExA if font type is 0x1d |
| 0x0054E2B0 | 421 | render_line_as_textured_quad | Computes perpendicular offset from line (p1,p2) using acos/sin/cos, submits a textured quad strip |
| 0x0054E460 | 302 | render_filled_rect | Renders solid colored rectangle via 4-vertex mesh, checks alpha!=0, enqueues with blend mode 0x201 |
| 0x0054E590 | 316 | render_filled_rect_additive | Renders solid colored rectangle with additive blending (src=5 dst=6, mode 0x205) |
| 0x0054E6D0 | 692 | render_dashed_line_as_quads | Renders dashed line from (p1,p2) to (p3,p4) as repeated textured quad segments with gap spacing |
| 0x0054ED40 | 309 | render_textured_rect | Renders textured rectangle with UV coords (0,0)-(1,1), optional texture override, blend mode 0x201 |
| 0x0054EE80 | 333 | render_textured_rect_custom_uv | Renders textured rectangle with caller-specified UV coordinates per corner, blend mode 0x201 |
| 0x0054EFD0 | 744 | render_textured_rect_from_texture | Renders textured rect computing UV from texture dimensions via vtable calls, blend mode 0x201 |
| 0x0054F2C0 | 26 | CTextVertex__compare_font_name | EnumFontFamiliesEx callback: compares font name with string at param+0x1c via _stricmp |
| 0x0054F2E0 | 115 | CTextVertex__find_color_code_offset | Scans string for pipe-delimited color code (\|XX), returns offset of first color code or full length |
| 0x0054F360 | 1031 | CTextVertex__get_or_create_cached_font | Looks up font in sorted vector cache by (type,size,charset,bold,italic); creates if missing via CreateFontIndirectA |
| 0x0054F770 | 188 | CTextVertex__find_system_font_name | Enumerates system fonts to find matching face name, tries primary then fallback font table |
| 0x0054F830 | 102 | CTextVertex__lookup_font_index_by_name | Searches fallback font name table for matching string, returns table index or 0 if not found |
| 0x0054F8A0 | 1117 | CTextVertex__get_gdiplus_font_family_name | Loads private font file via GDI+, gets family name via GdipGetFamilyName, converts to ANSI string |
| 0x0054FD00 | 155 | CTextVertex__measure_text_with_color_codes | Measures text width handling embedded \|XX color codes, sums widths of each color segment |
| 0x0054FF10 | 75 | CTextVertex__check_starts_with_color_code | Returns 1 if string starts with "\|XX" color code pattern (pipe + two hex digits) |
| 0x0054FF60 | 59 | CTextVertex__check_caret_color_code | Returns 1 if string starts with ^XXXXXX (caret + 6 hex digits) color code format |
| 0x0054FFA0 | 15 | CTextVertex__is_hex_digit | Returns nonzero if byte is valid hex digit via lookup table at DAT_01311f60 |
| 0x0054FFB0 | 35 | CTextVertex__parse_hex_color_byte | Parses two hex chars at offset+1 and +2 into a color byte value using hex lookup table |
| 0x0054FFE0 | 283 | CTextVertex__configure_font_style | Sets font type/size/name based on global font mode (1-12), adjusts size for specific charset modes |
| 0x00550130 | 18 | CTextVertex__set_bk_color | Wrapper: calls SetBkColor on the HDC stored at this+0 |
| 0x00550150 | 18 | CTextVertex__set_bk_mode | Wrapper: calls SetBkMode on the HDC stored at this+0 |
| 0x00550170 | 18 | CTextVertex__set_text_color | Wrapper: calls SetTextColor on the HDC stored at this+0 |
| 0x00550190 | 141 | CTextVertex__draw_text_segment | Draws single text segment, splits at color code if present and draws second part with parsed color |
| 0x00550220 | 323 | CTextVertex__draw_text_with_color_codes | Draws text with embedded \|XX color codes, iterates through segments advancing x position |
| 0x00550520 | 351 | CTextVertex__measure_text_extent | Measures text via MultiByteToWideChar + GetTextExtentPoint32W, optionally sums ABC widths for italic |
| 0x00550680 | 248 | CTextVertex__draw_text_out | Draws text via MultiByteToWideChar + TextOutW with font selection from cache |
| 0x00550AF0 | 39 | CD3DDeviceState__init | Initializes D3D device state block: zeroes 0x4c8 bytes of render/texture/sampler state storage |
| 0x00550B20 | 223 | CD3DDeviceState__copy_from_device | Copies D3D state from device: 0xd2 render states, 0x42 texture stage states, 0x1c sampler states |
| 0x00550C00 | 49 | CD3DDeviceState__reset_textures | Clears 2 texture slots: sets cached texture to NULL and calls device SetTexture(stage, NULL) |
| 0x00550F50 | 21 | CD3DDeviceState__clear_counters | Zeros two counters at offset 0x4c8 and 0x4cc in device state block |
| 0x00551430 | 30 | CD3DDeviceState__get_fvf | Returns cached FVF (flexible vertex format) value from state block at offset +4 |
| 0x00551450 | 34 | CD3DDeviceState__get_render_state | Returns cached render state value by index from state block array at offset +8 |
| 0x00551480 | 62 | CD3DDeviceState__get_sampler_state | Returns cached sampler state value by (stage, type) from array at offset +0x458, max 2 stages |
| 0x005514C0 | 55 | CD3DDeviceState__get_texture_stage_state | Returns cached texture stage state by (stage, type) from array at offset +0x350, max 2 stages |
| 0x00551500 | 201 | CD3DDeviceState__capture_all_states | Captures full D3D state: FVF + 0xd2 render states + 0x42 texture stage states + 0x1c sampler states |
| 0x005515D0 | 199 | CD3DDeviceState__refresh_all_states | Refreshes cached D3D state from device: FVF + render states + texture stage + sampler states |
| 0x005516A0 | 314 | CD3DDeviceState__apply_dirty_states | Compares cached vs device states, applies only changed render/texture/sampler states to D3D device |
| 0x005517E0 | 62 | CD3DDeviceState__set_fvf | Sets FVF on device if changed from cached value, updates cache on success |
| 0x00551820 | 70 | CD3DDeviceState__set_render_state | Sets D3D render state if changed from cached value, updates cache on success |
| 0x00551870 | 109 | CD3DDeviceState__set_sampler_state | Sets D3D sampler state if changed from cached value, max 2 stages, updates cache on success |
| 0x005518E0 | 89 | CD3DDeviceState__set_texture | Sets D3D texture on stage if changed from cached value, max 2 stages, updates cache on success |
| 0x00551940 | 103 | CD3DDeviceState__set_texture_stage_state | Sets D3D texture stage state if changed from cached, max 2 stages x 0x21 types, updates cache |
| 0x005529C0 | 727 | CMatrix__apply_view_transform | Multiplies 3x4 matrix by global view matrix with translation offset from global camera position |
| 0x00552CA0 | 718 | CMatrix__multiply_by_global_with_translation | Multiplies 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. |
| 0x00552F70 | 759 | CMatrix__set_rotation_x | Sets 3x4 matrix to X-axis rotation by angle using sin/cos, preserves translation |
| 0x00553270 | 767 | CMatrix__set_rotation_y | Sets 3x4 matrix to Y-axis rotation by angle using sin/cos, preserves translation |
| 0x00553570 | 735 | CMatrix__set_rotation_z | Sets 3x4 matrix to Z-axis rotation by angle using sin/cos, preserves translation |
| 0x00553850 | 771 | CRay__intersect_AABB | Ray-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. |
| 0x00553B60 | 537 | CRay__intersect_triangle | Ray-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. |
| 0x00553D80 | 734 | CRay__intersect_AABB_alt | Ray-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. |
| 0x00554060 | 531 | CRay__intersect_triangle_alt | Ray-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. |
| 0x00554280 | 189 | trig_table_init_sincos_361 | Initializes 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+. |
| 0x00554340 | 143 | CMatrix__extract_quaternion_from_rotation | Extracts 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. |
| 0x005543D0 | 71 | trig_table_lookup_cos | Looks 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. |
| 0x00554420 | 71 | trig_table_lookup_angle | Looks 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. |
| 0x00554470 | 71 | trig_table_lookup_sin | Looks 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. |
| 0x00554620 | 208 | CMatrix__is_approximately_identity | Checks 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). |
| 0x00554900 | 27 | CMatrix__extract_diagonal_3x3 | Extracts diagonal elements from source matrix into 3-element vector |
| 0x00554920 | 539 | CMatrix__compute_inverse_3x4 | Computes inverse of 3x4 affine transform matrix using cofactor expansion |
| 0x00554B40 | 68 | CMatrix__init_identity_set_scale_diagonal | Loads identity then sets diagonal scale factors [0],[4],[8] |
| 0x00554B90 | 309 | CMatrix__from_quaternion_rotation_only | Builds 3x4 rotation matrix from quaternion, translation zeroed |
| 0x00554CD0 | 309 | CMatrix__from_quaternion_rotation_only_alt | Duplicate quaternion-to-rotation-matrix conversion |
| 0x00554E10 | 337 | CMatrix__from_axis_angle_with_translation | Builds 3x4 matrix from axis-angle rotation with translation |
| 0x00554F70 | 336 | CMatrix__from_axis_angle_rotation_only | Builds 3x4 rotation matrix from axis-angle, translation zeroed |
| 0x005550C0 | 69 | CMatrix__init_identity_set_translation | Loads identity then sets translation [9],[10],[11] |
| 0x00555110 | 589 | CMatrix__build_lookat_matrix | Builds look-at view matrix from eye, target, and up vector |
| 0x00555360 | 110 | CMatrix__init_rotation_x | Builds identity then sets X-axis rotation using sin/cos |
| 0x005553D0 | 112 | CMatrix__init_rotation_y | Builds identity then sets Y-axis rotation using sin/cos |
| 0x00555440 | 112 | CMatrix__init_rotation_z | Builds identity then sets Z-axis rotation using sin/cos |
| 0x005554B0 | 536 | CMatrix__multiply_3x4 | Multiplies two 3x4 affine matrices including translation |
| 0x005556D0 | 339 | CMatrix__normalize_columns | Normalizes each column of 3x4 matrix by vector magnitudes |
| 0x00555AF0 | 666 | CMatrix__multiply_inplace_with_translation | In-place multiply 3x4 matrix with translation application |
| 0x00555D90 | 69 | CQuaternion__dot_product | Computes dot product of two 4-component quaternions |
| 0x00555DE0 | 240 | CQuaternion__multiply | Multiplies two quaternions using Hamilton product formula |
| 0x00555ED0 | 306 | CQuaternion__to_rotation_matrix | Converts quaternion to 3x3 rotation matrix in 3x4 layout |
| 0x00556010 | 184 | CQuaternion__to_axis_angle | Converts quaternion to axis-angle using acos and sin |
| 0x005560D0 | 582 | CMatrix__compute_inverse_orthonormal | Computes inverse by transposing rotation and normalizing |
| 0x00556320 | 533 | CMatrix__build_oriented_frame_from_points | Builds orthonormal 3x4 frame from two 3D points |
| 0x00556540 | 200 | CQuaternion__from_axis_angle | Creates quaternion from axis vector and angle |
| 0x00556610 | 132 | CRay__squared_distance_to_point | Computes squared perpendicular distance from point to ray |
| 0x005566A0 | 426 | CMatrix__build_frame_from_direction | Builds orthonormal 3x4 frame from direction vector |
| 0x00556850 | 435 | CMatrix__build_frame_from_normal_vector | Builds orthonormal 3x4 frame from normal with up reference |
| 0x00556A10 | 90 | CMatrix__set_from_four_vectors | Sets 3x4 matrix columns from four 3-element vectors |
| 0x00556A70 | 257 | CMatrix__set_from_axes_and_position | Sets 3x4 matrix from 3 axis vectors and position |
| 0x00556B80 | 693 | CMatrix__build_view_matrix_from_points | Builds view matrix from eye and target points |
| 0x00556E40 | 16 | math_cosf_wrapper | Wrapper around x87 fcos instruction |
| 0x00556E50 | 16 | math_sinf_wrapper | Wrapper around x87 fsin instruction |
| 0x00556E60 | 16 | math_sqrtf_wrapper | Wrapper around SQRT intrinsic |
| 0x00559260 | 178 | CRenderer__draw_batch_meshes | Iterates mesh list, sets render state and texture, draws |
| 0x00559320 | 175 | CRenderer__draw_batch_meshes_alpha_test | Iterates mesh list with alpha test render state |
| 0x00559420 | 848 | CRenderPipeline__constructor | Initializes render pipeline with 20+ internal buffers |
| 0x00559770 | 67 | CRenderPipeline__free_buffer_8byte | Frees 8-byte allocation at this+4 |
| 0x005597C0 | 131 | CRenderPipeline__destroy_linked_list_and_vector | Clears vector and frees linked list nodes |
| 0x005598E0 | 103 | CRenderPipeline__destroy_linked_list | Walks and frees 0x10-byte linked list nodes |
| 0x005599E0 | 71 | CRenderPipeline__destructor | Sets vtable and calls cleanup to free all buffers |
| 0x00559A30 | 99 | CRenderPipeline__destructor_scalar | Scalar deleting destructor, frees 0x284-byte object |
| 0x00559AA0 | 305 | CRenderPipeline__acquire_render_node_pool | Gets/allocates pool node from linked list at this+0xC |
| 0x00559BE0 | 107 | CRenderPipeline__add_to_post_process_queue | Adds item to post-process queue at 0x1F8 or 0x204 |
| 0x00559C50 | 65 | CRenderPipeline__add_to_overlay_queue | Adds item to overlay render queue at 0x240 |
| 0x00559CA0 | 720 | CRenderPipeline__classify_and_enqueue_mesh | Routes mesh to correct queue based on material flags |
| 0x00559F70 | 262 | CRenderPipeline__submit_renderable_object | Allocates render node, sets draw type 3, classifies mesh |
| 0x0055A090 | 369 | CRenderPipeline__compute_screen_ray | Computes normalized ray from screen pixel coordinates |
| 0x0055A210 | 45 | CRenderPipeline__toggle_fog_state | Enables or disables fog rendering |
| 0x0055A240 | 276 | CRenderPipeline__set_fog_color_blended | Blends fog color with global based on alpha ratio |
| 0x0055A360 | 401 | CRenderPipeline__begin_frame | Resets all 20+ render queues, recycles pool nodes |
| 0x0055A500 | 732 | CRenderPipeline__setup_lighting_and_fog | Sets up D3D lighting materials and fog parameters |
| 0x0055A7E0 | 315 | CRenderPipeline__draw_hourly_clock_overlay | Draws clock overlay that fades in/out on the hour |
| 0x0055A920 | 899 | CRenderPipeline__draw_coordinate_display | Renders map coordinate digits using sprite font |
| 0x0055ACB0 | 76 | CRenderPipeline__draw_indexed_primitive_FVF1C4 | Draws indexed primitive with FVF 0x1C4 |
| 0x0055AD00 | 76 | CRenderPipeline__draw_indexed_primitive_FVF2C4 | Draws indexed primitive with FVF 0x2C4 |
| 0x0055AD50 | 76 | CRenderPipeline__draw_indexed_primitive_FVF2C4_alt | Draws indexed primitive FVF 0x2C4 variant |
| 0x0055ADA0 | 99 | CRenderPipeline__begin_scene | Calls D3D BeginScene and begins frame reset |
| 0x0055AFA0 | 91 | CRenderPipeline__pack_rgb565_color | Packs RGB into 16-bit using format shift/mask values |
| 0x0055B000 | 183 | CRenderPipeline__end_frame_and_present | Tracks FPS, calls EndScene and Present |
| 0x0055B0C0 | 151 | CRenderPipeline__sort_and_draw_opaque_queue | Sorts opaque queue at 0x180 by depth and draws |
| 0x0055B160 | 1019 | CRenderPipeline__draw_alpha_blended_meshes | Draws alpha blended queues at 0x18C and 0x1BC |
| 0x0055B560 | 110 | CRenderPipeline__draw_unsorted_queue_198 | Draws meshes from queue at 0x198 unsorted |
| 0x0055B5D0 | 151 | CRenderPipeline__sort_and_draw_queue_1A4 | Sorts and draws queue at 0x1A4 by depth |
| 0x0055B670 | 151 | CRenderPipeline__sort_and_draw_queue_228 | Sorts and draws queue at 0x228 by depth |
| 0x0055B720 | 219 | CRenderPipeline__draw_blended_objects_queue_1EC | Draws objects from queue 0x1EC with blend states |
| 0x0055B800 | 151 | CRenderPipeline__sort_and_draw_queue_1C8 | Sorts and draws queue at 0x1C8 by depth |
| 0x0055B8A0 | 151 | CRenderPipeline__sort_and_draw_queue_1D4 | Sorts and draws queue at 0x1D4 by depth |
| 0x0055B940 | 151 | CRenderPipeline__sort_and_draw_queue_1E0 | Sorts and draws queue at 0x1E0 by depth |
| 0x0055B9E0 | 353 | CRenderPipeline__draw_ground_meshes | Draws ground queues at 0x15C and 0x1B0 |
| 0x0055BB50 | 226 | CRenderPipeline__draw_transparent_depth_sorted_234 | Draws transparent objects from queue 0x234 |
| 0x0055BC40 | 142 | CRenderPipeline__sort_and_draw_queue_168 | Sorts queue at 0x168 by texture and draws |
| 0x0055BCD0 | 142 | CRenderPipeline__sort_and_draw_queue_174 | Sorts queue at 0x174 by texture and draws |
| 0x0055BD60 | 217 | CRenderPipeline__draw_multitexture_queue_1F8 | Draws dual-texture meshes from queue 0x1F8 |
| 0x0055BE40 | 708 | CRenderPipeline__draw_lightmap_overlay_queue_240 | Draws lightmap overlay meshes from queue 0x240 |
| 0x0055C110 | 151 | CRenderPipeline__sort_and_draw_queue_21C | Sorts and draws queue at 0x21C by depth |
| 0x0055C1B0 | 182 | CRenderPipeline__draw_blended_objects_queue_210 | Draws objects from queue 0x210 with blend modes |
| 0x0055C270 | 3223 | CRenderPipeline__render_all_queues | Main render pass drawing all queues |
| 0x0055CF10 | 167 | CRenderPipeline__setup_scene_lighting_params | Copies global light data, sets fog type |
| 0x0055D0F0 | 46 | CRenderPipeline__get_elapsed_time_float | Returns elapsed time at offset 0x264 as float |
| 0x0055D150 | 19 | CRenderPipeline__world_to_screen_scale | Converts world-space size to screen-space |
| 0x0055D170 | 4 | CRenderPipeline__get_near_clip | Returns near clip plane distance from offset 0x18 |
| 0x0055D180 | 4 | CRenderPipeline__get_far_clip | Returns far clip plane distance from offset 0x1C |
| 0x0055D200 | 269 | CTextRenderer__measure_text_dimensions | Measures 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. |
| 0x0055D3E0 | 146 | CRenderPipeline__query_display_format_caps | Queries D3D display format capabilities |
| 0x0055D480 | 219 | CRenderPipeline__project_world_to_screen_2d | Projects 3D world point to 2D screen coordinates |
| 0x0055D560 | 229 | CRenderPipeline__project_world_to_screen_offset | Projects to screen with custom offset for centering |
| 0x0055D650 | 243 | CRenderPipeline__project_world_to_screen_with_depth | Projects to screen with perspective depth value |
| 0x0055D750 | 243 | CRenderPipeline__project_world_to_screen_with_depth_alt | Duplicate projection function |
| 0x0055D860 | 1410 | CRenderPipeline__save_screenshot_bmp | Saves backbuffer to BMP with optional watermark |
| 0x0055DDF0 | 1346 | CRenderPipeline__save_screenshot_jpeg | Saves backbuffer to JPEG using Intel JPEG Library |
| 0x0055E340 | 1268 | CRenderPipeline__save_logo_screenshot_jpeg | Captures screen with logo overlay as JPEG |
| 0x0055E840 | 957 | CRenderPipeline__draw_overlays_and_screen_effects | Draws clock, coordinates, debug, glitch effects |
| 0x0055EC00 | 16 | CRenderPipeline__set_fog_color | Sets fog color ARGB value at offset 0x270 |
| 0x0055EC10 | 235 | CRenderPipeline__set_directional_light | Sets D3D directional light 0 with negated direction, diffuse and ambient colors |
| 0x0055ED00 | 60 | CRenderPipeline__set_texture_stage1 | Sets D3D texture on stage 1, caches at offset 0x26C |
| 0x0055ED50 | 2296 | CRenderPipeline__set_texture_blend_mode | Sets D3D texture stage states for 16 different blend modes (0-15) |
| 0x0055F690 | 16 | CRenderPipeline__set_ambient_color | Sets ambient color ARGB value at offset 0x24C |
| 0x0055F6A0 | 300 | CRenderPipeline__set_viewport_dimensions | Sets viewport width/height, computes projection scales and FOV |
| 0x0055F7D0 | 210 | CRenderPipeline__set_texture_by_stage | Sets D3D texture on specified stage with caching |
| 0x0055F8B0 | 60 | CRenderPipeline__set_texture_stage0 | Sets D3D texture on stage 0, caches at offset 0x268 |
| 0x0055F8F0 | 420 | CRenderPipeline__draw_fps_counter | Draws FPS counter text using GDI TextOutA at bottom-right |
| 0x0055FAA0 | 37 | CRenderPipeline__reset_fps_timer | Resets FPS counter state at offsets 0x25C-0x264 |
| 0x0055FAD0 | 217 | CRenderPipeline__draw_text_at_position | Draws text string at (x,y) with specified color via GDI |
| 0x0055FF60 | 326 | CRenderPipeline__grow_circular_buffer | Grows circular buffer by doubling, copies with wraparound |
| 0x00560A40 | 2903 | CSceneManager__constructor | Initializes scene manager with vtable, linked lists, circular buffers, vectors |
| 0x005615A0 | 65 | CSceneManager__cleanup_wrapper_A | Wrapper calling internal cleanup with SEH frame |
| 0x005615F0 | 65 | CSceneManager__cleanup_wrapper_B | Wrapper calling internal cleanup B with SEH frame |
| 0x00561640 | 65 | CSceneManager__cleanup_wrapper_C | SEH wrapper calling CSceneManager__destroy_circular_buffer_168byte for 0xa8-byte element circular buffer cleanup |
| 0x00561690 | 148 | CSceneManager__destroy_render_node_pools | Destroys render node pools: calls free_render_node_pool_lists, then frees two linked lists of 8-byte nodes |
| 0x00561730 | 131 | CSceneManager__destroy_circular_queue | Destroys a circular queue: calls STL_vector_deallocate to free the backing array, then frees linked list of 0x14-byte sentinel nodes |
| 0x00561850 | 75 | CSceneManager__destroy_element_array | Calls _eh_vector_destructor_iterator_ to destroy array of 25 elements (4 bytes each), using CSceneManager__free_node_list_with_vectors as dtor |
| 0x005618A0 | 201 | CSceneManager__destroy_circular_buffer_40byte | Destroys circular buffer with 0x28-byte elements: drains count to zero, frees each element slot, frees backing array and sentinel node |
| 0x00561970 | 204 | CSceneManager__destroy_circular_buffer_188byte | Destroys circular buffer with 0xBC-byte elements: drains count to zero, frees each element slot, frees backing array and sentinel node |
| 0x00561A50 | 204 | CSceneManager__destroy_circular_buffer_168byte | Destroys circular buffer with 0xA8-byte elements: drains count to zero, frees each element slot, frees backing array and sentinel node |
| 0x00561B30 | 83 | CSceneManager__free_linked_list | Frees a singly-linked list of 8-byte nodes, walking via first field as next pointer |
| 0x00561B90 | 197 | CSceneManager__free_node_list_with_vectors | Frees linked list of 0x20-byte nodes, each containing a vector of 0x28-byte elements. Deallocates vector buffer then node for each entry. |
| 0x00561C60 | 103 | CSceneManager__free_circular_queue_sentinel | Frees a circular queue sentinel: clears sentinel's count, walks and frees linked list of 0x14-byte nodes, then frees sentinel itself |
| 0x00561CD0 | 65 | CSceneManager__cleanup_wrapper_D | SEH wrapper calling CSceneManager__destroy_circular_queue |
| 0x00562090 | 464 | CSceneManager__dtor | CSceneManager destructor: resets vtable, deallocates 20+ internal vectors (4-byte and 8-byte types), destroys circular buffers, render node pools, element arrays, and linked lists |
| 0x00562260 | 38 | CSceneManager__scalar_deleting_dtor | CSceneManager scalar deleting destructor: calls dtor, optionally frees 0x25C-byte object if flag bit 0 is set |
| 0x00562290 | 221 | CSceneManager__free_render_node_pool_lists | Frees 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 |
| 0x00562370 | 320 | CSceneManager__circular_buffer_resize_fill | Resizes 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. |
| 0x005624C0 | 400 | CSceneManager__circular_buffer_grow | Grows 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. |
| 0x00564D90 | 131 | CSceneManager__render_batch_with_alpha_test | CSceneManager: render batch with alpha test |
| 0x00564E20 | 130 | CSceneManager__render_batch_with_alpha_blend | CSceneManager: render batch with alpha blend |
| 0x00564EB0 | 144 | CSceneManager__ctor | CSceneManager 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. |
| 0x00564F40 | 72 | CSceneManager__release_child_object | Releases a COM-like child object stored at this[0]. If non-null, calls its Release method (vtable+8) with security cookie frame setup. |
| 0x00564F90 | 61 | CSceneManager__release_child_object_00564f90 | Releases 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. |
| 0x00564FE0 | 71 | CSceneManager__dtor_00564fe0 | CSceneManager destructor. Sets vtable to PTR_010dd2e0, then calls base class cleanup via stub_00562090. Non-deleting destructor. |
| 0x00565030 | 54 | CSceneManager__flush_render_states | Flushes dirty render states by calling CD3DDeviceState__apply_dirty_states. Wrapper with SEH frame setup. |
| 0x00565070 | 99 | CSceneManager__scalar_deleting_dtor_00565070 | CSceneManager scalar deleting destructor. Sets vtable, calls base cleanup via stub_00562090, then optionally deletes (0x274 bytes) if param_2 bit 0 is set. |
| 0x005650F0 | 92 | CSceneManager__save_device_state | Saves current D3D device state. Stores pointer to this+0x0C into param_2, then calls CD3DDeviceState__copy_from_device to snapshot the current render states. |
| 0x00565150 | 66 | CSceneManager__clear_render_target | Clears 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. |
| 0x005651A0 | 100 | CSceneManager__clear_with_ambient_color | Clears 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. |
| 0x00565210 | 703 | CSceneManager__render_to_texture | Renders 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. |
| 0x005654D0 | 619 | CSceneManager__setup_fog_and_projection | Sets 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. |
| 0x00565740 | 139 | CSceneManager__draw_primitive_batch | Draws 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. |
| 0x005657D0 | 139 | CSceneManager__draw_primitive_batch_textured | Draws 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. |
| 0x00565860 | 139 | CSceneManager__draw_primitive_batch_textured_00565860 | Draws 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. |
| 0x005658F0 | 124 | CSceneManager__render_sorted_batch | Renders 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. |
| 0x00565B70 | 186 | CSceneManager__present_frame | Presents 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. |
| 0x00565C30 | 362 | CSceneManager__render_transparent_pass | Renders 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. |
| 0x00565DA0 | 889 | CSceneManager__render_3d_objects_pass | Main 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. |
| 0x00566120 | 215 | CSceneManager__render_additive_blend_pass | Renders 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. |
| 0x00566200 | 200 | CSceneManager__render_alpha_masked_pass | Renders alpha-masked geometry pass. Saves device state, sets alpha reference to 0xCF (RS 0x18=0xCF), renders sorted batch at +0x228, then restores device state. |
| 0x005662D0 | 365 | CSceneManager__render_custom_blend_pass | Renders 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. |
| 0x00566440 | 215 | CSceneManager__render_effect_layer1_pass | Renders 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. |
| 0x00566520 | 215 | CSceneManager__render_effect_layer2_pass | Renders 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. |
| 0x00566600 | 215 | CSceneManager__render_effect_layer3_pass | Renders 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. |
| 0x005666E0 | 463 | CSceneManager__render_ground_textures_pass | Renders 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. |
| 0x005668B0 | 846 | CSceneManager__render_ground_lightmap_pass | Renders 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. |
| 0x00566C00 | 348 | CSceneManager__render_depth_sorted_objects_pass | Renders 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. |
| 0x00566D60 | 278 | CSceneManager__render_ground_simple_pass | Simple 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. |
| 0x00566E80 | 390 | CSceneManager__render_ground_modulate_pass | Ground 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. |
| 0x00567010 | 356 | CSceneManager__render_dual_texture_pass | Renders 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. |
| 0x00567180 | 611 | CSceneManager__render_multitexture_blend_pass | Multi-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. |
| 0x005673F0 | 197 | CSceneManager__render_no_zwrite_pass | Renders 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. |
| 0x005674C0 | 336 | CSceneManager__render_no_fog_custom_blend_pass | Renders 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. |
| 0x00567610 | 2050 | CSceneManager__render_full_scene | Main 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. |
| 0x00567E20 | 70 | CSceneManager__set_fog_params | Sets 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). |
| 0x00567E80 | 106 | CSceneManager__query_backbuffer_format | Queries 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. |
| 0x00567FC0 | 102 | CSceneManager__save_screenshot | Saves 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. |
| 0x00568030 | 102 | CSceneManager__save_screenshot_as_bmp | Saves a screenshot as BMP format. Same as save_screenshot but passes format=1 (BMP) to save_surface_to_file instead of format=0. |
| 0x005680A0 | 559 | CSceneManager__save_surface_to_file | Saves 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. |
| 0x005682D0 | 139 | CSceneManager__save_logo_screenshot | Saves 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. |
| 0x00568360 | 16 | CSceneManager__set_ambient_color | Sets 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. |
| 0x00568370 | 238 | CSceneManager__set_light | Sets 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. |
| 0x00568470 | 2528 | CRenderPipeline__apply_texture_blend_mode | Large 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. |
| 0x00568E90 | 42 | CRenderPipeline__bind_texture_from_resource | Binds 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). |
| 0x00569310 | 36 | CRenderPipeline__free_vertex_and_index_buffers | Frees two heap-allocated buffers, the vertex data buffer at field 0 and the index buffer at field 2, and nullifies both pointers. |
| 0x00569470 | 15 | CD3DDevice__draw_indexed_primitive | Calls a virtual method at vtable offset +0x38 on the global D3D device object (DAT_01389638). This is IDirect3DDevice::DrawIndexedPrimitive or similar draw call. |
| 0x00569480 | 15 | CD3DDevice__draw_primitive | Calls a virtual method at vtable offset +0x34 on the global D3D device object (DAT_01389638). This is IDirect3DDevice::DrawPrimitive or similar draw call. |
| 0x00569490 | 15 | CD3DDevice__draw_primitive_up | Calls a virtual method at vtable offset +0x30 on the global D3D device object (DAT_01389638). This is IDirect3DDevice::DrawPrimitiveUP (user pointer, non-indexed). |
| 0x005699A0 | 9 | CRenderPipeline__clear_render_type | Sets the render type/state field to 0. Simple single-field reset on a render pipeline object. |
| 0x00569C90 | 76 | CRenderPipeline__release_d3d_resource_and_sprites | Releases 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. |
| 0x00569CF0 | 87 | CRenderPipeline__destroy_two_strings | Destroys 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. |
| 0x00569D50 | 68 | CRenderPipeline__destroy_single_string | Destroys 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. |
| 0x00569DA0 | 186 | CRenderPipeline__compare_render_effects | Compares 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. |
| 0x00569E60 | 40 | CRenderPipeline__compare_three_dwords | Compares 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. |
| 0x00569E90 | 124 | CRenderPipeline__create_bitmap_font | Allocates 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. |
| 0x00569F10 | 14 | CBitmapFont__get_line_height | Returns 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. |
| 0x00569F20 | 21 | CBitmapFont__get_char_width | Returns 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. |
| 0x00569F40 | 21 | CBitmapFont__get_text_width | Returns 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. |
| 0x00569F60 | 21 | CBitmapFont__set_color | Sets 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. |
| 0x00569F80 | 17 | CBitmapFont__draw_text | Draws 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. |
| 0x00569FA0 | 19 | CBitmapFont__begin_rendering | Calls 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. |
| 0x00569FC0 | 12 | CBitmapFont__end_rendering | Calls 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. |
| 0x00569FD0 | 12 | CBitmapFont__flush | Calls 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. |
| 0x00569FE0 | 12 | CBitmapFont__reset | Calls 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. |
| 0x00569FF0 | 167 | CRenderPipeline__init_render_data_by_type | Initializes 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. |
| 0x0056A230 | 15 | CBitmapFont__get_texture_count | Returns 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. |
| 0x0056AFE0 | 163 | CD3DDeviceDX7__ctor | Constructor for CD3DDeviceDX7. Sets vtable pointers, zeroes fields, allocates CD3DDeviceCaps (0x24c bytes) and stores it globally at DAT_01387340. Size 0x14. |
| 0x0056B2E0 | 183 | CD3DDeviceDX7__dtor | Destructor 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. |
| 0x0056B4A0 | 36 | CD3DSurface__scalar_deleting_dtor | Scalar deleting destructor for CD3DSurface. Sets vtable to PTR_stub_0056c4e0_010dd4ac. Frees 0x20 bytes if bit 0 of param_2 is set. |
| 0x0056B500 | 204 | CD3DDeviceDX7__scalar_deleting_dtor | Scalar deleting destructor for CD3DDeviceDX7. Calls the full destructor chain (frees DeviceCaps, releases COM ptrs, releases render surfaces), then frees 0x14 bytes if requested. |
| 0x0056B5F0 | 135 | CD3DDeviceDX7__create_rendertarget_surface | Creates 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. |
| 0x0056B680 | 141 | CD3DDeviceDX7__create_texture | Creates 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. |
| 0x0056B710 | 173 | CD3DDeviceDX7__create_texture_or_rendertarget | Creates 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. |
| 0x0056B7C0 | 168 | CD3DDeviceDX7__release_render_surface | Releases 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. |
| 0x0056B870 | 12 | CD3DDeviceDX7__release_com_object | Thin wrapper that calls safe_release_com_object to release a COM interface held by the DX7 device. |
| 0x0056BBA0 | 207 | CD3DDeviceDX7__get_or_create_backbuffer_texture | Gets 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. |
| 0x0056BC80 | 325 | CD3DDeviceDX7__get_or_create_depth_surface | Gets 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. |
| 0x0056C4E0 | 11 | CD3DSurface__release_internal | Releases the internal surface by calling the destructor via vtable at field[3] with param=0. |
| 0x0056CEE0 | 127 | CD3D9Device__create_render_target | Allocates a 0x154-byte render target object and initializes it via stub_00572500 using the source parameter. Returns the new object pointer through param_1. |
| 0x0056CF60 | 158 | CD3D9Device__ctor | CD3D9Device constructor. Sets up vtable chain, zeroes vector members at offsets 2-4, allocates a 0x690-byte CRenderState object and stores at offset 1. |
| 0x0056D000 | 72 | CD3D9Device__release_inner_device | Releases the inner COM device pointer at offset 0. Calls Release (vtable+8) on the COM interface if non-null. SEH-protected. |
| 0x0056D050 | 61 | CD3D9Device__release_device | Releases the D3D device COM pointer at offset 0. Calls vtable+8 (Release) if non-null. SEH-protected. |
| 0x0056D180 | 183 | CD3D9Device__dtor | CD3D9Device 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. |
| 0x0056D320 | 204 | CD3D9Device__scalar_deleting_dtor | CD3D9Device 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. |
| 0x0056D3F0 | 130 | CD3D9Device__create_scene_manager | Creates 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. |
| 0x0056D480 | 135 | CD3D9Device__create_small_render_target | Creates a small render target (0x14 bytes). Allocates with nothrow new, initializes via stub_00570720 with the device's render state and two parameters. |
| 0x0056D510 | 147 | CD3D9Device__create_render_target_ex | Creates an extended render target (0x154 bytes) with full parameter set (6 params). Allocates with nothrow new, initializes via stub_005725c0. |
| 0x0056D5B0 | 188 | CD3D9Device__create_render_target_auto | Creates a render target, automatically choosing small (0x14) or extended (0x154) based on whether dimensions exceed the device's stored resolution at offsets 0x5a8/0x5ac. |
| 0x0056D670 | 168 | CD3D9Device__shutdown | Shuts 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. |
| 0x0056D770 | 845 | CD3D9Device__enumerate_display_modes | Creates 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. |
| 0x0056DAC0 | 207 | CD3D9Device__get_or_create_render_target | Lazy-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. |
| 0x0056DBA0 | 328 | CD3D9Device__get_or_create_swap_chain | Gets 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. |
| 0x0056DCF0 | 1362 | CD3D9Device__enumerate_resolutions | Creates 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. |
| 0x0056E270 | 353 | CD3D9Device__init_device | Initializes 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. |
| 0x0056E400 | 12 | CD3D9Device__present_wrapper | Thin wrapper that calls CD3D9Device__present to present the rendered frame to screen. |
| 0x00570720 | 161 | CD3DSurface__ctor_create | Constructor 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. |
| 0x005707D0 | 174 | CD3DSurface__ctor_from_resource | Constructor 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. |
| 0x00570880 | 104 | CD3DSurface__release_00570880 | Releases 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). |
| 0x005708F0 | 125 | CD3DSurface__scalar_deleting_dtor_005708f0 | Scalar 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). |
| 0x005709F0 | 36 | CD3DSurface__update_subregion | Updates 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. |
| 0x00570A20 | 124 | CD3DSurface__resize_00570a20 | Resizes 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. |
| 0x00570AA0 | 252 | CD3DSurface__blit_from_buffer | Blits 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. |
| 0x00570BA0 | 139 | CD3DSurface__blit_from_buffer_no_lock | Blits 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. |
| 0x00570C30 | 35 | CD3DSurface__set_filter_mode | Sets 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. |
| 0x00570CC0 | 137 | CD3DSurface__get_surface_info | Retrieves 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. |
| 0x00570D50 | 23 | CD3DSurface__unlock | Unlocks the D3D surface. If the resource at [+0x10] is non-null, calls its Unlock method (vfunc 0x40) with param_2 (the lock token/level). |
| 0x00570DC0 | 593 | CD3DSurface__write_pixels_with_colorkey | Writes 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. |
| 0x00571200 | 67 | CTextureCache__delete_head_node | Deletes the head node (offset +4) of the texture cache tree if it exists. Frees 0x18 bytes per node. |
| 0x00571250 | 111 | CTextureCache__destroy_all_nodes | Destroys 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. |
| 0x005712D0 | 78 | CTextureCache__delete_head_node_alt | Deletes the head node (offset +4) if it exists. Same as CTextureCache__delete_head_node but with different SEH setup. |
| 0x00571320 | 78 | CTextureCache__delete_head_node_alt2 | Deletes the head node (offset +4) if it exists. Variant with different SEH handler address. |
| 0x00571370 | 65 | CTextureCache__dtor_wrapper | Destructor wrapper that calls CTextureCache__destroy_all_nodes to clean up the texture cache tree. |
| 0x005713C0 | 192 | CTextureCache__release_all_and_clear | Releases 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. |
| 0x005714E0 | 253 | CTextureCache__insert_entry | Inserts 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. |
| 0x005715E0 | 115 | CTextureCache__create_text_surface | Creates 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. |
| 0x00571660 | 16 | CTextureCache__get_default_text_width | Wrapper that initializes the text render singleton and returns the default text width from CBitmapFont. |
| 0x00571670 | 118 | CTextureCache__release_all_textures_and_clear | Iterates 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. |
| 0x005716F0 | 101 | CTextureCache__remove_entry_by_resource | Removes 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. |
| 0x00571760 | 45 | CTextureCache__find_entry | Looks 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. |
| 0x00571790 | 12 | CTextureCache__get_render_device_caps | Initializes text render singleton and returns the D3D render system device caps via CRenderSystem vtable offset 0x30. |
| 0x005717A0 | 391 | CTextureCache__find_or_load_texture | Finds 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. |
| 0x00571930 | 475 | CTextureCache__load_texture_from_file | Loads 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. |
| 0x00571B10 | 95 | CTextureCache__resize_and_set_surface | Resizes 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. |
| 0x00571B70 | 211 | CTextureCache__reload_all_textures | Iterates 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. |
| 0x00571C50 | 141 | CTextureCache__evict_expired_entries | Evicts 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. |
| 0x00571CE0 | 704 | CTextureCache__erase_node | Erases 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. |
| 0x00572270 | 99 | CTextureCache__lower_bound | Performs 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. |
| 0x00572500 | 177 | CD3DSurface__ctor | Constructor 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. |
| 0x005725C0 | 136 | CD3DSurface__ctor_with_params | Extended 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. |
| 0x00572650 | 252 | CD3DSurface__ctor_from_d3d_surface | Constructor 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). |
| 0x00572770 | 72 | CD3DSurface__release_d3d_surface | Releases the D3D surface COM object at field[0] (IDirect3DSurface9) by calling its Release method (vtable[8]). Uses SEH for exception safety. |
| 0x005727C0 | 61 | CD3DSurface__release_d3d_surface_simple | Releases the D3D surface COM object at field[0] by calling Release (vtable[8]). Simpler variant without passing extra params to the Release call. |
| 0x00572810 | 136 | CD3DSurface__dtor | Destructor 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. |
| 0x005728A0 | 160 | CD3DSurface__scalar_deleting_dtor_005728a0 | Scalar 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. |
| 0x00572940 | 147 | CD3DSurface__load_surface_from_memory | Loads 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. |
| 0x005729E0 | 215 | CD3DSurface__copy_surface_region | Copies 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. |
| 0x00572AC0 | 594 | CD3DSurface__create_d3d_texture | Creates 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. |
| 0x00572D50 | 61 | CD3DSurface__generate_mipmaps | Generates 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. |
| 0x00572D90 | 38 | CD3DSurface__lock_surface_rect | Locks 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. |
| 0x00572DC0 | 405 | CD3DSurface__clear_surface_with_color | Clears 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. |
| 0x00572F70 | 218 | CD3DSurface__clear_all_mip_levels | Clears 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. |
| 0x00573050 | 121 | CD3DSurface__get_surface_info_00573050 | Fills 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). |
| 0x00573110 | 86 | CD3DSurface__unlock_and_generate_mipmaps | Unlocks 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. |
| 0x00575A70 | 34 | CObjectPool__copy_range | Copies a range of memory from param_1 to param_3, with length (param_2 - param_1). Returns pointer past the end of the destination. |
| 0x00575AA0 | 31 | CObjectPool__fill_range | CObjectPool: fill range |
| 0x00575AC0 | 208 | CObjectPool__ctor_size_0xB0 | CObjectPool constructor for element size 0xB0. Sets vtable to allocate_size_0xB0, initializes linked list sentinel, free list, critical section, and stores pool capacity param. |
| 0x00575B90 | 208 | CObjectPool__ctor_size_0xC8 | CObjectPool constructor for element size 0xC8. Sets vtable to allocate_size_0xC8, initializes linked list sentinel, free list, critical section, and stores pool capacity param. |
| 0x00575C60 | 208 | CObjectPool__ctor_size_0x100 | CObjectPool constructor for element size 0x100. Sets vtable to allocate_size_0x100, initializes linked list sentinel, free list, critical section, and stores pool capacity param. |
| 0x00575D30 | 208 | CObjectPool__ctor_size_0xC8b | CObjectPool 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. |
| 0x00575E00 | 208 | CObjectPool__ctor_size_0xC8c | CObjectPool 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. |
| 0x00575ED0 | 208 | CObjectPool__ctor_size_0xD0 | CObjectPool constructor for element size 0xD0. Sets vtable to allocate_size_0xD0, initializes linked list sentinel, free list, critical section, and stores pool capacity param. |
| 0x00575FA0 | 208 | CObjectPool__ctor_size_0xE0 | CObjectPool constructor for element size 0xE0. Sets vtable to allocate_size_0xE0, initializes linked list sentinel, free list, critical section, and stores pool capacity param. |
| 0x00576070 | 208 | CObjectPool__ctor_size_0xC8d | CObjectPool 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. |
| 0x00576140 | 208 | CObjectPool__ctor_size_0xD0b | CObjectPool 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. |
| 0x00576210 | 208 | CObjectPool__ctor_size_0x120 | CObjectPool constructor for element size 0x120. Sets vtable to allocate_size_0x120, initializes linked list sentinel, free list, critical section, and stores pool capacity param. |
| 0x005762E0 | 208 | CObjectPool__ctor_size_0xD0c | CObjectPool 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. |
| 0x005763B0 | 208 | CObjectPool__ctor_size_0xE8 | CObjectPool constructor for element size 0xE8. Sets vtable to allocate_size_0xE8, initializes linked list sentinel, free list, critical section, and stores pool capacity param. |
| 0x00576480 | 208 | CObjectPool__ctor_size_0x118 | CObjectPool constructor for element size 0x118. Sets vtable to allocate_size_0x118, initializes linked list sentinel, free list, critical section, and stores pool capacity param. |
| 0x00576550 | 208 | CObjectPool__ctor_size_0xC8e | CObjectPool 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. |
| 0x00576620 | 62 | CObjectPool__init_linked_list | Initializes a simple linked list structure with 5 zero fields and a sentinel node (8 bytes). Used as internal storage for CObjectPool. |
| 0x005766D0 | 191 | CObjectPool__dtor_size_0xB0 | CObjectPool 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. |
| 0x00576790 | 191 | CObjectPool__dtor_size_0xC8 | CObjectPool 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. |
| 0x00576850 | 191 | CObjectPool__dtor_size_0x100 | CObjectPool 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. |
| 0x00576910 | 191 | CObjectPool__dtor_size_0xC8b | CObjectPool 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. |
| 0x005769D0 | 191 | CObjectPool__dtor_size_0xC8c | CObjectPool 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. |
| 0x00576A90 | 191 | CObjectPool__dtor_size_0xD0 | CObjectPool 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. |
| 0x00576B50 | 191 | CObjectPool__dtor_size_0xE0 | CObjectPool 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. |
| 0x00576C10 | 191 | CObjectPool__dtor_size_0xC8d | CObjectPool 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. |
| 0x00576CD0 | 191 | CObjectPool__dtor_size_0xD0b | CObjectPool 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. |
| 0x00576D90 | 191 | CObjectPool__dtor_size_0x120 | CObjectPool 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. |
| 0x00576E50 | 191 | CObjectPool__dtor_size_0xD0c | CObjectPool 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. |
| 0x00576F10 | 191 | CObjectPool__dtor_size_0xE8 | CObjectPool 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. |
| 0x00576FD0 | 191 | CObjectPool__dtor_size_0x118 | CObjectPool 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. |
| 0x00577090 | 191 | CObjectPool__dtor_size_0xC8e | CObjectPool 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. |
| 0x00577150 | 67 | CObjectPool__delete_node_0xC | Deletes the node at this+4 if non-null, freeing 0xC bytes. Used as a cleanup helper for linked list nodes. |
| 0x005771A0 | 67 | CObjectPool__delete_node_0x24 | Deletes the node at this+4 if non-null, freeing 0x24 bytes. Used as a cleanup helper for hash map nodes with string keys. |
| 0x005771F0 | 78 | CObjectPool__delete_node_0xC_variant | Deletes the node at this+4 if non-null, freeing 0xC bytes. Variant with different SEH layout than delete_node_0xC. |
| 0x00577240 | 113 | CObjectPool__delete_string_node_0x24 | Destroys 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. |
| 0x00577390 | 103 | CObjectPool__destroy_linked_list | Destroys all nodes in a linked list. Walks the list from the first node, frees each 0xC-byte node, then frees the sentinel node itself. |
| 0x005775F0 | 212 | CObjectPool__scalar_deleting_dtor_size_0xB0 | CObjectPool 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. |
| 0x005776D0 | 212 | CObjectPool__scalar_deleting_dtor_size_0xC8 | CObjectPool 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. |
| 0x005777B0 | 212 | CObjectPool__scalar_deleting_dtor_size_0x100 | CObjectPool 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. |
| 0x00577890 | 212 | CObjectPool__scalar_deleting_dtor_size_0xC8b | CObjectPool 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. |
| 0x00577970 | 212 | CObjectPool__scalar_deleting_dtor_size_0xC8c | CObjectPool 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. |
| 0x00577A50 | 212 | CObjectPool__scalar_deleting_dtor_size_0xD0 | CObjectPool 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. |
| 0x00577B30 | 212 | CObjectPool__scalar_deleting_dtor_size_0xE0 | CObjectPool 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. |
| 0x00577C10 | 212 | CObjectPool__scalar_deleting_dtor_size_0xC8d | CObjectPool 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. |
| 0x00577CF0 | 212 | CObjectPool__scalar_deleting_dtor_size_0xD0b | CObjectPool 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. |
| 0x005782F0 | 221 | CObjectPool__allocate_size_0xB0_005782f0 | Object pool allocator for 0xB0-byte objects via 0x5b9e50 |
| 0x005783D0 | 221 | CObjectPool__allocate_size_0xC8_005783d0 | Object pool allocator for 0xC8-byte objects via 0x5bdaa0 |
| 0x005784B0 | 221 | CObjectPool__allocate_size_0x100_005784b0 | Object pool allocator for 0x100-byte objects via 0x5cd7b0 |
| 0x00578590 | 221 | CObjectPool__allocate_size_0xC8b_00578590 | Object pool allocator for 0xC8-byte objects via 0x5e4a50 |
| 0x00578670 | 221 | CObjectPool__allocate_size_0xC8c_00578670 | Object pool allocator for 0xC8-byte objects via 0x5e7c10 |
| 0x00578750 | 221 | CObjectPool__allocate_size_0xD0_00578750 | Object pool allocator for 0xD0-byte objects via 0x5e9c00 |
| 0x00578830 | 221 | CObjectPool__allocate_size_0xE0_00578830 | Object pool allocator for 0xE0-byte objects via 0x5ebf50 |
| 0x00578910 | 221 | CObjectPool__allocate_size_0xC8d_00578910 | Object pool allocator for 0xC8-byte objects via 0x5cf1b0 |
| 0x005789F0 | 221 | CObjectPool__allocate_size_0xD0b_005789f0 | Object pool allocator for 0xD0-byte objects via 0x5d0470 |
| 0x00578AD0 | 221 | CObjectPool__allocate_size_0x120_00578ad0 | Object pool allocator for 0x120-byte objects via 0x5d1640 |
| 0x00578BB0 | 221 | CObjectPool__allocate_size_0xD0c_00578bb0 | Object pool allocator for 0xD0-byte objects via 0x607b10 |
| 0x00578C90 | 221 | CObjectPool__allocate_size_0xE8_00578c90 | Object pool allocator for 0xE8-byte objects via 0x608d60 |
| 0x00578D70 | 221 | CObjectPool__allocate_size_0x118_00578d70 | Object pool allocator for 0x118-byte objects via 0x5d3600 |
| 0x00578E50 | 221 | CObjectPool__allocate_size_0xC8e_00578e50 | Object pool allocator for 0xC8-byte objects via 0x5d5d70 |
| 0x0057A6F0 | 138 | CObjectPool__return_to_pool_0057a6f0 | Returns object to pool; locks mutex, searches active list, moves to free list |
| 0x0057A780 | 138 | CObjectPool__return_to_pool_0057a780 | Returns object to pool; locks mutex, searches active list, moves to free list |
| 0x0057A810 | 138 | CObjectPool__return_to_pool_0057a810 | Returns object to pool; locks mutex, searches active list, moves to free list |
| 0x0057A8A0 | 138 | CObjectPool__return_to_pool_0057a8a0 | Returns object to pool; locks mutex, searches active list, moves to free list |
| 0x0057A930 | 138 | CObjectPool__return_to_pool_0057a930 | Returns object to pool; locks mutex, searches active list, moves to free list |
| 0x0057A9C0 | 138 | CObjectPool__return_to_pool_0057a9c0 | Returns object to pool; locks mutex, searches active list, moves to free list |
| 0x0057AA50 | 138 | CObjectPool__return_to_pool_0057aa50 | Returns object to pool; locks mutex, searches active list, moves to free list |
| 0x0057AAE0 | 138 | CObjectPool__return_to_pool_0057aae0 | Returns object to pool; locks mutex, searches active list, moves to free list |
| 0x0057AB70 | 138 | CObjectPool__return_to_pool_0057ab70 | Returns object to pool; locks mutex, searches active list, moves to free list |
| 0x0057AC00 | 138 | CObjectPool__return_to_pool_0057ac00 | Returns object to pool; locks mutex, searches active list, moves to free list |
| 0x0057AC90 | 138 | CObjectPool__return_to_pool_0057ac90 | Returns object to pool; locks mutex, searches active list, moves to free list |
| 0x0057AD20 | 138 | CObjectPool__return_to_pool_0057ad20 | Returns object to pool; locks mutex, searches active list, moves to free list |
| 0x0057ADB0 | 138 | CObjectPool__return_to_pool_0057adb0 | Returns object to pool; locks mutex, searches active list, moves to free list |
| 0x0057AE40 | 138 | CObjectPool__return_to_pool_0057ae40 | Returns object to pool; locks mutex, searches active list, moves to free list |
| 0x006F3680 | 206 | math_quadratic_bezier_3d | Evaluates quadratic Bezier curve at parameter t for 3D point (x,y,z) |
| 0x007AB1C0 | 206 | math_quadratic_bezier_3d_interp | Computes 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. |
| 0x007E0FC0 | 84 | CColorPicker__GetPixelRGB | Gets RGB color values at a specific pixel position from the color picker sprite. Extracts R, G, B channels from the packed pixel value. |
| 0x0085E370 | 49 | draw_editbox_background_sprite | Draws the background sprite for edit boxes. Loads sprite from DAT_01133af0 and renders at (0,0) with full opacity. |
| 0x0090A2E0 | 2082 | CTextRenderer__layout_multiline_text | Lays 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. |
| 0x0090AB10 | 588 | CTextRenderer__draw_text_with_wrapping | Draws 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. |
| 0x0090AD60 | 201 | CTextRenderer__draw_multiline_segments | Renders 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. |
| 0x00917D70 | 1052 | render_line_with_trail_effect | Renders 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. |
| 0x00918380 | 1150 | render_dashed_line_with_arrowhead | Renders 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. |
| 0x0091B010 | 132 | render_selection_highlight_overlay | Renders 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. |
| 0x0091B0A0 | 205 | render_zone_overlay_rects | Renders 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. |
| 0x0091B600 | 156 | render_minimap_dots | Renders 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). |
| 0x0091B6A0 | 165 | render_player_position_dot | Renders 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. |
| 0x0093EF00 | 747 | render_minimap_npc_labels | Renders 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. |
| 0x009409E0 | 416 | render_map_label_with_background | Renders 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. |
| 0x00941060 | 189 | render_map_overlay_text_with_shadow | Renders 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. |
| 0x00966600 | 48 | CColorEntry__set_rgba | Sets 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). |
| 0x0099A1F0 | 269 | CColorPicker__create_scroll_list_0099a1f0 | Creates 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. |
| 0x0099A300 | 233 | CColorPicker__render_color_list_0099a300 | Renders 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. |
| 0x0099A3F0 | 55 | CColorPicker__draw_border_0099a3f0 | Draws a two-layer border around CColorPicker. Outer border at full size, inner border inset by 1 pixel on each side with different colors. |
| 0x0099A430 | 418 | CColorPicker__handle_command_0099a430 | CColorPicker command handler. For command 0x1D, splits input by delimiter 0x23, populates scroll list items. Otherwise delegates to UIGridView__handle_scroll_command. |
| 0x00AD5480 | 151 | render_fps_counter_overlay | Renders 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). |
| 0x00AD5520 | 1298 | render_animated_cursor | Renders 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. |
| 0x00AD5A70 | 1315 | render_sprite_action_frame | Renders 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. |
| 0x00AD5FA0 | 884 | render_textured_quad_2d | Renders 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. |
| 0x00AD6740 | 93 | render_screen_fade_in_effect | Renders 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. |
| 0x00ADB0D0 | 1154 | CCamera__compute_frustum_planes | Computes 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. |
| 0x00ADB560 | 451 | CCamera__update_view_matrix | Updates 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. |
| 0x00ADB730 | 183 | CCamera__test_aabb_against_frustum | Tests 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. |
| 0x00ADB7F0 | 274 | CCamera__test_obb_against_frustum | Tests 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. |
| 0x00ADB910 | 297 | CCamera__traverse_scene_tree | Recursively 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. |
| 0x00ADBAC0 | 145 | CCamera__get_look_direction | Computes 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. |
| 0x00ADBB60 | 365 | CCamera__compute_lookat_at_yaw | Computes 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. |
| 0x00ADBCD0 | 656 | CCamera__update_smooth_and_fog | Updates 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. |
| 0x00ADBF60 | 490 | CCamera__update_frame | Camera 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. |
| 0x00ADC7A0 | 795 | CCamera__apply_shake_effect | Applies 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. |
| 0x00ADCAC0 | 98 | CCamera__start_shake | Starts 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. |
| 0x00ADCB30 | 37 | CCamera__set_shake_amplitudes | Sets the camera shake amplitudes: position X (offset 0x04), position Z (offset 0x08), zoom (offset 0x0C). |
| 0x00CD1450 | 570 | render_ground_marker_quad | Renders 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. |
| 0x00CD2960 | 167 | render_skill_loading_animation | Renders 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. |
| 0x00CECB90 | 615 | CCamera__initialize_view_parameters | Initializes 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. |
| 0x0107ED70 | 66 | CRenderPipeline__seh_destroy_linked_list_and_vector | SEH-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. |
No function here matches that. Search all 47,061 functions instead.