├── .gitattributes ├── .gitignore ├── .gitmodules ├── LICENSE ├── README.md ├── dependencies ├── SDL2-2.0.9 │ ├── BUGS.txt │ ├── COPYING.txt │ ├── README-SDL.txt │ ├── README.txt │ ├── WhatsNew.txt │ ├── docs │ │ ├── README-android.md │ │ ├── README-cmake.md │ │ ├── README-directfb.md │ │ ├── README-dynapi.md │ │ ├── README-emscripten.md │ │ ├── README-gesture.md │ │ ├── README-hg.md │ │ ├── README-ios.md │ │ ├── README-linux.md │ │ ├── README-macosx.md │ │ ├── README-nacl.md │ │ ├── README-pandora.md │ │ ├── README-platforms.md │ │ ├── README-porting.md │ │ ├── README-psp.md │ │ ├── README-raspberrypi.md │ │ ├── README-touch.md │ │ ├── README-wince.md │ │ ├── README-windows.md │ │ ├── README-winrt.md │ │ ├── README.md │ │ └── doxyfile │ ├── include │ │ ├── SDL.h │ │ ├── SDL_assert.h │ │ ├── SDL_atomic.h │ │ ├── SDL_audio.h │ │ ├── SDL_bits.h │ │ ├── SDL_blendmode.h │ │ ├── SDL_clipboard.h │ │ ├── SDL_config.h │ │ ├── SDL_config.h.cmake │ │ ├── SDL_config.h.in │ │ ├── SDL_config_android.h │ │ ├── SDL_config_iphoneos.h │ │ ├── SDL_config_macosx.h │ │ ├── SDL_config_macosx.h.orig │ │ ├── SDL_config_minimal.h │ │ ├── SDL_config_pandora.h │ │ ├── SDL_config_psp.h │ │ ├── SDL_config_windows.h │ │ ├── SDL_config_winrt.h │ │ ├── SDL_config_wiz.h │ │ ├── SDL_copying.h │ │ ├── SDL_cpuinfo.h │ │ ├── SDL_egl.h │ │ ├── SDL_endian.h │ │ ├── SDL_error.h │ │ ├── SDL_events.h │ │ ├── SDL_filesystem.h │ │ ├── SDL_gamecontroller.h │ │ ├── SDL_gesture.h │ │ ├── SDL_haptic.h │ │ ├── SDL_hints.h │ │ ├── SDL_joystick.h │ │ ├── SDL_keyboard.h │ │ ├── SDL_keycode.h │ │ ├── SDL_loadso.h │ │ ├── SDL_log.h │ │ ├── SDL_main.h │ │ ├── SDL_messagebox.h │ │ ├── SDL_mouse.h │ │ ├── SDL_mutex.h │ │ ├── SDL_name.h │ │ ├── SDL_opengl.h │ │ ├── SDL_opengl_glext.h │ │ ├── SDL_opengles.h │ │ ├── SDL_opengles2.h │ │ ├── SDL_opengles2_gl2.h │ │ ├── SDL_opengles2_gl2ext.h │ │ ├── SDL_opengles2_gl2platform.h │ │ ├── SDL_opengles2_khrplatform.h │ │ ├── SDL_pixels.h │ │ ├── SDL_platform.h │ │ ├── SDL_power.h │ │ ├── SDL_quit.h │ │ ├── SDL_rect.h │ │ ├── SDL_render.h │ │ ├── SDL_revision.h │ │ ├── SDL_rwops.h │ │ ├── SDL_scancode.h │ │ ├── SDL_sensor.h │ │ ├── SDL_shape.h │ │ ├── SDL_stdinc.h │ │ ├── SDL_surface.h │ │ ├── SDL_system.h │ │ ├── SDL_syswm.h │ │ ├── SDL_test.h │ │ ├── SDL_test_assert.h │ │ ├── SDL_test_common.h │ │ ├── SDL_test_compare.h │ │ ├── SDL_test_crc32.h │ │ ├── SDL_test_font.h │ │ ├── SDL_test_fuzzer.h │ │ ├── SDL_test_harness.h │ │ ├── SDL_test_images.h │ │ ├── SDL_test_log.h │ │ ├── SDL_test_md5.h │ │ ├── SDL_test_memory.h │ │ ├── SDL_test_random.h │ │ ├── SDL_thread.h │ │ ├── SDL_timer.h │ │ ├── SDL_touch.h │ │ ├── SDL_types.h │ │ ├── SDL_version.h │ │ ├── SDL_video.h │ │ ├── SDL_vulkan.h │ │ ├── begin_code.h │ │ └── close_code.h │ └── lib │ │ ├── x64 │ │ ├── SDL2.dll │ │ ├── SDL2.lib │ │ ├── SDL2main.lib │ │ └── SDL2test.lib │ │ └── x86 │ │ ├── SDL2.dll │ │ ├── SDL2.lib │ │ ├── SDL2main.lib │ │ └── SDL2test.lib └── directx_2010 │ ├── Documentation │ └── License Agreements │ │ ├── DirectX End User EULA.txt │ │ ├── DirectX SDK EULA.rtf │ │ ├── DirectX SDK EULA.txt │ │ ├── Roland-license.txt │ │ ├── directx redist.txt │ │ ├── libjpg-readme.txt │ │ └── libpng-license.txt │ ├── Include │ ├── D2D1.h │ ├── D2D1Helper.h │ ├── D2DBaseTypes.h │ ├── D2Derr.h │ ├── D3D10.h │ ├── D3D10_1.h │ ├── D3D10_1shader.h │ ├── D3D10effect.h │ ├── D3D10shader.h │ ├── D3D11.h │ ├── D3D11SDKLayers.h │ ├── D3D11Shader.h │ ├── D3DCSX.h │ ├── D3DX10.h │ ├── D3DX10core.h │ ├── D3DX10math.h │ ├── D3DX10math.inl │ ├── D3DX10mesh.h │ ├── D3DX10tex.h │ ├── D3DX11.h │ ├── D3DX11async.h │ ├── D3DX11core.h │ ├── D3DX11tex.h │ ├── D3DX_DXGIFormatConvert.inl │ ├── D3Dcommon.h │ ├── D3Dcompiler.h │ ├── DWrite.h │ ├── DXGI.h │ ├── DXGIFormat.h │ ├── DXGIType.h │ ├── Dcommon.h │ ├── DxErr.h │ ├── PIXPlugin.h │ ├── X3DAudio.h │ ├── XAPO.h │ ├── XAPOBase.h │ ├── XAPOFX.h │ ├── XAudio2.h │ ├── XAudio2fx.h │ ├── XDSP.h │ ├── XInput.h │ ├── audiodefs.h │ ├── comdecl.h │ ├── d3d10misc.h │ ├── d3d10sdklayers.h │ ├── d3d9.h │ ├── d3d9caps.h │ ├── d3d9types.h │ ├── d3dx10async.h │ ├── d3dx9.h │ ├── d3dx9anim.h │ ├── d3dx9core.h │ ├── d3dx9effect.h │ ├── d3dx9math.h │ ├── d3dx9math.inl │ ├── d3dx9mesh.h │ ├── d3dx9shader.h │ ├── d3dx9shape.h │ ├── d3dx9tex.h │ ├── d3dx9xof.h │ ├── dinput.h │ ├── dinputd.h │ ├── dsconf.h │ ├── dsetup.h │ ├── dsound.h │ ├── dxdiag.h │ ├── dxfile.h │ ├── dxsdkver.h │ ├── gameux.h │ ├── rmxfguid.h │ ├── rmxftmpl.h │ ├── rpcsal.h │ ├── xact3.h │ ├── xact3d3.h │ ├── xact3wb.h │ ├── xma2defs.h │ ├── xnamath.h │ ├── xnamathconvert.inl │ ├── xnamathmatrix.inl │ ├── xnamathmisc.inl │ └── xnamathvector.inl │ └── Lib │ ├── x64 │ ├── D3DCSX.lib │ ├── D3DCSXd.lib │ ├── DxErr.lib │ ├── X3DAudio.lib │ ├── XAPOFX.lib │ ├── XInput.lib │ ├── d2d1.lib │ ├── d3d10.lib │ ├── d3d10_1.lib │ ├── d3d11.lib │ ├── d3d9.lib │ ├── d3dcompiler.lib │ ├── d3dx10.lib │ ├── d3dx10d.lib │ ├── d3dx11.lib │ ├── d3dx11d.lib │ ├── d3dx9.lib │ ├── d3dx9d.lib │ ├── d3dxof.lib │ ├── dinput8.lib │ ├── dsound.lib │ ├── dwrite.lib │ ├── dxgi.lib │ ├── dxguid.lib │ ├── xapobase.lib │ └── xapobased.lib │ └── x86 │ ├── D3DCSX.lib │ ├── D3DCSXd.lib │ ├── DxErr.lib │ ├── X3DAudio.lib │ ├── XAPOFX.lib │ ├── XInput.lib │ ├── d2d1.lib │ ├── d3d10.lib │ ├── d3d10_1.lib │ ├── d3d11.lib │ ├── d3d9.lib │ ├── d3dcompiler.lib │ ├── d3dx10.lib │ ├── d3dx10d.lib │ ├── d3dx11.lib │ ├── d3dx11d.lib │ ├── d3dx9.lib │ ├── d3dx9d.lib │ ├── d3dxof.lib │ ├── dinput8.lib │ ├── dsetup.lib │ ├── dsound.lib │ ├── dwrite.lib │ ├── dxgi.lib │ ├── dxguid.lib │ ├── xapobase.lib │ └── xapobased.lib ├── deploy ├── INSTRUCTIONS.TXT ├── d3d8.dll ├── enbconvertor.ini └── twinject.toml ├── desc ├── architecture.png ├── reversing_technical.md ├── src │ ├── architecture.xml │ └── vector_dodging.ai ├── twinhook_technical.md └── twinject_technical.md ├── docs └── html │ ├── _i_d3_d9___wrapper_8cpp.html │ ├── _i_d3_d9___wrapper_8h.html │ ├── _i_d3_d9___wrapper_8h_source.html │ ├── _i_d3_d9_device___wrapper_8cpp.html │ ├── _i_d3_d9_device___wrapper_8h.html │ ├── _i_d3_d9_device___wrapper_8h_source.html │ ├── _i_d_i8_a___wrapper_8cpp.html │ ├── _i_d_i8_a___wrapper_8h.html │ ├── _i_d_i8_a___wrapper_8h.js │ ├── _i_d_i8_a___wrapper_8h_source.html │ ├── _i_d_i8_a_device___wrapper_8cpp.html │ ├── _i_d_i8_a_device___wrapper_8h.html │ ├── _i_d_i8_a_device___wrapper_8h_source.html │ ├── annotated.html │ ├── annotated_dup.js │ ├── bc_s.png │ ├── bdwn.png │ ├── cdraw_8cpp.html │ ├── cdraw_8cpp.js │ ├── cdraw_8h.html │ ├── cdraw_8h.js │ ├── cdraw_8h_source.html │ ├── class_direct3_d9_wrapper-members.html │ ├── class_direct3_d9_wrapper.html │ ├── class_direct3_d9_wrapper.js │ ├── class_direct3_d9_wrapper.png │ ├── class_direct3_d_device9_wrapper-members.html │ ├── class_direct3_d_device9_wrapper.html │ ├── class_direct3_d_device9_wrapper.js │ ├── class_direct3_d_device9_wrapper.png │ ├── class_direct_input8_wrapper-members.html │ ├── class_direct_input8_wrapper.html │ ├── class_direct_input8_wrapper.js │ ├── class_direct_input8_wrapper.png │ ├── class_direct_input_device8_wrapper-members.html │ ├── class_direct_input_device8_wrapper.html │ ├── class_direct_input_device8_wrapper.js │ ├── class_direct_input_device8_wrapper.png │ ├── classes.html │ ├── classkeypress__detect-members.html │ ├── classkeypress__detect.html │ ├── classkeypress__detect.js │ ├── classth07__bullet__proc__hook-members.html │ ├── classth07__bullet__proc__hook.html │ ├── classth07__bullet__proc__hook.js │ ├── classth07__bullet__proc__hook.png │ ├── classth07__player-members.html │ ├── classth07__player.html │ ├── classth07__player.js │ ├── classth07__player.png │ ├── classth08__bullet__proc__hook-members.html │ ├── classth08__bullet__proc__hook.html │ ├── classth08__bullet__proc__hook.js │ ├── classth08__bullet__proc__hook.png │ ├── classth08__patch__autobomb-members.html │ ├── classth08__patch__autobomb.html │ ├── classth08__patch__autobomb.js │ ├── classth08__patch__autobomb.png │ ├── classth08__player-members.html │ ├── classth08__player.html │ ├── classth08__player.js │ ├── classth08__player.png │ ├── classth10__bullet__proc__hook-members.html │ ├── classth10__bullet__proc__hook.html │ ├── classth10__bullet__proc__hook.js │ ├── classth10__bullet__proc__hook.png │ ├── classth10__player-members.html │ ├── classth10__player.html │ ├── classth10__player.js │ ├── classth10__player.png │ ├── classth15__bullet__proc__hook-members.html │ ├── classth15__bullet__proc__hook.html │ ├── classth15__bullet__proc__hook.js │ ├── classth15__bullet__proc__hook.png │ ├── classth15__patch__autobomb-members.html │ ├── classth15__patch__autobomb.html │ ├── classth15__patch__autobomb.js │ ├── classth15__patch__autobomb.png │ ├── classth15__player-members.html │ ├── classth15__player.html │ ├── classth15__player.js │ ├── classth15__player.png │ ├── classth__algorithm-members.html │ ├── classth__algorithm.html │ ├── classth__algorithm.js │ ├── classth__algorithm.png │ ├── classth__ann__algo-members.html │ ├── classth__ann__algo.html │ ├── classth__ann__algo.js │ ├── classth__ann__algo.png │ ├── classth__d3d9__hook-members.html │ ├── classth__d3d9__hook.html │ ├── classth__d3d9__hook.js │ ├── classth__d3d9__hook.png │ ├── classth__di8__hook-members.html │ ├── classth__di8__hook.html │ ├── classth__di8__hook.js │ ├── classth__di8__hook.png │ ├── classth__hook-members.html │ ├── classth__hook.html │ ├── classth__hook.js │ ├── classth__hook.png │ ├── classth__patch-members.html │ ├── classth__patch.html │ ├── classth__patch.js │ ├── classth__patch.png │ ├── classth__player-members.html │ ├── classth__player.html │ ├── classth__player.js │ ├── classth__player.png │ ├── classth__vector__algo-members.html │ ├── classth__vector__algo.html │ ├── classth__vector__algo.js │ ├── classth__vector__algo.png │ ├── classth__vo__algo-members.html │ ├── classth__vo__algo.html │ ├── classth__vo__algo.js │ ├── classth__vo__algo.png │ ├── classvec2-members.html │ ├── classvec2.html │ ├── classvec2.js │ ├── closed.png │ ├── color_8cpp.html │ ├── color_8cpp.js │ ├── color_8h.html │ ├── color_8h.js │ ├── color_8h_source.html │ ├── detour_8cpp.html │ ├── detour_8cpp.js │ ├── detour_8h.html │ ├── detour_8h.js │ ├── detour_8h_source.html │ ├── di8__input__overlay_8cpp.html │ ├── di8__input__overlay_8cpp.js │ ├── di8__input__overlay_8h.html │ ├── di8__input__overlay_8h.js │ ├── di8__input__overlay_8h_source.html │ ├── dir_086a4d0d399a1795c6b8608aa7d216a9.html │ ├── dir_086a4d0d399a1795c6b8608aa7d216a9.js │ ├── dir_0c92724799589350579794e3ed39cad1.html │ ├── dir_0c92724799589350579794e3ed39cad1.js │ ├── dir_221c50254540840849dfe03f47d22712.html │ ├── dir_221c50254540840849dfe03f47d22712.js │ ├── dir_5d66a73ad6fb6d492a6dd5d2d1bfc365.html │ ├── dir_5d66a73ad6fb6d492a6dd5d2d1bfc365.js │ ├── dir_7d2536265b07d846b4db00396a8cff89.html │ ├── dir_7d2536265b07d846b4db00396a8cff89.js │ ├── dir_8a4dd15a0f0f529580e9ef5218d5fbde.html │ ├── dir_8a4dd15a0f0f529580e9ef5218d5fbde.js │ ├── dir_8e24b369c708e3edb6f4687e198272ab.html │ ├── dir_8e24b369c708e3edb6f4687e198272ab.js │ ├── dir_a708ee8c3761297af6b3b07a54bb0d86.html │ ├── dir_a708ee8c3761297af6b3b07a54bb0d86.js │ ├── dir_a88eb86107679b8028fdf1463d680b8f.html │ ├── dir_a88eb86107679b8028fdf1463d680b8f.js │ ├── dir_c05156486c5d04265a597106d50d4c25.html │ ├── dir_c05156486c5d04265a597106d50d4c25.js │ ├── dir_e7fc7118ca8149a717f12eaf82e3889a.html │ ├── dir_e7fc7118ca8149a717f12eaf82e3889a.js │ ├── doc.png │ ├── doxygen.css │ ├── doxygen.png │ ├── dynsections.js │ ├── files.html │ ├── files_dup.js │ ├── folderclosed.png │ ├── folderopen.png │ ├── functions.html │ ├── functions_0x7e.html │ ├── functions_b.html │ ├── functions_c.html │ ├── functions_d.html │ ├── functions_dup.js │ ├── functions_e.html │ ├── functions_f.html │ ├── functions_func.html │ ├── functions_func.js │ ├── functions_func_0x7e.html │ ├── functions_func_b.html │ ├── functions_func_c.html │ ├── functions_func_d.html │ ├── functions_func_e.html │ ├── functions_func_f.html │ ├── functions_func_g.html │ ├── functions_func_h.html │ ├── functions_func_i.html │ ├── functions_func_k.html │ ├── functions_func_l.html │ ├── functions_func_m.html │ ├── functions_func_n.html │ ├── functions_func_o.html │ ├── functions_func_p.html │ ├── functions_func_q.html │ ├── functions_func_r.html │ ├── functions_func_s.html │ ├── functions_func_t.html │ ├── functions_func_u.html │ ├── functions_func_v.html │ ├── functions_func_w.html │ ├── functions_func_z.html │ ├── functions_g.html │ ├── functions_h.html │ ├── functions_i.html │ ├── functions_k.html │ ├── functions_l.html │ ├── functions_m.html │ ├── functions_n.html │ ├── functions_o.html │ ├── functions_p.html │ ├── functions_q.html │ ├── functions_r.html │ ├── functions_s.html │ ├── functions_t.html │ ├── functions_u.html │ ├── functions_v.html │ ├── functions_vars.html │ ├── functions_w.html │ ├── functions_x.html │ ├── functions_y.html │ ├── functions_z.html │ ├── globals.html │ ├── globals_defs.html │ ├── globals_func.html │ ├── globals_type.html │ ├── globals_vars.html │ ├── hierarchy.html │ ├── hierarchy.js │ ├── index.html │ ├── jquery.js │ ├── keypress__detect_8cpp.html │ ├── keypress__detect_8h.html │ ├── keypress__detect_8h_source.html │ ├── logfs_8cpp.html │ ├── logfs_8cpp.js │ ├── logfs_8h.html │ ├── logfs_8h.js │ ├── logfs_8h_source.html │ ├── menu.js │ ├── menudata.js │ ├── namespacecdraw.html │ ├── namespacecdraw.js │ ├── namespacemembers.html │ ├── namespacemembers_func.html │ ├── namespaces.html │ ├── namespaces_dup.js │ ├── nav_f.png │ ├── nav_g.png │ ├── nav_h.png │ ├── navtree.css │ ├── navtree.js │ ├── navtreedata.js │ ├── navtreeindex0.js │ ├── navtreeindex1.js │ ├── navtreeindex2.js │ ├── open.png │ ├── resize.js │ ├── resource_8h.html │ ├── resource_8h_source.html │ ├── search │ ├── all_0.html │ ├── all_0.js │ ├── all_1.html │ ├── all_1.js │ ├── all_10.html │ ├── all_10.js │ ├── all_11.html │ ├── all_11.js │ ├── all_12.html │ ├── all_12.js │ ├── all_13.html │ ├── all_13.js │ ├── all_14.html │ ├── all_14.js │ ├── all_15.html │ ├── all_15.js │ ├── all_16.html │ ├── all_16.js │ ├── all_17.html │ ├── all_17.js │ ├── all_18.html │ ├── all_18.js │ ├── all_19.html │ ├── all_19.js │ ├── all_1a.html │ ├── all_1a.js │ ├── all_2.html │ ├── all_2.js │ ├── all_3.html │ ├── all_3.js │ ├── all_4.html │ ├── all_4.js │ ├── all_5.html │ ├── all_5.js │ ├── all_6.html │ ├── all_6.js │ ├── all_7.html │ ├── all_7.js │ ├── all_8.html │ ├── all_8.js │ ├── all_9.html │ ├── all_9.js │ ├── all_a.html │ ├── all_a.js │ ├── all_b.html │ ├── all_b.js │ ├── all_c.html │ ├── all_c.js │ ├── all_d.html │ ├── all_d.js │ ├── all_e.html │ ├── all_e.js │ ├── all_f.html │ ├── all_f.js │ ├── classes_0.html │ ├── classes_0.js │ ├── classes_1.html │ ├── classes_1.js │ ├── classes_2.html │ ├── classes_2.js │ ├── classes_3.html │ ├── classes_3.js │ ├── classes_4.html │ ├── classes_4.js │ ├── classes_5.html │ ├── classes_5.js │ ├── classes_6.html │ ├── classes_6.js │ ├── classes_7.html │ ├── classes_7.js │ ├── classes_8.html │ ├── classes_8.js │ ├── classes_9.html │ ├── classes_9.js │ ├── close.png │ ├── defines_0.html │ ├── defines_0.js │ ├── defines_1.html │ ├── defines_1.js │ ├── defines_2.html │ ├── defines_2.js │ ├── defines_3.html │ ├── defines_3.js │ ├── defines_4.html │ ├── defines_4.js │ ├── defines_5.html │ ├── defines_5.js │ ├── defines_6.html │ ├── defines_6.js │ ├── defines_7.html │ ├── defines_7.js │ ├── defines_8.html │ ├── defines_8.js │ ├── files_0.html │ ├── files_0.js │ ├── files_1.html │ ├── files_1.js │ ├── files_2.html │ ├── files_2.js │ ├── files_3.html │ ├── files_3.js │ ├── files_4.html │ ├── files_4.js │ ├── files_5.html │ ├── files_5.js │ ├── files_6.html │ ├── files_6.js │ ├── files_7.html │ ├── files_7.js │ ├── files_8.html │ ├── files_8.js │ ├── functions_0.html │ ├── functions_0.js │ ├── functions_1.html │ ├── functions_1.js │ ├── functions_10.html │ ├── functions_10.js │ ├── functions_11.html │ ├── functions_11.js │ ├── functions_12.html │ ├── functions_12.js │ ├── functions_13.html │ ├── functions_13.js │ ├── functions_14.html │ ├── functions_14.js │ ├── functions_15.html │ ├── functions_15.js │ ├── functions_16.html │ ├── functions_16.js │ ├── functions_17.html │ ├── functions_17.js │ ├── functions_18.html │ ├── functions_18.js │ ├── functions_2.html │ ├── functions_2.js │ ├── functions_3.html │ ├── functions_3.js │ ├── functions_4.html │ ├── functions_4.js │ ├── functions_5.html │ ├── functions_5.js │ ├── functions_6.html │ ├── functions_6.js │ ├── functions_7.html │ ├── functions_7.js │ ├── functions_8.html │ ├── functions_8.js │ ├── functions_9.html │ ├── functions_9.js │ ├── functions_a.html │ ├── functions_a.js │ ├── functions_b.html │ ├── functions_b.js │ ├── functions_c.html │ ├── functions_c.js │ ├── functions_d.html │ ├── functions_d.js │ ├── functions_e.html │ ├── functions_e.js │ ├── functions_f.html │ ├── functions_f.js │ ├── mag_sel.png │ ├── namespaces_0.html │ ├── namespaces_0.js │ ├── nomatches.html │ ├── search.css │ ├── search.js │ ├── search_l.png │ ├── search_m.png │ ├── search_r.png │ ├── searchdata.js │ ├── typedefs_0.html │ ├── typedefs_0.js │ ├── typedefs_1.html │ ├── typedefs_1.js │ ├── typedefs_2.html │ ├── typedefs_2.js │ ├── typedefs_3.html │ ├── typedefs_3.js │ ├── typedefs_4.html │ ├── typedefs_4.js │ ├── typedefs_5.html │ ├── typedefs_5.js │ ├── typedefs_6.html │ ├── typedefs_6.js │ ├── variables_0.html │ ├── variables_0.js │ ├── variables_1.html │ ├── variables_1.js │ ├── variables_10.html │ ├── variables_10.js │ ├── variables_11.html │ ├── variables_11.js │ ├── variables_12.html │ ├── variables_12.js │ ├── variables_13.html │ ├── variables_13.js │ ├── variables_14.html │ ├── variables_14.js │ ├── variables_15.html │ ├── variables_15.js │ ├── variables_16.html │ ├── variables_16.js │ ├── variables_17.html │ ├── variables_17.js │ ├── variables_2.html │ ├── variables_2.js │ ├── variables_3.html │ ├── variables_3.js │ ├── variables_4.html │ ├── variables_4.js │ ├── variables_5.html │ ├── variables_5.js │ ├── variables_6.html │ ├── variables_6.js │ ├── variables_7.html │ ├── variables_7.js │ ├── variables_8.html │ ├── variables_8.js │ ├── variables_9.html │ ├── variables_9.js │ ├── variables_a.html │ ├── variables_a.js │ ├── variables_b.html │ ├── variables_b.js │ ├── variables_c.html │ ├── variables_c.js │ ├── variables_d.html │ ├── variables_d.js │ ├── variables_e.html │ ├── variables_e.js │ ├── variables_f.html │ └── variables_f.js │ ├── splitbar.png │ ├── stdafx_8cpp.html │ ├── stdafx_8h.html │ ├── stdafx_8h.js │ ├── stdafx_8h_source.html │ ├── struct_direct3_d9_hook-members.html │ ├── struct_direct3_d9_hook.html │ ├── struct_direct3_d9_hook.js │ ├── struct_direct_input8_hook-members.html │ ├── struct_direct_input8_hook.html │ ├── struct_direct_input8_hook.js │ ├── structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x-members.html │ ├── structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html │ ├── structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.js │ ├── structentity-members.html │ ├── structentity.html │ ├── structentity.js │ ├── structgs__addr-members.html │ ├── structgs__addr.html │ ├── structgs__addr.js │ ├── structhsv-members.html │ ├── structhsv.html │ ├── structhsv.js │ ├── structkey__graphic-members.html │ ├── structkey__graphic.html │ ├── structkey__graphic.js │ ├── structlaser-members.html │ ├── structlaser.html │ ├── structlaser.js │ ├── structrgb-members.html │ ├── structrgb.html │ ├── structrgb.js │ ├── structth__ann__algo_1_1sample-members.html │ ├── structth__ann__algo_1_1sample.html │ ├── structth__ann__algo_1_1sample.js │ ├── structth__param-members.html │ ├── structth__param.html │ ├── structth__param.js │ ├── sync_off.png │ ├── sync_on.png │ ├── tab_a.png │ ├── tab_b.png │ ├── tab_h.png │ ├── tab_s.png │ ├── tabs.css │ ├── th07__bullet__proc__hook_8cpp.html │ ├── th07__bullet__proc__hook_8cpp.js │ ├── th07__bullet__proc__hook_8h.html │ ├── th07__bullet__proc__hook_8h.js │ ├── th07__bullet__proc__hook_8h_source.html │ ├── th07__player_8cpp.html │ ├── th07__player_8cpp.js │ ├── th07__player_8h.html │ ├── th07__player_8h_source.html │ ├── th08__bullet__proc__hook_8cpp.html │ ├── th08__bullet__proc__hook_8cpp.js │ ├── th08__bullet__proc__hook_8h.html │ ├── th08__bullet__proc__hook_8h.js │ ├── th08__bullet__proc__hook_8h_source.html │ ├── th08__patch__autobomb_8cpp.html │ ├── th08__patch__autobomb_8h.html │ ├── th08__patch__autobomb_8h_source.html │ ├── th08__player_8cpp.html │ ├── th08__player_8cpp.js │ ├── th08__player_8h.html │ ├── th08__player_8h_source.html │ ├── th10__bullet__proc__hook_8cpp.html │ ├── th10__bullet__proc__hook_8h.html │ ├── th10__bullet__proc__hook_8h_source.html │ ├── th10__player_8cpp.html │ ├── th10__player_8cpp.js │ ├── th10__player_8h.html │ ├── th10__player_8h_source.html │ ├── th15__bullet__proc__hook_8cpp.html │ ├── th15__bullet__proc__hook_8cpp.js │ ├── th15__bullet__proc__hook_8h.html │ ├── th15__bullet__proc__hook_8h.js │ ├── th15__bullet__proc__hook_8h_source.html │ ├── th15__patch__autobomb_8cpp.html │ ├── th15__patch__autobomb_8h.html │ ├── th15__patch__autobomb_8h_source.html │ ├── th15__player_8cpp.html │ ├── th15__player_8cpp.js │ ├── th15__player_8h.html │ ├── th15__player_8h_source.html │ ├── th__algorithm_8h.html │ ├── th__algorithm_8h_source.html │ ├── th__ann__algo_8cpp.html │ ├── th__ann__algo_8h.html │ ├── th__ann__algo_8h.js │ ├── th__ann__algo_8h_source.html │ ├── th__config_8cpp.html │ ├── th__config_8cpp.js │ ├── th__config_8h.html │ ├── th__config_8h.js │ ├── th__config_8h_source.html │ ├── th__d3d9__hook_8cpp.html │ ├── th__d3d9__hook_8h.html │ ├── th__d3d9__hook_8h.js │ ├── th__d3d9__hook_8h_source.html │ ├── th__di8__hook_8cpp.html │ ├── th__di8__hook_8h.html │ ├── th__di8__hook_8h.js │ ├── th__di8__hook_8h_source.html │ ├── th__hook_8h.html │ ├── th__hook_8h_source.html │ ├── th__patch_8h.html │ ├── th__patch_8h_source.html │ ├── th__player_8h.html │ ├── th__player_8h_source.html │ ├── th__vector__algo_8cpp.html │ ├── th__vector__algo_8h.html │ ├── th__vector__algo_8h.js │ ├── th__vector__algo_8h_source.html │ ├── th__vo__algo_8cpp.html │ ├── th__vo__algo_8h.html │ ├── th__vo__algo_8h.js │ ├── th__vo__algo_8h_source.html │ ├── twinhook_8cpp.html │ ├── twinhook_8cpp.js │ ├── unionth__kbd__state-members.html │ ├── unionth__kbd__state.html │ ├── unionth__kbd__state.js │ ├── vec2_8cpp.html │ ├── vec2_8cpp.js │ ├── vec2_8h.html │ ├── vec2_8h.js │ ├── vec2_8h_source.html │ └── vec2__test_8cpp.html ├── thsandbox ├── scene.cpp ├── scene.h ├── thsandbox.cpp ├── thsandbox.vcxproj └── thsandbox.vcxproj.filters ├── twinhook ├── algo │ ├── th_algorithm.h │ ├── th_vector_algo.cpp │ ├── th_vector_algo.h │ ├── th_vo_algo.cpp │ └── th_vo_algo.h ├── config │ ├── th_config.cpp │ ├── th_config.h │ ├── th_registry.cpp │ └── th_registry.h ├── control │ ├── movement.h │ ├── th06_player.cpp │ ├── th06_player.h │ ├── th07_player.cpp │ ├── th07_player.h │ ├── th08_player.cpp │ ├── th08_player.h │ ├── th10_player.cpp │ ├── th10_player.h │ ├── th11_player.cpp │ ├── th11_player.h │ ├── th15_player.cpp │ ├── th15_player.h │ ├── th_player.cpp │ └── th_player.h ├── directx │ ├── ID3D9Device_Wrapper.cpp │ ├── ID3D9Device_Wrapper.h │ ├── ID3D9_Wrapper.cpp │ ├── ID3D9_Wrapper.h │ ├── IDI8ADevice_Wrapper.cpp │ ├── IDI8ADevice_Wrapper.h │ ├── IDI8A_Wrapper.cpp │ └── IDI8A_Wrapper.h ├── gfx │ ├── di8_input_overlay.cpp │ ├── di8_input_overlay.h │ ├── imgui_controller.cpp │ ├── imgui_controller.h │ ├── imgui_impl_win32.cpp │ ├── imgui_impl_win32.h │ ├── imgui_mixins.cpp │ ├── imgui_mixins.h │ ├── imgui_window.cpp │ ├── imgui_window.h │ ├── th_info_overlay.cpp │ └── th_info_overlay.h ├── hook │ ├── th07_bullet_proc_hook.cpp │ ├── th07_bullet_proc_hook.h │ ├── th08_bullet_proc_hook.cpp │ ├── th08_bullet_proc_hook.h │ ├── th15_bullet_proc_hook.cpp │ ├── th15_bullet_proc_hook.h │ ├── th_d3d9_hook.cpp │ ├── th_d3d9_hook.h │ ├── th_di8_hook.cpp │ ├── th_di8_hook.h │ ├── th_hook.h │ ├── th_wndproc_imgui_hook.cpp │ └── th_wndproc_imgui_hook.h ├── info │ ├── keypress_detect.cpp │ └── keypress_detect.h ├── model │ ├── aabb.cpp │ ├── aabb.h │ ├── circle.cpp │ ├── circle.h │ ├── entity.cpp │ ├── entity.h │ ├── game_object.cpp │ ├── game_object.h │ ├── obb.cpp │ ├── obb.h │ ├── object.h │ ├── polygon.cpp │ └── polygon.h ├── patch │ ├── th08_patch_autobomb.h │ ├── th10_patch_autobomb.h │ ├── th11_patch_dinput_fix.h │ ├── th15_patch_autobomb.h │ ├── th_patch.cpp │ ├── th_patch.h │ ├── th_patch_registry.cpp │ └── th_patch_registry.h ├── stdafx.h ├── twinhook.cpp ├── twinhook.vcxproj ├── twinhook.vcxproj.filters └── util │ ├── assert.h │ ├── cdraw.cpp │ ├── cdraw.h │ ├── color.cpp │ ├── color.h │ ├── detour.cpp │ ├── detour.h │ ├── spdlog_msvc.h │ ├── vec2.cpp │ └── vec2.h ├── twinject.sln ├── twinject ├── debugger.cpp ├── debugger.h ├── twinject.cpp ├── twinject.toml ├── twinject.vcxproj ├── twinject.vcxproj.filters ├── winmanip.cpp └── winmanip.h └── vcxproj ├── Detours ├── Detours.props ├── Detours.vcxproj └── Detours.vcxproj.filters └── ImGui ├── ImGui.props ├── ImGui.vcxproj └── ImGui.vcxproj.filters /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "dependencies/cpptoml"] 2 | path = dependencies/cpptoml 3 | url = https://github.com/skystrife/cpptoml.git 4 | [submodule "dependencies/imgui"] 5 | path = dependencies/imgui 6 | url = https://github.com/ocornut/imgui.git 7 | [submodule "dependencies/spdlog"] 8 | path = dependencies/spdlog 9 | url = https://github.com/gabime/spdlog.git 10 | [submodule "dependencies/Detours"] 11 | path = dependencies/Detours 12 | url = https://github.com/microsoft/Detours.git 13 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/BUGS.txt: -------------------------------------------------------------------------------- 1 | 2 | Bugs are now managed in the SDL bug tracker, here: 3 | 4 | https://bugzilla.libsdl.org/ 5 | 6 | You may report bugs there, and search to see if a given issue has already 7 | been reported, discussed, and maybe even fixed. 8 | 9 | 10 | You may also find help at the SDL forums/mailing list: 11 | 12 | https://discourse.libsdl.org/ 13 | 14 | Bug reports are welcome here, but we really appreciate if you use Bugzilla, as 15 | bugs discussed on the mailing list may be forgotten or missed. 16 | 17 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/COPYING.txt: -------------------------------------------------------------------------------- 1 | 2 | Simple DirectMedia Layer 3 | Copyright (C) 1997-2018 Sam Lantinga 4 | 5 | This software is provided 'as-is', without any express or implied 6 | warranty. In no event will the authors be held liable for any damages 7 | arising from the use of this software. 8 | 9 | Permission is granted to anyone to use this software for any purpose, 10 | including commercial applications, and to alter it and redistribute it 11 | freely, subject to the following restrictions: 12 | 13 | 1. The origin of this software must not be misrepresented; you must not 14 | claim that you wrote the original software. If you use this software 15 | in a product, an acknowledgment in the product documentation would be 16 | appreciated but is not required. 17 | 2. Altered source versions must be plainly marked as such, and must not be 18 | misrepresented as being the original software. 19 | 3. This notice may not be removed or altered from any source distribution. 20 | 21 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/README-SDL.txt: -------------------------------------------------------------------------------- 1 | 2 | Please distribute this file with the SDL runtime environment: 3 | 4 | The Simple DirectMedia Layer (SDL for short) is a cross-platform library 5 | designed to make it easy to write multi-media software, such as games 6 | and emulators. 7 | 8 | The Simple DirectMedia Layer library source code is available from: 9 | https://www.libsdl.org/ 10 | 11 | This library is distributed under the terms of the zlib license: 12 | http://www.zlib.net/zlib_license.html 13 | 14 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/README.txt: -------------------------------------------------------------------------------- 1 | 2 | Simple DirectMedia Layer 3 | 4 | (SDL) 5 | 6 | Version 2.0 7 | 8 | --- 9 | https://www.libsdl.org/ 10 | 11 | Simple DirectMedia Layer is a cross-platform development library designed 12 | to provide low level access to audio, keyboard, mouse, joystick, and graphics 13 | hardware via OpenGL and Direct3D. It is used by video playback software, 14 | emulators, and popular games including Valve's award winning catalog 15 | and many Humble Bundle games. 16 | 17 | More extensive documentation is available in the docs directory, starting 18 | with README.md 19 | 20 | Enjoy! 21 | Sam Lantinga (slouken@libsdl.org) 22 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/docs/README-cmake.md: -------------------------------------------------------------------------------- 1 | CMake 2 | ================================================================================ 3 | (www.cmake.org) 4 | 5 | SDL's build system was traditionally based on autotools. Over time, this 6 | approach has suffered from several issues across the different supported 7 | platforms. 8 | To solve these problems, a new build system based on CMake is under development. 9 | It works in parallel to the legacy system, so users can experiment with it 10 | without complication. 11 | While still experimental, the build system should be usable on the following 12 | platforms: 13 | 14 | * FreeBSD 15 | * Linux 16 | * VS.NET 2010 17 | * MinGW and Msys 18 | * OS X with support for XCode 19 | 20 | 21 | ================================================================================ 22 | Usage 23 | ================================================================================ 24 | 25 | Assuming the source for SDL is located at ~/sdl 26 | 27 | cd ~ 28 | mkdir build 29 | cd build 30 | cmake ../sdl 31 | 32 | This will build the static and dynamic versions of SDL in the ~/build directory. 33 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/docs/README-emscripten.md: -------------------------------------------------------------------------------- 1 | Emscripten 2 | ================================================================================ 3 | 4 | Build: 5 | 6 | $ mkdir build 7 | $ cd build 8 | $ emconfigure ../configure --host=asmjs-unknown-emscripten --disable-assembly --disable-threads --disable-cpuinfo CFLAGS="-O2" 9 | $ emmake make 10 | 11 | Or with cmake: 12 | 13 | $ mkdir build 14 | $ cd build 15 | $ emcmake cmake .. 16 | $ emmake make 17 | 18 | To build one of the tests: 19 | 20 | $ cd test/ 21 | $ emcc -O2 --js-opts 0 -g4 testdraw2.c -I../include ../build/.libs/libSDL2.a ../build/libSDL2_test.a -o a.html 22 | 23 | Uses GLES2 renderer or software 24 | 25 | Some other SDL2 libraries can be easily built (assuming SDL2 is installed somewhere): 26 | 27 | SDL_mixer (http://www.libsdl.org/projects/SDL_mixer/): 28 | 29 | $ EMCONFIGURE_JS=1 emconfigure ../configure 30 | build as usual... 31 | 32 | SDL_gfx (http://cms.ferzkopp.net/index.php/software/13-sdl-gfx): 33 | 34 | $ EMCONFIGURE_JS=1 emconfigure ../configure --disable-mmx 35 | build as usual... 36 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/docs/README-hg.md: -------------------------------------------------------------------------------- 1 | Mercurial 2 | ========= 3 | 4 | The latest development version of SDL is available via Mercurial. 5 | Mercurial allows you to get up-to-the-minute fixes and enhancements; 6 | as a developer works on a source tree, you can use "hg" to mirror that 7 | source tree instead of waiting for an official release. Please look 8 | at the Mercurial website ( https://www.mercurial-scm.org/ ) for more 9 | information on using hg, where you can also download software for 10 | Mac OS X, Windows, and Unix systems. 11 | 12 | hg clone http://hg.libsdl.org/SDL 13 | 14 | If you are building SDL via configure, you will need to run autogen.sh 15 | before running configure. 16 | 17 | There is a web interface to the subversion repository at: 18 | http://hg.libsdl.org/SDL/ 19 | 20 | There is an RSS feed available at that URL, for those that want to 21 | track commits in real time. 22 | 23 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/docs/README-pandora.md: -------------------------------------------------------------------------------- 1 | Pandora 2 | ===================================================================== 3 | 4 | ( http://openpandora.org/ ) 5 | - A pandora specific video driver was written to allow SDL 2.0 with OpenGL ES 6 | support to work on the pandora under the framebuffer. This driver do not have 7 | input support for now, so if you use it you will have to add your own control code. 8 | The video driver name is "pandora" so if you have problem running it from 9 | the framebuffer, try to set the following variable before starting your application : 10 | "export SDL_VIDEODRIVER=pandora" 11 | 12 | - OpenGL ES support was added to the x11 driver, so it's working like the normal 13 | x11 driver one with OpenGLX support, with SDL input event's etc.. 14 | 15 | 16 | David Carré (Cpasjuste) 17 | cpasjuste@gmail.com 18 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/docs/README-platforms.md: -------------------------------------------------------------------------------- 1 | Platforms 2 | ========= 3 | 4 | We maintain the list of supported platforms on our wiki now, and how to 5 | build and install SDL for those platforms: 6 | 7 | https://wiki.libsdl.org/Installation 8 | 9 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/docs/README-psp.md: -------------------------------------------------------------------------------- 1 | PSP 2 | ====== 3 | SDL port for the Sony PSP contributed by 4 | Captian Lex 5 | 6 | Credit to 7 | Marcus R.Brown,Jim Paris,Matthew H for the original SDL 1.2 for PSP 8 | Geecko for his PSP GU lib "Glib2d" 9 | 10 | Building 11 | -------- 12 | To build for the PSP, make sure psp-config is in the path and run: 13 | make -f Makefile.psp 14 | 15 | 16 | 17 | To Do 18 | ------ 19 | PSP Screen Keyboard 20 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/docs/README-wince.md: -------------------------------------------------------------------------------- 1 | WinCE 2 | ===== 3 | 4 | Windows CE is no longer supported by SDL. 5 | 6 | We have left the CE support in SDL 1.2 for those that must have it, and we 7 | have support for Windows Phone 8 and WinRT in SDL2, as of SDL 2.0.3. 8 | 9 | --ryan. 10 | 11 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/include/SDL_copying.h: -------------------------------------------------------------------------------- 1 | /* 2 | Simple DirectMedia Layer 3 | Copyright (C) 1997-2017 Sam Lantinga 4 | 5 | This software is provided 'as-is', without any express or implied 6 | warranty. In no event will the authors be held liable for any damages 7 | arising from the use of this software. 8 | 9 | Permission is granted to anyone to use this software for any purpose, 10 | including commercial applications, and to alter it and redistribute it 11 | freely, subject to the following restrictions: 12 | 13 | 1. The origin of this software must not be misrepresented; you must not 14 | claim that you wrote the original software. If you use this software 15 | in a product, an acknowledgment in the product documentation would be 16 | appreciated but is not required. 17 | 2. Altered source versions must be plainly marked as such, and must not be 18 | misrepresented as being the original software. 19 | 3. This notice may not be removed or altered from any source distribution. 20 | */ 21 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/include/SDL_name.h: -------------------------------------------------------------------------------- 1 | /* 2 | Simple DirectMedia Layer 3 | Copyright (C) 1997-2018 Sam Lantinga 4 | 5 | This software is provided 'as-is', without any express or implied 6 | warranty. In no event will the authors be held liable for any damages 7 | arising from the use of this software. 8 | 9 | Permission is granted to anyone to use this software for any purpose, 10 | including commercial applications, and to alter it and redistribute it 11 | freely, subject to the following restrictions: 12 | 13 | 1. The origin of this software must not be misrepresented; you must not 14 | claim that you wrote the original software. If you use this software 15 | in a product, an acknowledgment in the product documentation would be 16 | appreciated but is not required. 17 | 2. Altered source versions must be plainly marked as such, and must not be 18 | misrepresented as being the original software. 19 | 3. This notice may not be removed or altered from any source distribution. 20 | */ 21 | 22 | #ifndef SDLname_h_ 23 | #define SDLname_h_ 24 | 25 | #if defined(__STDC__) || defined(__cplusplus) 26 | #define NeedFunctionPrototypes 1 27 | #endif 28 | 29 | #define SDL_NAME(X) SDL_##X 30 | 31 | #endif /* SDLname_h_ */ 32 | 33 | /* vi: set ts=4 sw=4 expandtab: */ 34 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/include/SDL_opengles2_gl2platform.h: -------------------------------------------------------------------------------- 1 | #ifndef __gl2platform_h_ 2 | #define __gl2platform_h_ 3 | 4 | /* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */ 5 | 6 | /* 7 | * This document is licensed under the SGI Free Software B License Version 8 | * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . 9 | */ 10 | 11 | /* Platform-specific types and definitions for OpenGL ES 2.X gl2.h 12 | * 13 | * Adopters may modify khrplatform.h and this file to suit their platform. 14 | * You are encouraged to submit all modifications to the Khronos group so that 15 | * they can be included in future versions of this file. Please submit changes 16 | * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) 17 | * by filing a bug against product "OpenGL-ES" component "Registry". 18 | */ 19 | 20 | /*#include */ 21 | 22 | #ifndef GL_APICALL 23 | #define GL_APICALL KHRONOS_APICALL 24 | #endif 25 | 26 | #ifndef GL_APIENTRY 27 | #define GL_APIENTRY KHRONOS_APIENTRY 28 | #endif 29 | 30 | #endif /* __gl2platform_h_ */ 31 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/include/SDL_revision.h: -------------------------------------------------------------------------------- 1 | #define SDL_REVISION "hg-12373:8feb5da6f2fb" 2 | #define SDL_REVISION_NUMBER 12373 3 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/include/SDL_types.h: -------------------------------------------------------------------------------- 1 | /* 2 | Simple DirectMedia Layer 3 | Copyright (C) 1997-2018 Sam Lantinga 4 | 5 | This software is provided 'as-is', without any express or implied 6 | warranty. In no event will the authors be held liable for any damages 7 | arising from the use of this software. 8 | 9 | Permission is granted to anyone to use this software for any purpose, 10 | including commercial applications, and to alter it and redistribute it 11 | freely, subject to the following restrictions: 12 | 13 | 1. The origin of this software must not be misrepresented; you must not 14 | claim that you wrote the original software. If you use this software 15 | in a product, an acknowledgment in the product documentation would be 16 | appreciated but is not required. 17 | 2. Altered source versions must be plainly marked as such, and must not be 18 | misrepresented as being the original software. 19 | 3. This notice may not be removed or altered from any source distribution. 20 | */ 21 | 22 | /** 23 | * \file SDL_types.h 24 | * 25 | * \deprecated 26 | */ 27 | 28 | /* DEPRECATED */ 29 | #include "SDL_stdinc.h" 30 | -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/lib/x64/SDL2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/SDL2-2.0.9/lib/x64/SDL2.dll -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/lib/x64/SDL2.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/SDL2-2.0.9/lib/x64/SDL2.lib -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/lib/x64/SDL2main.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/SDL2-2.0.9/lib/x64/SDL2main.lib -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/lib/x64/SDL2test.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/SDL2-2.0.9/lib/x64/SDL2test.lib -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/lib/x86/SDL2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/SDL2-2.0.9/lib/x86/SDL2.dll -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/lib/x86/SDL2.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/SDL2-2.0.9/lib/x86/SDL2.lib -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/lib/x86/SDL2main.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/SDL2-2.0.9/lib/x86/SDL2main.lib -------------------------------------------------------------------------------- /dependencies/SDL2-2.0.9/lib/x86/SDL2test.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/SDL2-2.0.9/lib/x86/SDL2test.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Documentation/License Agreements/DirectX End User EULA.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Documentation/License Agreements/DirectX End User EULA.txt -------------------------------------------------------------------------------- /dependencies/directx_2010/Documentation/License Agreements/DirectX SDK EULA.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Documentation/License Agreements/DirectX SDK EULA.txt -------------------------------------------------------------------------------- /dependencies/directx_2010/Documentation/License Agreements/directx redist.txt: -------------------------------------------------------------------------------- 1 | DirectX Software Development Kit Redistributable Code 2 | ------------------------------------------------------------- 3 | Redistributable Code is identified as all of the files in the following 4 | "Redist" directory on the DirectX SDK CD/Download: 5 | 6 | redist/ 7 | 8 | 9 | The following files in the above directory must be included in any distribution of 10 | the DirectX Runtime. 11 | 12 | DSetup32.dll 13 | DSetup.dll 14 | DXSetup.exe 15 | DXupdate.cab 16 | dxdllreg_x86.cab -------------------------------------------------------------------------------- /dependencies/directx_2010/Include/dxsdkver.h: -------------------------------------------------------------------------------- 1 | /*==========================================================================; 2 | * 3 | * 4 | * File: dxsdkver.h 5 | * Content: DirectX SDK Version Include File 6 | * 7 | ****************************************************************************/ 8 | 9 | #ifndef _DXSDKVER_H_ 10 | #define _DXSDKVER_H_ 11 | 12 | #define _DXSDK_PRODUCT_MAJOR 9 13 | #define _DXSDK_PRODUCT_MINOR 29 14 | #define _DXSDK_BUILD_MAJOR 1962 15 | #define _DXSDK_BUILD_MINOR 0 16 | 17 | #endif // _DXSDKVER_H_ 18 | 19 | -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/D3DCSX.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/D3DCSX.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/D3DCSXd.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/D3DCSXd.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/DxErr.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/DxErr.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/X3DAudio.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/X3DAudio.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/XAPOFX.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/XAPOFX.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/XInput.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/XInput.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/d2d1.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/d2d1.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/d3d10.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/d3d10.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/d3d10_1.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/d3d10_1.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/d3d11.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/d3d11.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/d3d9.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/d3d9.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/d3dcompiler.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/d3dcompiler.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/d3dx10.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/d3dx10.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/d3dx10d.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/d3dx10d.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/d3dx11.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/d3dx11.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/d3dx11d.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/d3dx11d.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/d3dx9.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/d3dx9.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/d3dx9d.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/d3dx9d.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/d3dxof.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/d3dxof.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/dinput8.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/dinput8.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/dsound.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/dsound.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/dwrite.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/dwrite.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/dxgi.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/dxgi.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/dxguid.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/dxguid.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/xapobase.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/xapobase.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x64/xapobased.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x64/xapobased.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/D3DCSX.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/D3DCSX.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/D3DCSXd.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/D3DCSXd.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/DxErr.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/DxErr.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/X3DAudio.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/X3DAudio.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/XAPOFX.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/XAPOFX.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/XInput.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/XInput.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/d2d1.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/d2d1.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/d3d10.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/d3d10.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/d3d10_1.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/d3d10_1.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/d3d11.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/d3d11.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/d3d9.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/d3d9.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/d3dcompiler.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/d3dcompiler.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/d3dx10.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/d3dx10.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/d3dx10d.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/d3dx10d.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/d3dx11.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/d3dx11.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/d3dx11d.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/d3dx11d.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/d3dx9.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/d3dx9.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/d3dx9d.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/d3dx9d.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/d3dxof.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/d3dxof.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/dinput8.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/dinput8.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/dsetup.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/dsetup.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/dsound.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/dsound.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/dwrite.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/dwrite.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/dxgi.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/dxgi.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/dxguid.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/dxguid.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/xapobase.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/xapobase.lib -------------------------------------------------------------------------------- /dependencies/directx_2010/Lib/x86/xapobased.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/dependencies/directx_2010/Lib/x86/xapobased.lib -------------------------------------------------------------------------------- /deploy/INSTRUCTIONS.TXT: -------------------------------------------------------------------------------- 1 | twinject (netdex) 2 | ========= 3 | https://github.com/netdex/twinject 4 | 5 | Please read all documentation in the repository. 6 | 7 | -- INSTALLATION -- 8 | Extract all files to your Touhou game directory. 9 | 10 | -- RUNNING -- 11 | Configure twinject.toml according to the game. 12 | Run twinject.exe, which will chainload the game. 13 | 14 | -- CONTROLS -- 15 | You can use the ImGui window to control twinject, or the following keyboard shortcuts: 16 | 17 | G - Toggle bot 18 | H - Display debug graphics 19 | -------------------------------------------------------------------------------- /deploy/d3d8.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/deploy/d3d8.dll -------------------------------------------------------------------------------- /deploy/enbconvertor.ini: -------------------------------------------------------------------------------- 1 | [PROXY] 2 | EnableProxyLibrary=1 3 | InitProxyFunctions=1 4 | ProxyLibrary=d3d9.dll 5 | [GLOBAL] 6 | ENBSeriesSite1=enbdev.com 7 | -------------------------------------------------------------------------------- /deploy/twinject.toml: -------------------------------------------------------------------------------- 1 | ################################### 2 | # TWINJECT INJECTOR CONFIGURATION # 3 | ################################### 4 | 5 | debug = false # if debug = true, use debug paths instead of searching current directory 6 | 7 | ### AUTOMATIC INJECTOR CONFIGURATION 8 | bin = "th10.exe" # name of th binary in current directory 9 | env = "th10" # name of internal environment/th_player type 10 | dll = "twinhook.dll" # name of twinhook DLL (should always be "twinhook.dll") 11 | 12 | ### HARDCODED DEBUG PATHS ### 13 | # if debug = true, the following hardcoded paths are used for env = loader.env 14 | 15 | twinhook_path_dbg = "D:\\Programming\\Multi\\twinject\\Debug\\twinhook.dll" 16 | twinhook_path_rls = "D:\\Programming\\Multi\\twinject\\Release\\twinhook.dll" 17 | 18 | [th06] 19 | bin = "th06e.exe" 20 | path = "D:\\Programming\\Multi\\th06" 21 | 22 | [th07] 23 | bin = "th07.exe" 24 | path = "D:\\Programming\\Multi\\th07" 25 | 26 | [th08] 27 | bin = "th08.exe" 28 | path = "D:\\Programming\\Multi\\th08" 29 | 30 | [th10] 31 | bin = "th10.exe" 32 | path = "D:\\Programming\\Multi\\th10" 33 | 34 | [th11] 35 | bin = "th11.exe" 36 | path = "D:\\Programming\\Multi\\th11" 37 | 38 | [th15] 39 | bin = "th15.exe" 40 | path = "D:\\Programming\\Multi\\th15" 41 | 42 | 43 | -------------------------------------------------------------------------------- /desc/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/desc/architecture.png -------------------------------------------------------------------------------- /desc/reversing_technical.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/desc/reversing_technical.md -------------------------------------------------------------------------------- /desc/src/vector_dodging.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/desc/src/vector_dodging.ai -------------------------------------------------------------------------------- /desc/twinject_technical.md: -------------------------------------------------------------------------------- 1 | # Twinject Technical Description 2 | ## Functionality Summary 3 | Injects twinhook into the game using MS Detours. 4 | 5 | ## Technical 6 | twinhook is injected using `DetourCreateProcessWithDll`, which starts the process in a suspended state, injects the DLL, then starts it back up again. This ensures the DLL is loaded before the program starts running. 7 | 8 | twinject also acts as a debugger, displaying debug output from twinhook, catching exceptions, and possibly more future functionality. 9 | -------------------------------------------------------------------------------- /docs/html/_i_d_i8_a___wrapper_8h.js: -------------------------------------------------------------------------------- 1 | var _i_d_i8_a___wrapper_8h = 2 | [ 3 | [ "DirectInput8Hook", "struct_direct_input8_hook.html", "struct_direct_input8_hook" ], 4 | [ "DirectInput8Wrapper", "class_direct_input8_wrapper.html", "class_direct_input8_wrapper" ], 5 | [ "GetDeviceState_t", "_i_d_i8_a___wrapper_8h.html#a9149cc1f6750e41d93dc8cf7f0387500", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/html/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/bc_s.png -------------------------------------------------------------------------------- /docs/html/bdwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/bdwn.png -------------------------------------------------------------------------------- /docs/html/cdraw_8cpp.js: -------------------------------------------------------------------------------- 1 | var cdraw_8cpp = 2 | [ 3 | [ "circle", "cdraw_8cpp.html#adf47bd5e4dcc8dd5733e75caea9f5a3f", null ], 4 | [ "fill_rect", "cdraw_8cpp.html#ab72606b75fdfd4737bc2d89454727c35", null ], 5 | [ "gen_texture", "cdraw_8cpp.html#a8d3dfd65c13add2bd6f6e861a9652880", null ], 6 | [ "init", "cdraw_8cpp.html#af5c8c073fc2891f7001d0e39740e7be1", null ], 7 | [ "init_font", "cdraw_8cpp.html#afe7926ac7abbb152cb8042bcfc17a338", null ], 8 | [ "init_line", "cdraw_8cpp.html#adc32984e9d35453a26a4f377937c9553", null ], 9 | [ "init_solid_texture", "cdraw_8cpp.html#a6cccc66bd6f555afa340632f0e2a1694", null ], 10 | [ "line", "cdraw_8cpp.html#a21754cba60de73a29edd113d72294a5c", null ], 11 | [ "rect", "cdraw_8cpp.html#a2f686ced15515df3a91d7a5e3903f77a", null ], 12 | [ "text", "cdraw_8cpp.html#af835ead25bb5f37ab67fa517aa04fff5", null ] 13 | ]; -------------------------------------------------------------------------------- /docs/html/cdraw_8h.js: -------------------------------------------------------------------------------- 1 | var cdraw_8h = 2 | [ 3 | [ "D3DTLVERTEX", "structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html", "structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x" ], 4 | [ "_USE_MATH_DEFINES", "cdraw_8h.html#a525335710b53cb064ca56b936120431e", null ], 5 | [ "circle", "cdraw_8h.html#adf47bd5e4dcc8dd5733e75caea9f5a3f", null ], 6 | [ "fill_rect", "cdraw_8h.html#ab72606b75fdfd4737bc2d89454727c35", null ], 7 | [ "init", "cdraw_8h.html#af5c8c073fc2891f7001d0e39740e7be1", null ], 8 | [ "line", "cdraw_8h.html#a21754cba60de73a29edd113d72294a5c", null ], 9 | [ "rect", "cdraw_8h.html#a2f686ced15515df3a91d7a5e3903f77a", null ], 10 | [ "text", "cdraw_8h.html#af835ead25bb5f37ab67fa517aa04fff5", null ] 11 | ]; -------------------------------------------------------------------------------- /docs/html/class_direct3_d9_wrapper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/class_direct3_d9_wrapper.png -------------------------------------------------------------------------------- /docs/html/class_direct3_d_device9_wrapper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/class_direct3_d_device9_wrapper.png -------------------------------------------------------------------------------- /docs/html/class_direct_input8_wrapper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/class_direct_input8_wrapper.png -------------------------------------------------------------------------------- /docs/html/class_direct_input_device8_wrapper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/class_direct_input_device8_wrapper.png -------------------------------------------------------------------------------- /docs/html/classkeypress__detect.js: -------------------------------------------------------------------------------- 1 | var classkeypress__detect = 2 | [ 3 | [ "keypress_detect", "classkeypress__detect.html#ac0ee2b700dc23ea5680de254fb518591", null ], 4 | [ "tick", "classkeypress__detect.html#a2d084243e816b6127ca20c2aa94539e4", null ] 5 | ]; -------------------------------------------------------------------------------- /docs/html/classth07__bullet__proc__hook.js: -------------------------------------------------------------------------------- 1 | var classth07__bullet__proc__hook = 2 | [ 3 | [ "th07_bullet_proc_hook", "classth07__bullet__proc__hook.html#a23af11ca71423d4ed55dad2a220f9989", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/classth07__bullet__proc__hook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth07__bullet__proc__hook.png -------------------------------------------------------------------------------- /docs/html/classth07__player.js: -------------------------------------------------------------------------------- 1 | var classth07__player = 2 | [ 3 | [ "th07_player", "classth07__player.html#a631cf4ce3c0137baed93ba612472ee70", null ], 4 | [ "~th07_player", "classth07__player.html#a5143d288b780be32bee01c1a85fb8afa", null ], 5 | [ "draw", "classth07__player.html#a5a29d5dda7d68e2a726f7f238d376223", null ], 6 | [ "handle_input", "classth07__player.html#ae4593cd432cf291122a656651d6248a9", null ], 7 | [ "on_after_tick", "classth07__player.html#a4d29db8eeb439983f3c4333e3f0a4092", null ], 8 | [ "on_begin_tick", "classth07__player.html#addffd4f7fd835b9ddf9d039fdda5c62e", null ], 9 | [ "on_enable_changed", "classth07__player.html#a5efaed9e11a4da2817c81a76c25344eb", null ], 10 | [ "on_init", "classth07__player.html#a3ff6437485787330c3a8a565e029d13f", null ], 11 | [ "on_tick", "classth07__player.html#aa4812dad37359780321980d6bdc955d8", null ] 12 | ]; -------------------------------------------------------------------------------- /docs/html/classth07__player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth07__player.png -------------------------------------------------------------------------------- /docs/html/classth08__bullet__proc__hook.js: -------------------------------------------------------------------------------- 1 | var classth08__bullet__proc__hook = 2 | [ 3 | [ "th08_bullet_proc_hook", "classth08__bullet__proc__hook.html#acce1d670f9c961f43cb28722efc86e90", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/classth08__bullet__proc__hook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth08__bullet__proc__hook.png -------------------------------------------------------------------------------- /docs/html/classth08__patch__autobomb.js: -------------------------------------------------------------------------------- 1 | var classth08__patch__autobomb = 2 | [ 3 | [ "patch", "classth08__patch__autobomb.html#a2080ad42988fabcba108c83631fb3666", null ], 4 | [ "unpatch", "classth08__patch__autobomb.html#a007b2db5c2c22edd40d605326033ca3f", null ] 5 | ]; -------------------------------------------------------------------------------- /docs/html/classth08__patch__autobomb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth08__patch__autobomb.png -------------------------------------------------------------------------------- /docs/html/classth08__player.js: -------------------------------------------------------------------------------- 1 | var classth08__player = 2 | [ 3 | [ "th08_player", "classth08__player.html#acf63aed549f86b90059c1a99275a3d92", null ], 4 | [ "~th08_player", "classth08__player.html#aad8d87d4b3f6dcb90c0410a56015f104", null ], 5 | [ "draw", "classth08__player.html#af526fc0dc945982a282703925a6a98de", null ], 6 | [ "handle_input", "classth08__player.html#a504ffd80a9786d2c54303a7619900342", null ], 7 | [ "on_after_tick", "classth08__player.html#a22e5fdbbc2e40bee4e5116397a1c96cb", null ], 8 | [ "on_begin_tick", "classth08__player.html#a32be44f1ec4625f205a177ee781b3d12", null ], 9 | [ "on_enable_changed", "classth08__player.html#a012b01fd36ad68813318b0e8a37b8518", null ], 10 | [ "on_init", "classth08__player.html#ac80cbe8fd8401e7df12e7fd7cbc33fd4", null ], 11 | [ "on_tick", "classth08__player.html#a3d93a9f4f916ce7eb101ccaf90d63f79", null ] 12 | ]; -------------------------------------------------------------------------------- /docs/html/classth08__player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth08__player.png -------------------------------------------------------------------------------- /docs/html/classth10__bullet__proc__hook.js: -------------------------------------------------------------------------------- 1 | var classth10__bullet__proc__hook = 2 | [ 3 | [ "th10_bullet_proc_hook", "classth10__bullet__proc__hook.html#a53cfbe5317e8555ea2abac1c74f32262", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/classth10__bullet__proc__hook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth10__bullet__proc__hook.png -------------------------------------------------------------------------------- /docs/html/classth10__player.js: -------------------------------------------------------------------------------- 1 | var classth10__player = 2 | [ 3 | [ "th10_player", "classth10__player.html#a86fe9def15226463d8ec635eb6c136d5", null ], 4 | [ "~th10_player", "classth10__player.html#a6dd256f5b4e165d03d91f90706220dd9", null ], 5 | [ "draw", "classth10__player.html#ac62ea500060d23b527a250f631be73a8", null ], 6 | [ "handle_input", "classth10__player.html#ae34af20ae454b9728e17ca900fe3537a", null ], 7 | [ "on_after_tick", "classth10__player.html#a303474bd0b4e21ea9244313866148638", null ], 8 | [ "on_begin_tick", "classth10__player.html#a342b98c456dbc6655c721005a2cb9eb2", null ], 9 | [ "on_enable_changed", "classth10__player.html#a5c1f011ec0921d55f8ee1c3e01633592", null ], 10 | [ "on_init", "classth10__player.html#a60d1647f99755f47323c620b5aa704b1", null ], 11 | [ "on_tick", "classth10__player.html#ad7ae76ec56f3d10ab0b13b9d13c05c72", null ] 12 | ]; -------------------------------------------------------------------------------- /docs/html/classth10__player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth10__player.png -------------------------------------------------------------------------------- /docs/html/classth15__bullet__proc__hook.js: -------------------------------------------------------------------------------- 1 | var classth15__bullet__proc__hook = 2 | [ 3 | [ "th15_bullet_proc_hook", "classth15__bullet__proc__hook.html#abea0e5d2f25ccf8323af7b82dac7bf49", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/classth15__bullet__proc__hook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth15__bullet__proc__hook.png -------------------------------------------------------------------------------- /docs/html/classth15__patch__autobomb.js: -------------------------------------------------------------------------------- 1 | var classth15__patch__autobomb = 2 | [ 3 | [ "patch", "classth15__patch__autobomb.html#accabd82928f98719a8dc3d98e9b35206", null ], 4 | [ "unpatch", "classth15__patch__autobomb.html#a8b3c261b647246b283822989ee6a4a01", null ] 5 | ]; -------------------------------------------------------------------------------- /docs/html/classth15__patch__autobomb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth15__patch__autobomb.png -------------------------------------------------------------------------------- /docs/html/classth15__player.js: -------------------------------------------------------------------------------- 1 | var classth15__player = 2 | [ 3 | [ "th15_player", "classth15__player.html#ab9dc2d674b6ad8b3f9723285f2705850", null ], 4 | [ "~th15_player", "classth15__player.html#abead556004884a280594a04180291a15", null ], 5 | [ "draw", "classth15__player.html#ab1653b33104348fff94336344c5871b1", null ], 6 | [ "handle_input", "classth15__player.html#a1c2116ca82d35dc61705e91caaf153f0", null ], 7 | [ "on_after_tick", "classth15__player.html#af256600f623eb1a94a1b485d8449ea4b", null ], 8 | [ "on_begin_tick", "classth15__player.html#a57710b97982dc4ef0eb3234fb91a45e5", null ], 9 | [ "on_enable_changed", "classth15__player.html#ae23d50db44485874d2fb1ad3f5462066", null ], 10 | [ "on_init", "classth15__player.html#a572ab5cf80a3bdef25ba685b5d121a70", null ], 11 | [ "on_tick", "classth15__player.html#afdc07b4cecf2c63b93f8c3570a2af1c0", null ] 12 | ]; -------------------------------------------------------------------------------- /docs/html/classth15__player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth15__player.png -------------------------------------------------------------------------------- /docs/html/classth__algorithm.js: -------------------------------------------------------------------------------- 1 | var classth__algorithm = 2 | [ 3 | [ "th_algorithm", "classth__algorithm.html#a7f0f74c3ee456896dd6bc5a23802ce51", null ], 4 | [ "~th_algorithm", "classth__algorithm.html#a744a959f7794a2b906d9ead7caf98139", null ], 5 | [ "handle_input", "classth__algorithm.html#a5e0490a1a66d716f76ba90cd698d8c6d", null ], 6 | [ "on_begin", "classth__algorithm.html#a7e8435272447e7ba4e91d0da92aeb926", null ], 7 | [ "on_tick", "classth__algorithm.html#a8087bcc8724705d98fe035544314e72c", null ], 8 | [ "visualize", "classth__algorithm.html#abdc2cf2e37116c90f5b67622a2302988", null ], 9 | [ "player", "classth__algorithm.html#a79d3ddf1feb73bf4ef019ec7a8809444", null ] 10 | ]; -------------------------------------------------------------------------------- /docs/html/classth__algorithm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth__algorithm.png -------------------------------------------------------------------------------- /docs/html/classth__ann__algo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth__ann__algo.png -------------------------------------------------------------------------------- /docs/html/classth__d3d9__hook.js: -------------------------------------------------------------------------------- 1 | var classth__d3d9__hook = 2 | [ 3 | [ "th_d3d9_hook", "classth__d3d9__hook.html#a7d3f100cf3d7e610ce4d5e3a50525315", null ], 4 | [ "~th_d3d9_hook", "classth__d3d9__hook.html#a78e3a03d97ede51ce23d00aed6609a9f", null ], 5 | [ "d3ddev9_wrapper", "classth__d3d9__hook.html#ad57f2331859099c4c6ddc929108c5e65", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/html/classth__d3d9__hook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth__d3d9__hook.png -------------------------------------------------------------------------------- /docs/html/classth__di8__hook.js: -------------------------------------------------------------------------------- 1 | var classth__di8__hook = 2 | [ 3 | [ "th_di8_hook", "classth__di8__hook.html#ad0e3644b8d74e5454e5e625418e4ef84", null ], 4 | [ "~th_di8_hook", "classth__di8__hook.html#ac33c5fe8e2cf6d6cd0b9c3a58d3a0901", null ], 5 | [ "get_vk_state", "classth__di8__hook.html#a6280d04423294392bfb6cfb3d31bc713", null ], 6 | [ "reset_vk_state", "classth__di8__hook.html#ae1da07d002ecb8a9c168c80713548143", null ], 7 | [ "set_vk_state", "classth__di8__hook.html#ab2dd69b127556608197b4716d5bd6edd", null ], 8 | [ "DirectInput8", "classth__di8__hook.html#acd5eaf96d1bbf7b8fb33769095382cd5", null ] 9 | ]; -------------------------------------------------------------------------------- /docs/html/classth__di8__hook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth__di8__hook.png -------------------------------------------------------------------------------- /docs/html/classth__hook.js: -------------------------------------------------------------------------------- 1 | var classth__hook = 2 | [ 3 | [ "th_hook", "classth__hook.html#ace1ed2af76a04dbe5ca501d7bd6de9d7", null ], 4 | [ "~th_hook", "classth__hook.html#addf5d8d9cb677758ddafb3e7181d53e5", null ], 5 | [ "player", "classth__hook.html#a875ee06c4b527cd3b2ef7585faf7580f", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/html/classth__hook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth__hook.png -------------------------------------------------------------------------------- /docs/html/classth__patch.js: -------------------------------------------------------------------------------- 1 | var classth__patch = 2 | [ 3 | [ "th_patch", "classth__patch.html#ac2b715fea24a7d5497ff05f083e6e177", null ], 4 | [ "~th_patch", "classth__patch.html#a174dd6303bf68305819e07a16de1f637", null ], 5 | [ "patch", "classth__patch.html#a9a03f943af7f454c35a0e099e56cf863", null ], 6 | [ "unpatch", "classth__patch.html#a1ced74e10d857a0c5a03d6ee2e85f919", null ] 7 | ]; -------------------------------------------------------------------------------- /docs/html/classth__patch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth__patch.png -------------------------------------------------------------------------------- /docs/html/classth__player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth__player.png -------------------------------------------------------------------------------- /docs/html/classth__vector__algo.js: -------------------------------------------------------------------------------- 1 | var classth__vector__algo = 2 | [ 3 | [ "th_vector_algo", "classth__vector__algo.html#a61e649fde2ee1defd7fe35dea850ced3", null ], 4 | [ "~th_vector_algo", "classth__vector__algo.html#a3818139577e8101a78530429e26ba97b", null ], 5 | [ "on_tick", "classth__vector__algo.html#ac477fa370b5d2bf3bbdde47e4704ccee", null ], 6 | [ "visualize", "classth__vector__algo.html#a96394c3954f693f41b44f1a7ac086deb", null ] 7 | ]; -------------------------------------------------------------------------------- /docs/html/classth__vector__algo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth__vector__algo.png -------------------------------------------------------------------------------- /docs/html/classth__vo__algo.js: -------------------------------------------------------------------------------- 1 | var classth__vo__algo = 2 | [ 3 | [ "th_vo_algo", "classth__vo__algo.html#a7828167ba062792b91e9632245e71886", null ], 4 | [ "th_vo_algo", "classth__vo__algo.html#a5e2bd96578ce487453f4c23deb7084db", null ], 5 | [ "~th_vo_algo", "classth__vo__algo.html#aaeaa326ac9a7fc1080f96e93e0a388b8", null ], 6 | [ "on_begin", "classth__vo__algo.html#a12dc3f0eec02a4751b4e3355bc25c0ee", null ], 7 | [ "on_tick", "classth__vo__algo.html#a2f533f347eff57683b9a65b36db4d63b", null ], 8 | [ "visualize", "classth__vo__algo.html#a2c1a4f104cb80fae0c4e6213664471be", null ] 9 | ]; -------------------------------------------------------------------------------- /docs/html/classth__vo__algo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/classth__vo__algo.png -------------------------------------------------------------------------------- /docs/html/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/closed.png -------------------------------------------------------------------------------- /docs/html/color_8cpp.js: -------------------------------------------------------------------------------- 1 | var color_8cpp = 2 | [ 3 | [ "hsv2d3d", "color_8cpp.html#a26d82f017e2594b3207126269a3dee6a", null ], 4 | [ "hsv2rgb", "color_8cpp.html#a4a66ca1d47428638881abe32bfd7affc", null ], 5 | [ "rgb2hsv", "color_8cpp.html#aa9504068d05a6b4a9f772dbfa9d0e0ca", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/html/color_8h.js: -------------------------------------------------------------------------------- 1 | var color_8h = 2 | [ 3 | [ "rgb", "structrgb.html", "structrgb" ], 4 | [ "hsv", "structhsv.html", "structhsv" ], 5 | [ "D3DCOLOR_HSV", "color_8h.html#ae4f0886db5ba082c744b83d9df578b37", null ], 6 | [ "hsv2d3d", "color_8h.html#a26d82f017e2594b3207126269a3dee6a", null ], 7 | [ "hsv2rgb", "color_8h.html#a4a66ca1d47428638881abe32bfd7affc", null ], 8 | [ "rgb2hsv", "color_8h.html#aa9504068d05a6b4a9f772dbfa9d0e0ca", null ] 9 | ]; -------------------------------------------------------------------------------- /docs/html/detour_8cpp.js: -------------------------------------------------------------------------------- 1 | var detour_8cpp = 2 | [ 3 | [ "DetourFunction", "detour_8cpp.html#af2f884b66b2be0c557e2572c5319b1d7", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/detour_8h.js: -------------------------------------------------------------------------------- 1 | var detour_8h = 2 | [ 3 | [ "DetourFunction", "detour_8h.html#af2f884b66b2be0c557e2572c5319b1d7", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/di8__input__overlay_8cpp.js: -------------------------------------------------------------------------------- 1 | var di8__input__overlay_8cpp = 2 | [ 3 | [ "DI8_Overlay_RenderInput", "di8__input__overlay_8cpp.html#af756cd87ef6e833b961075d63f0184b2", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/di8__input__overlay_8h.js: -------------------------------------------------------------------------------- 1 | var di8__input__overlay_8h = 2 | [ 3 | [ "key_graphic", "structkey__graphic.html", "structkey__graphic" ], 4 | [ "DI8_Overlay_RenderInput", "di8__input__overlay_8h.html#af756cd87ef6e833b961075d63f0184b2", null ], 5 | [ "InputOverlayUnitSize", "di8__input__overlay_8h.html#a2e790321686963411a401e763d97f660", null ], 6 | [ "kg_MonitoredKeys", "di8__input__overlay_8h.html#aa6e1b088a629eb5d202ccae8f62306b8", null ] 7 | ]; -------------------------------------------------------------------------------- /docs/html/dir_086a4d0d399a1795c6b8608aa7d216a9.js: -------------------------------------------------------------------------------- 1 | var dir_086a4d0d399a1795c6b8608aa7d216a9 = 2 | [ 3 | [ "th08_patch_autobomb.cpp", "th08__patch__autobomb_8cpp.html", null ], 4 | [ "th08_patch_autobomb.h", "th08__patch__autobomb_8h.html", [ 5 | [ "th08_patch_autobomb", "classth08__patch__autobomb.html", "classth08__patch__autobomb" ] 6 | ] ], 7 | [ "th15_patch_autobomb.cpp", "th15__patch__autobomb_8cpp.html", null ], 8 | [ "th15_patch_autobomb.h", "th15__patch__autobomb_8h.html", [ 9 | [ "th15_patch_autobomb", "classth15__patch__autobomb.html", "classth15__patch__autobomb" ] 10 | ] ], 11 | [ "th_patch.h", "th__patch_8h.html", [ 12 | [ "th_patch", "classth__patch.html", "classth__patch" ] 13 | ] ] 14 | ]; -------------------------------------------------------------------------------- /docs/html/dir_0c92724799589350579794e3ed39cad1.js: -------------------------------------------------------------------------------- 1 | var dir_0c92724799589350579794e3ed39cad1 = 2 | [ 3 | [ "th_config.cpp", "th__config_8cpp.html", "th__config_8cpp" ], 4 | [ "th_config.h", "th__config_8h.html", "th__config_8h" ] 5 | ]; -------------------------------------------------------------------------------- /docs/html/dir_221c50254540840849dfe03f47d22712.js: -------------------------------------------------------------------------------- 1 | var dir_221c50254540840849dfe03f47d22712 = 2 | [ 3 | [ "algo", "dir_7d2536265b07d846b4db00396a8cff89.html", "dir_7d2536265b07d846b4db00396a8cff89" ], 4 | [ "config", "dir_0c92724799589350579794e3ed39cad1.html", "dir_0c92724799589350579794e3ed39cad1" ], 5 | [ "control", "dir_e7fc7118ca8149a717f12eaf82e3889a.html", "dir_e7fc7118ca8149a717f12eaf82e3889a" ], 6 | [ "directx", "dir_5d66a73ad6fb6d492a6dd5d2d1bfc365.html", "dir_5d66a73ad6fb6d492a6dd5d2d1bfc365" ], 7 | [ "gfx", "dir_a88eb86107679b8028fdf1463d680b8f.html", "dir_a88eb86107679b8028fdf1463d680b8f" ], 8 | [ "hook", "dir_c05156486c5d04265a597106d50d4c25.html", "dir_c05156486c5d04265a597106d50d4c25" ], 9 | [ "info", "dir_8e24b369c708e3edb6f4687e198272ab.html", "dir_8e24b369c708e3edb6f4687e198272ab" ], 10 | [ "patch", "dir_086a4d0d399a1795c6b8608aa7d216a9.html", "dir_086a4d0d399a1795c6b8608aa7d216a9" ], 11 | [ "test", "dir_8a4dd15a0f0f529580e9ef5218d5fbde.html", "dir_8a4dd15a0f0f529580e9ef5218d5fbde" ], 12 | [ "util", "dir_a708ee8c3761297af6b3b07a54bb0d86.html", "dir_a708ee8c3761297af6b3b07a54bb0d86" ], 13 | [ "stdafx.cpp", "stdafx_8cpp.html", null ], 14 | [ "stdafx.h", "stdafx_8h.html", "stdafx_8h" ], 15 | [ "twinhook.cpp", "twinhook_8cpp.html", "twinhook_8cpp" ] 16 | ]; -------------------------------------------------------------------------------- /docs/html/dir_5d66a73ad6fb6d492a6dd5d2d1bfc365.js: -------------------------------------------------------------------------------- 1 | var dir_5d66a73ad6fb6d492a6dd5d2d1bfc365 = 2 | [ 3 | [ "ID3D9_Wrapper.cpp", "_i_d3_d9___wrapper_8cpp.html", null ], 4 | [ "ID3D9_Wrapper.h", "_i_d3_d9___wrapper_8h.html", [ 5 | [ "Direct3D9Hook", "struct_direct3_d9_hook.html", "struct_direct3_d9_hook" ], 6 | [ "Direct3D9Wrapper", "class_direct3_d9_wrapper.html", "class_direct3_d9_wrapper" ] 7 | ] ], 8 | [ "ID3D9Device_Wrapper.cpp", "_i_d3_d9_device___wrapper_8cpp.html", null ], 9 | [ "ID3D9Device_Wrapper.h", "_i_d3_d9_device___wrapper_8h.html", [ 10 | [ "Direct3DDevice9Wrapper", "class_direct3_d_device9_wrapper.html", "class_direct3_d_device9_wrapper" ] 11 | ] ], 12 | [ "IDI8A_Wrapper.cpp", "_i_d_i8_a___wrapper_8cpp.html", null ], 13 | [ "IDI8A_Wrapper.h", "_i_d_i8_a___wrapper_8h.html", "_i_d_i8_a___wrapper_8h" ], 14 | [ "IDI8ADevice_Wrapper.cpp", "_i_d_i8_a_device___wrapper_8cpp.html", null ], 15 | [ "IDI8ADevice_Wrapper.h", "_i_d_i8_a_device___wrapper_8h.html", [ 16 | [ "DirectInputDevice8Wrapper", "class_direct_input_device8_wrapper.html", "class_direct_input_device8_wrapper" ] 17 | ] ] 18 | ]; -------------------------------------------------------------------------------- /docs/html/dir_7d2536265b07d846b4db00396a8cff89.js: -------------------------------------------------------------------------------- 1 | var dir_7d2536265b07d846b4db00396a8cff89 = 2 | [ 3 | [ "th_algorithm.h", "th__algorithm_8h.html", [ 4 | [ "th_algorithm", "classth__algorithm.html", "classth__algorithm" ] 5 | ] ], 6 | [ "th_ann_algo.cpp", "th__ann__algo_8cpp.html", null ], 7 | [ "th_ann_algo.h", "th__ann__algo_8h.html", null ], 8 | [ "th_vector_algo.cpp", "th__vector__algo_8cpp.html", null ], 9 | [ "th_vector_algo.h", "th__vector__algo_8h.html", "th__vector__algo_8h" ], 10 | [ "th_vo_algo.cpp", "th__vo__algo_8cpp.html", null ], 11 | [ "th_vo_algo.h", "th__vo__algo_8h.html", "th__vo__algo_8h" ] 12 | ]; -------------------------------------------------------------------------------- /docs/html/dir_8a4dd15a0f0f529580e9ef5218d5fbde.js: -------------------------------------------------------------------------------- 1 | var dir_8a4dd15a0f0f529580e9ef5218d5fbde = 2 | [ 3 | [ "vec2_test.cpp", "vec2__test_8cpp.html", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/dir_8e24b369c708e3edb6f4687e198272ab.js: -------------------------------------------------------------------------------- 1 | var dir_8e24b369c708e3edb6f4687e198272ab = 2 | [ 3 | [ "keypress_detect.cpp", "keypress__detect_8cpp.html", null ], 4 | [ "keypress_detect.h", "keypress__detect_8h.html", [ 5 | [ "keypress_detect", "classkeypress__detect.html", "classkeypress__detect" ] 6 | ] ] 7 | ]; -------------------------------------------------------------------------------- /docs/html/dir_a708ee8c3761297af6b3b07a54bb0d86.js: -------------------------------------------------------------------------------- 1 | var dir_a708ee8c3761297af6b3b07a54bb0d86 = 2 | [ 3 | [ "cdraw.cpp", "cdraw_8cpp.html", "cdraw_8cpp" ], 4 | [ "cdraw.h", "cdraw_8h.html", "cdraw_8h" ], 5 | [ "color.cpp", "color_8cpp.html", "color_8cpp" ], 6 | [ "color.h", "color_8h.html", "color_8h" ], 7 | [ "detour.cpp", "detour_8cpp.html", "detour_8cpp" ], 8 | [ "detour.h", "detour_8h.html", "detour_8h" ], 9 | [ "logfs.cpp", "logfs_8cpp.html", "logfs_8cpp" ], 10 | [ "logfs.h", "logfs_8h.html", "logfs_8h" ], 11 | [ "vec2.cpp", "vec2_8cpp.html", "vec2_8cpp" ], 12 | [ "vec2.h", "vec2_8h.html", "vec2_8h" ] 13 | ]; -------------------------------------------------------------------------------- /docs/html/dir_a88eb86107679b8028fdf1463d680b8f.js: -------------------------------------------------------------------------------- 1 | var dir_a88eb86107679b8028fdf1463d680b8f = 2 | [ 3 | [ "di8_input_overlay.cpp", "di8__input__overlay_8cpp.html", "di8__input__overlay_8cpp" ], 4 | [ "di8_input_overlay.h", "di8__input__overlay_8h.html", "di8__input__overlay_8h" ] 5 | ]; -------------------------------------------------------------------------------- /docs/html/dir_e7fc7118ca8149a717f12eaf82e3889a.js: -------------------------------------------------------------------------------- 1 | var dir_e7fc7118ca8149a717f12eaf82e3889a = 2 | [ 3 | [ "th07_player.cpp", "th07__player_8cpp.html", "th07__player_8cpp" ], 4 | [ "th07_player.h", "th07__player_8h.html", [ 5 | [ "th07_player", "classth07__player.html", "classth07__player" ] 6 | ] ], 7 | [ "th08_player.cpp", "th08__player_8cpp.html", "th08__player_8cpp" ], 8 | [ "th08_player.h", "th08__player_8h.html", [ 9 | [ "th08_player", "classth08__player.html", "classth08__player" ] 10 | ] ], 11 | [ "th10_player.cpp", "th10__player_8cpp.html", "th10__player_8cpp" ], 12 | [ "th10_player.h", "th10__player_8h.html", [ 13 | [ "th10_player", "classth10__player.html", "classth10__player" ] 14 | ] ], 15 | [ "th15_player.cpp", "th15__player_8cpp.html", "th15__player_8cpp" ], 16 | [ "th15_player.h", "th15__player_8h.html", [ 17 | [ "th15_player", "classth15__player.html", "classth15__player" ] 18 | ] ], 19 | [ "th_player.h", "th__player_8h.html", [ 20 | [ "entity", "structentity.html", "structentity" ], 21 | [ "laser", "structlaser.html", "structlaser" ], 22 | [ "gs_addr", "structgs__addr.html", "structgs__addr" ], 23 | [ "th_kbd_state", "unionth__kbd__state.html", "unionth__kbd__state" ], 24 | [ "th_player", "classth__player.html", "classth__player" ] 25 | ] ] 26 | ]; -------------------------------------------------------------------------------- /docs/html/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/doc.png -------------------------------------------------------------------------------- /docs/html/doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/doxygen.png -------------------------------------------------------------------------------- /docs/html/files_dup.js: -------------------------------------------------------------------------------- 1 | var files_dup = 2 | [ 3 | [ "twinhook", "dir_221c50254540840849dfe03f47d22712.html", "dir_221c50254540840849dfe03f47d22712" ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/folderclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/folderclosed.png -------------------------------------------------------------------------------- /docs/html/folderopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/folderopen.png -------------------------------------------------------------------------------- /docs/html/functions_dup.js: -------------------------------------------------------------------------------- 1 | var functions_dup = 2 | [ 3 | [ "a", "functions.html", null ], 4 | [ "b", "functions_b.html", null ], 5 | [ "c", "functions_c.html", null ], 6 | [ "d", "functions_d.html", null ], 7 | [ "e", "functions_e.html", null ], 8 | [ "f", "functions_f.html", null ], 9 | [ "g", "functions_g.html", null ], 10 | [ "h", "functions_h.html", null ], 11 | [ "i", "functions_i.html", null ], 12 | [ "k", "functions_k.html", null ], 13 | [ "l", "functions_l.html", null ], 14 | [ "m", "functions_m.html", null ], 15 | [ "n", "functions_n.html", null ], 16 | [ "o", "functions_o.html", null ], 17 | [ "p", "functions_p.html", null ], 18 | [ "q", "functions_q.html", null ], 19 | [ "r", "functions_r.html", null ], 20 | [ "s", "functions_s.html", null ], 21 | [ "t", "functions_t.html", null ], 22 | [ "u", "functions_u.html", null ], 23 | [ "v", "functions_v.html", null ], 24 | [ "w", "functions_w.html", null ], 25 | [ "x", "functions_x.html", null ], 26 | [ "y", "functions_y.html", null ], 27 | [ "z", "functions_z.html", null ], 28 | [ "~", "functions_0x7e.html", null ] 29 | ]; -------------------------------------------------------------------------------- /docs/html/functions_func.js: -------------------------------------------------------------------------------- 1 | var functions_func = 2 | [ 3 | [ "a", "functions_func.html", null ], 4 | [ "b", "functions_func_b.html", null ], 5 | [ "c", "functions_func_c.html", null ], 6 | [ "d", "functions_func_d.html", null ], 7 | [ "e", "functions_func_e.html", null ], 8 | [ "f", "functions_func_f.html", null ], 9 | [ "g", "functions_func_g.html", null ], 10 | [ "h", "functions_func_h.html", null ], 11 | [ "i", "functions_func_i.html", null ], 12 | [ "k", "functions_func_k.html", null ], 13 | [ "l", "functions_func_l.html", null ], 14 | [ "m", "functions_func_m.html", null ], 15 | [ "n", "functions_func_n.html", null ], 16 | [ "o", "functions_func_o.html", null ], 17 | [ "p", "functions_func_p.html", null ], 18 | [ "q", "functions_func_q.html", null ], 19 | [ "r", "functions_func_r.html", null ], 20 | [ "s", "functions_func_s.html", null ], 21 | [ "t", "functions_func_t.html", null ], 22 | [ "u", "functions_func_u.html", null ], 23 | [ "v", "functions_func_v.html", null ], 24 | [ "w", "functions_func_w.html", null ], 25 | [ "z", "functions_func_z.html", null ], 26 | [ "~", "functions_func_0x7e.html", null ] 27 | ]; -------------------------------------------------------------------------------- /docs/html/logfs_8cpp.js: -------------------------------------------------------------------------------- 1 | var logfs_8cpp = 2 | [ 3 | [ "logm", "logfs_8cpp.html#a625c08a01520fa2d7ba613e771ca707f", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/logfs_8h.js: -------------------------------------------------------------------------------- 1 | var logfs_8h = 2 | [ 3 | [ "ASSERT", "logfs_8h.html#a5d5f62b566bd3a77d449fccb7b1a9656", null ], 4 | [ "LOG", "logfs_8h.html#a388edf12256bf73c3a8ee9734c3bd841", null ], 5 | [ "STRINGIFY", "logfs_8h.html#a6df1d22fb5f09eccc23b9f399670cfd7", null ], 6 | [ "TOSTRING", "logfs_8h.html#a9063e80f8777300c93afde6e6f4c9cea", null ], 7 | [ "logm", "logfs_8h.html#a625c08a01520fa2d7ba613e771ca707f", null ] 8 | ]; -------------------------------------------------------------------------------- /docs/html/namespacecdraw.js: -------------------------------------------------------------------------------- 1 | var namespacecdraw = 2 | [ 3 | [ "D3DTLVERTEX", "structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html", "structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x" ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/namespaces_dup.js: -------------------------------------------------------------------------------- 1 | var namespaces_dup = 2 | [ 3 | [ "cdraw", "namespacecdraw.html", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/nav_f.png -------------------------------------------------------------------------------- /docs/html/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/nav_g.png -------------------------------------------------------------------------------- /docs/html/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/nav_h.png -------------------------------------------------------------------------------- /docs/html/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/open.png -------------------------------------------------------------------------------- /docs/html/search/all_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_5f_5fasm',['__asm',['../th15__bullet__proc__hook_8cpp.html#ad101de28d3c26b1657e7b4bbbc30b0c5',1,'th15_bullet_proc_hook.cpp']]], 4 | ['_5f_5fdeclspec',['__declspec',['../th08__bullet__proc__hook_8cpp.html#afe52ebdc9b424ed978fafc9c391c27f8',1,'__declspec(naked) int __fastcall sub_410A70_Hook(int a1: th08_bullet_proc_hook.cpp'],['../th15__bullet__proc__hook_8cpp.html#a1ec9d37009db7b2325c69d1e9e0ea1ec',1,'__declspec(naked) __stdcall sub_455D00_hook(int pPos: th15_bullet_proc_hook.cpp']]], 5 | ['_5fuse_5fmath_5fdefines',['_USE_MATH_DEFINES',['../cdraw_8h.html#a525335710b53cb064ca56b936120431e',1,'cdraw.h']]], 6 | ['_5fwin32_5fwinnt',['_WIN32_WINNT',['../stdafx_8h.html#ac50762666aa00bd3a4308158510f1748',1,'stdafx.h']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/html/search/all_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_10.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_10.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['quadratic_5fsolve',['quadratic_solve',['../classvec2.html#a353e50ea8ba6ad4ad3e12f79076835e3',1,'vec2']]], 4 | ['queryinterface',['QueryInterface',['../class_direct3_d9_wrapper.html#abd10c23768498b0ff2bcff59d90d3467',1,'Direct3D9Wrapper::QueryInterface()'],['../class_direct3_d_device9_wrapper.html#aa7cea21efcb038f3e27d18fc2ed1f00b',1,'Direct3DDevice9Wrapper::QueryInterface()'],['../class_direct_input8_wrapper.html#ae0e63ab6ad09ace8e635db21ad90306e',1,'DirectInput8Wrapper::QueryInterface()'],['../class_direct_input_device8_wrapper.html#a52a9cb6dc4d7ccf9deb9344dfb424870',1,'DirectInputDevice8Wrapper::QueryInterface()']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/all_11.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_12.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_13.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_14.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_14.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['unacquire',['Unacquire',['../class_direct_input_device8_wrapper.html#a32480e908c21164904a4a3f3ab01a94d',1,'DirectInputDevice8Wrapper']]], 4 | ['unit',['unit',['../classvec2.html#a21d8ba477e13a69ace4e3baaeaaa390e',1,'vec2']]], 5 | ['unpatch',['unpatch',['../classth08__patch__autobomb.html#a007b2db5c2c22edd40d605326033ca3f',1,'th08_patch_autobomb::unpatch()'],['../classth15__patch__autobomb.html#a8b3c261b647246b283822989ee6a4a01',1,'th15_patch_autobomb::unpatch()'],['../classth__patch.html#a1ced74e10d857a0c5a03d6ee2e85f919',1,'th_patch::unpatch()']]], 6 | ['up',['up',['../unionth__kbd__state.html#a82a89b7a5fd2bad7e435909ae57e02ac',1,'th_kbd_state']]], 7 | ['updatesurface',['UpdateSurface',['../class_direct3_d_device9_wrapper.html#a82a011b90cf9548fbae090b553660612',1,'Direct3DDevice9Wrapper']]], 8 | ['updatetexture',['UpdateTexture',['../class_direct3_d_device9_wrapper.html#ad5bd255921869de8fc2dde0e5ad22c3d',1,'Direct3DDevice9Wrapper']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /docs/html/search/all_15.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_16.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['w',['w',['../structkey__graphic.html#a3decdfadc522f8e721dc6d1430ae35a2',1,'key_graphic']]], 4 | ['will_5fcollide_5faabb',['will_collide_aabb',['../classvec2.html#aca55a5ab5cb9190a947e3fc0cc877a2a',1,'vec2']]], 5 | ['will_5fcollide_5fcircle',['will_collide_circle',['../classvec2.html#a025717ad4e29b94931d78d97ac11e467',1,'vec2']]], 6 | ['will_5fcollide_5fcircle_5fline',['will_collide_circle_line',['../classvec2.html#a996140b70c11aa6995d4f29f1d857f1d',1,'vec2']]], 7 | ['will_5fexit_5faabb',['will_exit_aabb',['../classvec2.html#ac897b0838cff84a5b7f4c1f948bdaadf',1,'vec2']]], 8 | ['window_5fheight',['WINDOW_HEIGHT',['../structth__param.html#ae3b8ed4e76b15653c0e5c6d8fb427d8a',1,'th_param']]], 9 | ['window_5fwidth',['WINDOW_WIDTH',['../structth__param.html#a60777100ed378e6cced0f65db9878b16',1,'th_param']]], 10 | ['writeeffecttofile',['WriteEffectToFile',['../class_direct_input_device8_wrapper.html#a3f128b09d185125f8c5fdc420b65770b',1,'DirectInputDevice8Wrapper']]] 11 | ]; 12 | -------------------------------------------------------------------------------- /docs/html/search/all_17.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['x',['x',['../structkey__graphic.html#a49853c95f6e154874716b4b3c4d0c9c5',1,'key_graphic::x()'],['../structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html#a459c18601a5a0dfca5002d7a46f21bdf',1,'cdraw::D3DTLVERTEX::x()'],['../classvec2.html#a002d3519d48fe3cd79729b5b0ded74bf',1,'vec2::x()']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/all_18.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['y',['Y',['../class_direct3_d_device9_wrapper.html#a6e1a76b858253e22ec325a209a12dd94',1,'Direct3DDevice9Wrapper::Y()'],['../structkey__graphic.html#a98ea578a1b13035de753d536372361f1',1,'key_graphic::y()'],['../structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html#aed03945b724b0809cfea46fbd1d76385',1,'cdraw::D3DTLVERTEX::y()'],['../classvec2.html#a6d28b12b511da692550fc9d37b4e9b1d',1,'vec2::y()']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/all_19.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['z',['z',['../structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html#a54cbf75d836f192b1aca943e35ce5ad2',1,'cdraw::D3DTLVERTEX']]], 4 | ['zero',['zero',['../classvec2.html#aaffdc2a12e77c504e8da62156ff0a296',1,'vec2']]], 5 | ['zero_5fepsilon',['ZERO_EPSILON',['../vec2_8h.html#af0dae59815de217cff678ef4c8fec416',1,'vec2.h']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/all_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['fill_5frect',['fill_rect',['../namespacecdraw.html#ab72606b75fdfd4737bc2d89454727c35',1,'cdraw']]], 4 | ['finddevice',['FindDevice',['../class_direct_input8_wrapper.html#a6b3738a5bdc40442e099da77c2b85190',1,'DirectInput8Wrapper']]], 5 | ['flags',['Flags',['../class_direct3_d_device9_wrapper.html#a981c271e8076c5e6339fc4897d0e2eec',1,'Direct3DDevice9Wrapper::Flags()'],['../class_direct3_d_device9_wrapper.html#a9d0fd6d951826b40d9ae521285c3ecb8',1,'Direct3DDevice9Wrapper::Flags()']]], 6 | ['focus_5fforce_5fthreshold',['FOCUS_FORCE_THRESHOLD',['../th__vector__algo_8h.html#aabe45fb53ae2d1da46ca2d1b81758b97',1,'th_vector_algo.h']]], 7 | ['format',['Format',['../class_direct3_d9_wrapper.html#aa7c07f726ca2d5c2d888e643fed89d78',1,'Direct3D9Wrapper']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /docs/html/search/all_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['kbd_5fstate',['kbd_state',['../structgs__addr.html#a64eed5503d0891b16443c8b5ee8aa8ac',1,'gs_addr']]], 4 | ['key_5fgraphic',['key_graphic',['../structkey__graphic.html',1,'']]], 5 | ['keypress_5fdetect',['keypress_detect',['../classkeypress__detect.html',1,'keypress_detect'],['../classkeypress__detect.html#ac0ee2b700dc23ea5680de254fb518591',1,'keypress_detect::keypress_detect()']]], 6 | ['keypress_5fdetect_2ecpp',['keypress_detect.cpp',['../keypress__detect_8cpp.html',1,'']]], 7 | ['keypress_5fdetect_2eh',['keypress_detect.h',['../keypress__detect_8h.html',1,'']]], 8 | ['keys',['keys',['../unionth__kbd__state.html#a1cbd0631689853c74c9542e21c8a6123',1,'th_kbd_state']]], 9 | ['kg_5fmonitoredkeys',['kg_MonitoredKeys',['../di8__input__overlay_8h.html#aa6e1b088a629eb5d202ccae8f62306b8',1,'di8_input_overlay.h']]], 10 | ['kpd',['kpd',['../classth__player.html#ac83b8d217a30089044882c8194e10c04',1,'th_player']]] 11 | ]; 12 | -------------------------------------------------------------------------------- /docs/html/search/all_b.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_c.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['m_5fstride',['m_Stride',['../class_direct3_d_device9_wrapper.html#aec6e4b401e4a3f90ecdb7b8b785e2076',1,'Direct3DDevice9Wrapper']]], 4 | ['maxv',['maxv',['../classvec2.html#a5ba085702d67a73eeab68cf973599cde',1,'vec2']]], 5 | ['me',['me',['../structentity.html#a0e3803ed734f4727d606ed89c7ae7392',1,'entity']]], 6 | ['minv',['minv',['../classvec2.html#a05175cfbb86a0ccff1db61374d6b5434',1,'vec2']]], 7 | ['multiplytransform',['MultiplyTransform',['../class_direct3_d_device9_wrapper.html#a30e626f996282fb4dda560403b7da677',1,'Direct3DDevice9Wrapper']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /docs/html/search/all_d.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['nan',['nan',['../classvec2.html#a53147487a55d627f2cfe4e5ef7f3f001',1,'vec2']]], 4 | ['nominmax',['NOMINMAX',['../stdafx_8h.html#a9f918755b601cf4bffca775992e6fb90',1,'stdafx.h']]], 5 | ['normal',['normal',['../classvec2.html#a89d01ac84cb7644466ef9b9ccb24b379',1,'vec2']]], 6 | ['normalize',['normalize',['../classvec2.html#a4b8c6b2e6a7cb804e1cc4211edadbcfa',1,'vec2']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/html/search/all_e.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/all_f.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 18 |
Searching...
19 |
No Matches
20 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/html/search/classes_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['d3dtlvertex',['D3DTLVERTEX',['../structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html',1,'cdraw']]], 4 | ['direct3d9hook',['Direct3D9Hook',['../struct_direct3_d9_hook.html',1,'']]], 5 | ['direct3d9wrapper',['Direct3D9Wrapper',['../class_direct3_d9_wrapper.html',1,'']]], 6 | ['direct3ddevice9wrapper',['Direct3DDevice9Wrapper',['../class_direct3_d_device9_wrapper.html',1,'']]], 7 | ['directinput8hook',['DirectInput8Hook',['../struct_direct_input8_hook.html',1,'']]], 8 | ['directinput8wrapper',['DirectInput8Wrapper',['../class_direct_input8_wrapper.html',1,'']]], 9 | ['directinputdevice8wrapper',['DirectInputDevice8Wrapper',['../class_direct_input_device8_wrapper.html',1,'']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /docs/html/search/classes_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['entity',['entity',['../structentity.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/classes_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['gs_5faddr',['gs_addr',['../structgs__addr.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/classes_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['hsv',['hsv',['../structhsv.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/classes_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['key_5fgraphic',['key_graphic',['../structkey__graphic.html',1,'']]], 4 | ['keypress_5fdetect',['keypress_detect',['../classkeypress__detect.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/classes_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['laser',['laser',['../structlaser.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/classes_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['rgb',['rgb',['../structrgb.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/classes_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['vec2',['vec2',['../classvec2.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/classes_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['vec2',['vec2',['../classvec2.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/search/close.png -------------------------------------------------------------------------------- /docs/html/search/defines_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_5fuse_5fmath_5fdefines',['_USE_MATH_DEFINES',['../cdraw_8h.html#a525335710b53cb064ca56b936120431e',1,'cdraw.h']]], 4 | ['_5fwin32_5fwinnt',['_WIN32_WINNT',['../stdafx_8h.html#ac50762666aa00bd3a4308158510f1748',1,'stdafx.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/defines_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['assert',['ASSERT',['../logfs_8h.html#a5d5f62b566bd3a77d449fccb7b1a9656',1,'logfs.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/defines_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['b',['B',['../th07__player_8cpp.html#a111da81ae5883147168bbb8366377b10',1,'B(): th07_player.cpp'],['../th08__player_8cpp.html#a111da81ae5883147168bbb8366377b10',1,'B(): th08_player.cpp'],['../th10__player_8cpp.html#a111da81ae5883147168bbb8366377b10',1,'B(): th10_player.cpp'],['../th15__player_8cpp.html#a111da81ae5883147168bbb8366377b10',1,'B(): th15_player.cpp']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/defines_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['d',['D',['../th07__player_8cpp.html#af316c33cc298530f245e8b55330e86b5',1,'D(): th07_player.cpp'],['../th08__player_8cpp.html#af316c33cc298530f245e8b55330e86b5',1,'D(): th08_player.cpp'],['../th10__player_8cpp.html#af316c33cc298530f245e8b55330e86b5',1,'D(): th10_player.cpp'],['../th15__player_8cpp.html#af316c33cc298530f245e8b55330e86b5',1,'D(): th15_player.cpp']]], 4 | ['d3dcolor_5fhsv',['D3DCOLOR_HSV',['../color_8h.html#ae4f0886db5ba082c744b83d9df578b37',1,'color.h']]], 5 | ['dik_5fkey_5fdown',['DIK_KEY_DOWN',['../th__di8__hook_8h.html#ac18344a8a223d720776386b08133659e',1,'th_di8_hook.h']]], 6 | ['dik_5fkey_5fup',['DIK_KEY_UP',['../th__di8__hook_8h.html#aaa3a4626b2877c43cdc8c8da469d2ff0',1,'th_di8_hook.h']]], 7 | ['directinput_5fversion',['DIRECTINPUT_VERSION',['../stdafx_8h.html#a1d7ab29fdefabdb4e7e7cd27ac4c9934',1,'stdafx.h']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /docs/html/search/defines_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['log',['LOG',['../logfs_8h.html#a388edf12256bf73c3a8ee9734c3bd841',1,'logfs.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/defines_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['nominmax',['NOMINMAX',['../stdafx_8h.html#a9f918755b601cf4bffca775992e6fb90',1,'stdafx.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/defines_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['stringify',['STRINGIFY',['../logfs_8h.html#a6df1d22fb5f09eccc23b9f399670cfd7',1,'logfs.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/defines_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['tostring',['TOSTRING',['../logfs_8h.html#a9063e80f8777300c93afde6e6f4c9cea',1,'logfs.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/defines_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['zero_5fepsilon',['ZERO_EPSILON',['../vec2_8h.html#af0dae59815de217cff678ef4c8fec416',1,'vec2.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/files_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['cdraw_2ecpp',['cdraw.cpp',['../cdraw_8cpp.html',1,'']]], 4 | ['cdraw_2eh',['cdraw.h',['../cdraw_8h.html',1,'']]], 5 | ['color_2ecpp',['color.cpp',['../color_8cpp.html',1,'']]], 6 | ['color_2eh',['color.h',['../color_8h.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/html/search/files_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['detour_2ecpp',['detour.cpp',['../detour_8cpp.html',1,'']]], 4 | ['detour_2eh',['detour.h',['../detour_8h.html',1,'']]], 5 | ['di8_5finput_5foverlay_2ecpp',['di8_input_overlay.cpp',['../di8__input__overlay_8cpp.html',1,'']]], 6 | ['di8_5finput_5foverlay_2eh',['di8_input_overlay.h',['../di8__input__overlay_8h.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/html/search/files_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['id3d9_5fwrapper_2ecpp',['ID3D9_Wrapper.cpp',['../_i_d3_d9___wrapper_8cpp.html',1,'']]], 4 | ['id3d9_5fwrapper_2eh',['ID3D9_Wrapper.h',['../_i_d3_d9___wrapper_8h.html',1,'']]], 5 | ['id3d9device_5fwrapper_2ecpp',['ID3D9Device_Wrapper.cpp',['../_i_d3_d9_device___wrapper_8cpp.html',1,'']]], 6 | ['id3d9device_5fwrapper_2eh',['ID3D9Device_Wrapper.h',['../_i_d3_d9_device___wrapper_8h.html',1,'']]], 7 | ['idi8a_5fwrapper_2ecpp',['IDI8A_Wrapper.cpp',['../_i_d_i8_a___wrapper_8cpp.html',1,'']]], 8 | ['idi8a_5fwrapper_2eh',['IDI8A_Wrapper.h',['../_i_d_i8_a___wrapper_8h.html',1,'']]], 9 | ['idi8adevice_5fwrapper_2ecpp',['IDI8ADevice_Wrapper.cpp',['../_i_d_i8_a_device___wrapper_8cpp.html',1,'']]], 10 | ['idi8adevice_5fwrapper_2eh',['IDI8ADevice_Wrapper.h',['../_i_d_i8_a_device___wrapper_8h.html',1,'']]] 11 | ]; 12 | -------------------------------------------------------------------------------- /docs/html/search/files_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['keypress_5fdetect_2ecpp',['keypress_detect.cpp',['../keypress__detect_8cpp.html',1,'']]], 4 | ['keypress_5fdetect_2eh',['keypress_detect.h',['../keypress__detect_8h.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/files_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['logfs_2ecpp',['logfs.cpp',['../logfs_8cpp.html',1,'']]], 4 | ['logfs_2eh',['logfs.h',['../logfs_8h.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/files_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['stdafx_2ecpp',['stdafx.cpp',['../stdafx_8cpp.html',1,'']]], 4 | ['stdafx_2eh',['stdafx.h',['../stdafx_8h.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/files_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['vec2_2ecpp',['vec2.cpp',['../vec2_8cpp.html',1,'']]], 4 | ['vec2_2eh',['vec2.h',['../vec2_8h.html',1,'']]], 5 | ['vec2_5ftest_2ecpp',['vec2_test.cpp',['../vec2__test_8cpp.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/files_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['vec2_2ecpp',['vec2.cpp',['../vec2_8cpp.html',1,'']]], 4 | ['vec2_2eh',['vec2.h',['../vec2_8h.html',1,'']]], 5 | ['vec2_5ftest_2ecpp',['vec2_test.cpp',['../vec2__test_8cpp.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/functions_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_5f_5fdeclspec',['__declspec',['../th08__bullet__proc__hook_8cpp.html#afe52ebdc9b424ed978fafc9c391c27f8',1,'__declspec(naked) int __fastcall sub_410A70_Hook(int a1: th08_bullet_proc_hook.cpp'],['../th15__bullet__proc__hook_8cpp.html#a1ec9d37009db7b2325c69d1e9e0ea1ec',1,'__declspec(naked) __stdcall sub_455D00_hook(int pPos: th15_bullet_proc_hook.cpp']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/functions_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['acquire',['Acquire',['../class_direct_input_device8_wrapper.html#a11a7301d76053aebb686c2c08f9ed8cf',1,'DirectInputDevice8Wrapper']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/functions_10.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['quadratic_5fsolve',['quadratic_solve',['../classvec2.html#a353e50ea8ba6ad4ad3e12f79076835e3',1,'vec2']]], 4 | ['queryinterface',['QueryInterface',['../class_direct3_d9_wrapper.html#abd10c23768498b0ff2bcff59d90d3467',1,'Direct3D9Wrapper::QueryInterface()'],['../class_direct3_d_device9_wrapper.html#aa7cea21efcb038f3e27d18fc2ed1f00b',1,'Direct3DDevice9Wrapper::QueryInterface()'],['../class_direct_input8_wrapper.html#ae0e63ab6ad09ace8e635db21ad90306e',1,'DirectInput8Wrapper::QueryInterface()'],['../class_direct_input_device8_wrapper.html#a52a9cb6dc4d7ccf9deb9344dfb424870',1,'DirectInputDevice8Wrapper::QueryInterface()']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/functions_11.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['rect',['rect',['../namespacecdraw.html#a2f686ced15515df3a91d7a5e3903f77a',1,'cdraw']]], 4 | ['registersoftwaredevice',['RegisterSoftwareDevice',['../class_direct3_d9_wrapper.html#a7e4ac381ae6efc2c1156679b4d6dd107',1,'Direct3D9Wrapper']]], 5 | ['reset',['Reset',['../class_direct3_d_device9_wrapper.html#a19f58bb6989c38a085e0af9e18e5742b',1,'Direct3DDevice9Wrapper']]], 6 | ['reset_5fvk_5fstate',['reset_vk_state',['../classth__di8__hook.html#ae1da07d002ecb8a9c168c80713548143',1,'th_di8_hook']]], 7 | ['rgb2hsv',['rgb2hsv',['../color_8cpp.html#aa9504068d05a6b4a9f772dbfa9d0e0ca',1,'rgb2hsv(rgb in): color.cpp'],['../color_8h.html#aa9504068d05a6b4a9f772dbfa9d0e0ca',1,'rgb2hsv(rgb in): color.cpp']]], 8 | ['runcontrolpanel',['RunControlPanel',['../class_direct_input8_wrapper.html#a17f86e89bca4ece5e0771d7dfff7928c',1,'DirectInput8Wrapper::RunControlPanel()'],['../class_direct_input_device8_wrapper.html#a33c23bd317220eb1ae4f7a0443aef386',1,'DirectInputDevice8Wrapper::RunControlPanel()']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /docs/html/search/functions_14.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['unacquire',['Unacquire',['../class_direct_input_device8_wrapper.html#a32480e908c21164904a4a3f3ab01a94d',1,'DirectInputDevice8Wrapper']]], 4 | ['unit',['unit',['../classvec2.html#a21d8ba477e13a69ace4e3baaeaaa390e',1,'vec2']]], 5 | ['unpatch',['unpatch',['../classth08__patch__autobomb.html#a007b2db5c2c22edd40d605326033ca3f',1,'th08_patch_autobomb::unpatch()'],['../classth15__patch__autobomb.html#a8b3c261b647246b283822989ee6a4a01',1,'th15_patch_autobomb::unpatch()'],['../classth__patch.html#a1ced74e10d857a0c5a03d6ee2e85f919',1,'th_patch::unpatch()']]], 6 | ['updatesurface',['UpdateSurface',['../class_direct3_d_device9_wrapper.html#a82a011b90cf9548fbae090b553660612',1,'Direct3DDevice9Wrapper']]], 7 | ['updatetexture',['UpdateTexture',['../class_direct3_d_device9_wrapper.html#ad5bd255921869de8fc2dde0e5ad22c3d',1,'Direct3DDevice9Wrapper']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /docs/html/search/functions_15.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['validatedevice',['ValidateDevice',['../class_direct3_d_device9_wrapper.html#a8019044173cb8870cb565fba37b1fa0d',1,'Direct3DDevice9Wrapper']]], 4 | ['vec2',['vec2',['../classvec2.html#ae12a1a221eca3561809600a11b58eaa3',1,'vec2::vec2()'],['../classvec2.html#a9486933da4d4d819a8b99bae91066cb3',1,'vec2::vec2(float x, float y)'],['../classvec2.html#a0fcc1b7272d1ebd806cca02d29563053',1,'vec2::vec2(const vec2 &other)'],['../classvec2.html#ad921a919c9a8382e50463966cd5bbca5',1,'vec2::vec2(vec2 &&other) noexcept']]], 5 | ['vector_5fupdate_5fhook',['vector_update_hook',['../classth07__bullet__proc__hook.html#acf8a980bd7a92284021530cb34be70a1',1,'th07_bullet_proc_hook::vector_update_hook()'],['../classth08__bullet__proc__hook.html#af74892ce28f60c4af194a0a96fe1d644',1,'th08_bullet_proc_hook::vector_update_hook()']]], 6 | ['visualize',['visualize',['../classth__algorithm.html#abdc2cf2e37116c90f5b67622a2302988',1,'th_algorithm::visualize()'],['../classth__vector__algo.html#a96394c3954f693f41b44f1a7ac086deb',1,'th_vector_algo::visualize()'],['../classth__vo__algo.html#a2c1a4f104cb80fae0c4e6213664471be',1,'th_vo_algo::visualize()']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/html/search/functions_16.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['will_5fcollide_5faabb',['will_collide_aabb',['../classvec2.html#aca55a5ab5cb9190a947e3fc0cc877a2a',1,'vec2']]], 4 | ['will_5fcollide_5fcircle',['will_collide_circle',['../classvec2.html#a025717ad4e29b94931d78d97ac11e467',1,'vec2']]], 5 | ['will_5fcollide_5fcircle_5fline',['will_collide_circle_line',['../classvec2.html#a996140b70c11aa6995d4f29f1d857f1d',1,'vec2']]], 6 | ['will_5fexit_5faabb',['will_exit_aabb',['../classvec2.html#ac897b0838cff84a5b7f4c1f948bdaadf',1,'vec2']]], 7 | ['writeeffecttofile',['WriteEffectToFile',['../class_direct_input_device8_wrapper.html#a3f128b09d185125f8c5fdc420b65770b',1,'DirectInputDevice8Wrapper']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /docs/html/search/functions_17.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['zero',['zero',['../classvec2.html#aaffdc2a12e77c504e8da62156ff0a296',1,'vec2']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/functions_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['beginscene',['BeginScene',['../class_direct3_d_device9_wrapper.html#a46e1ea4c15a6a74eedf03e15281e331d',1,'Direct3DDevice9Wrapper']]], 4 | ['beginstateblock',['BeginStateBlock',['../class_direct3_d_device9_wrapper.html#a35096bd7217891a75674e06f4db46cc3',1,'Direct3DDevice9Wrapper']]], 5 | ['bind',['bind',['../classth07__bullet__proc__hook.html#af90dd819233ec57ef29e48dddf4b38ab',1,'th07_bullet_proc_hook::bind()'],['../classth08__bullet__proc__hook.html#ac94f1b26c180ac59ab25eb6a7fd84d26',1,'th08_bullet_proc_hook::bind()'],['../classth10__bullet__proc__hook.html#aa17c0cec516015c0fbfeedee448d7ee0',1,'th10_bullet_proc_hook::bind()'],['../classth15__bullet__proc__hook.html#ad064a79f96550d19e219e34e46d411c3',1,'th15_bullet_proc_hook::bind()'],['../classth__d3d9__hook.html#a5475441113c57218dbf2f95b73ab51c6',1,'th_d3d9_hook::bind()'],['../classth__di8__hook.html#a50d6fe7f6ccf00d93fc527db879bb03f',1,'th_di8_hook::bind()']]], 6 | ['bind_5falgorithm',['bind_algorithm',['../classth__player.html#ab87020313e1b179e71340571fea3473c',1,'th_player']]], 7 | ['buildactionmap',['BuildActionMap',['../class_direct_input_device8_wrapper.html#a26c0a71af3328573f651d4e0ef1cd79a',1,'DirectInputDevice8Wrapper']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /docs/html/search/functions_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['fill_5frect',['fill_rect',['../namespacecdraw.html#ab72606b75fdfd4737bc2d89454727c35',1,'cdraw']]], 4 | ['finddevice',['FindDevice',['../class_direct_input8_wrapper.html#a6b3738a5bdc40442e099da77c2b85190',1,'DirectInput8Wrapper']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/functions_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['keypress_5fdetect',['keypress_detect',['../classkeypress__detect.html#ac0ee2b700dc23ea5680de254fb518591',1,'keypress_detect']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/functions_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['len',['len',['../classvec2.html#a11d50115af4f5e1fef81ab18b7279ec3',1,'vec2']]], 4 | ['lensq',['lensq',['../classvec2.html#ab7c5324ee235cc04a3ee47553dd65d42',1,'vec2']]], 5 | ['lightenable',['LightEnable',['../class_direct3_d_device9_wrapper.html#aba4f7edbb3db319209e0d972d5fd8081',1,'Direct3DDevice9Wrapper']]], 6 | ['line',['line',['../namespacecdraw.html#a21754cba60de73a29edd113d72294a5c',1,'cdraw']]], 7 | ['loadlibrarya_5fhook',['LoadLibraryA_Hook',['../th__d3d9__hook_8h.html#ae85bc7be8b495fcb17d841e70f4f829d',1,'th_d3d9_hook.h']]], 8 | ['logm',['logm',['../logfs_8cpp.html#a625c08a01520fa2d7ba613e771ca707f',1,'logm(const char *file, const char *func, int line, const char *fmt,...): logfs.cpp'],['../logfs_8h.html#a625c08a01520fa2d7ba613e771ca707f',1,'logm(const char *file, const char *func, int line, const char *fmt,...): logfs.cpp']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /docs/html/search/functions_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['maxv',['maxv',['../classvec2.html#a5ba085702d67a73eeab68cf973599cde',1,'vec2']]], 4 | ['minv',['minv',['../classvec2.html#a05175cfbb86a0ccff1db61374d6b5434',1,'vec2']]], 5 | ['multiplytransform',['MultiplyTransform',['../class_direct3_d_device9_wrapper.html#a30e626f996282fb4dda560403b7da677',1,'Direct3DDevice9Wrapper']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/functions_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['nan',['nan',['../classvec2.html#a53147487a55d627f2cfe4e5ef7f3f001',1,'vec2']]], 4 | ['normal',['normal',['../classvec2.html#a89d01ac84cb7644466ef9b9ccb24b379',1,'vec2']]], 5 | ['normalize',['normalize',['../classvec2.html#a4b8c6b2e6a7cb804e1cc4211edadbcfa',1,'vec2']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/functions_f.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['patch',['patch',['../classth08__patch__autobomb.html#a2080ad42988fabcba108c83631fb3666',1,'th08_patch_autobomb::patch()'],['../classth15__patch__autobomb.html#accabd82928f98719a8dc3d98e9b35206',1,'th15_patch_autobomb::patch()'],['../classth__patch.html#a9a03f943af7f454c35a0e099e56cf863',1,'th_patch::patch()']]], 4 | ['perp',['perp',['../classvec2.html#a99a3eed3aa31cd3b2b01583bef860bf1',1,'vec2']]], 5 | ['poll',['Poll',['../class_direct_input_device8_wrapper.html#ac099903c292f2c471d60fd3ab868cc13',1,'DirectInputDevice8Wrapper']]], 6 | ['present',['Present',['../class_direct3_d_device9_wrapper.html#a9f11ee013238b047bf229cb9a3959a1d',1,'Direct3DDevice9Wrapper']]], 7 | ['processvertices',['ProcessVertices',['../class_direct3_d_device9_wrapper.html#aa03b0b472bf36d324fc9b46ca35ac340',1,'Direct3DDevice9Wrapper']]], 8 | ['proj',['proj',['../classvec2.html#a43b47f28ecff4398e570c2b57c839824',1,'vec2']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /docs/html/search/mag_sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/search/mag_sel.png -------------------------------------------------------------------------------- /docs/html/search/namespaces_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['cdraw',['cdraw',['../namespacecdraw.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/nomatches.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 |
No Matches
10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/html/search/search_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/search/search_l.png -------------------------------------------------------------------------------- /docs/html/search/search_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/search/search_m.png -------------------------------------------------------------------------------- /docs/html/search/search_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/search/search_r.png -------------------------------------------------------------------------------- /docs/html/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "_abcdefghiklmnopqrstuvwxyz~", 4 | 1: "deghklrtv", 5 | 2: "c", 6 | 3: "cdiklstv", 7 | 4: "_abcdefghiklmnopqrstuvwz~", 8 | 5: "_abcdefghiklmprstuvwxyz", 9 | 6: "dglprst", 10 | 7: "_abdlnstz" 11 | }; 12 | 13 | var indexSectionNames = 14 | { 15 | 0: "all", 16 | 1: "classes", 17 | 2: "namespaces", 18 | 3: "files", 19 | 4: "functions", 20 | 5: "variables", 21 | 6: "typedefs", 22 | 7: "defines" 23 | }; 24 | 25 | var indexSectionLabels = 26 | { 27 | 0: "All", 28 | 1: "Classes", 29 | 2: "Namespaces", 30 | 3: "Files", 31 | 4: "Functions", 32 | 5: "Variables", 33 | 6: "Typedefs", 34 | 7: "Macros" 35 | }; 36 | 37 | -------------------------------------------------------------------------------- /docs/html/search/typedefs_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['direct3dcreate9_5ft',['Direct3DCreate9_t',['../th__d3d9__hook_8h.html#adf6462669f15f38c4858b5b4b3d2850c',1,'th_d3d9_hook.h']]], 4 | ['dwversion',['dwVersion',['../th__di8__hook_8h.html#afc74685fd2a008acbffa5d4fd15a8913',1,'th_di8_hook.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/typedefs_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['getdevicestate_5ft',['GetDeviceState_t',['../_i_d_i8_a___wrapper_8h.html#a9149cc1f6750e41d93dc8cf7f0387500',1,'IDI8A_Wrapper.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/typedefs_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['loadlibrary_5ft',['LoadLibrary_t',['../th__d3d9__hook_8h.html#acb86e84976aca3390eb431d3d31bd7ff',1,'th_d3d9_hook.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/typedefs_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ppvout',['ppvOut',['../th__di8__hook_8h.html#a1a02cfe1ae9d9f0ed43acdaf83ec899e',1,'th_di8_hook.h']]], 4 | ['punkouter',['punkOuter',['../th__di8__hook_8h.html#ab1b16efa0f3df231efc065b994ca31ee',1,'th_di8_hook.h']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/typedefs_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['riidltf',['riidltf',['../th__di8__hook_8h.html#a40c3916bcfafeebb2bfc93aaf4172c17',1,'th_di8_hook.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/typedefs_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['sub_5f410a70_5ft',['sub_410A70_t',['../th08__bullet__proc__hook_8h.html#a3d54e4e120f27e11a197b65c87257234',1,'th08_bullet_proc_hook.h']]], 4 | ['sub_5f424290_5ft',['sub_424290_t',['../th07__bullet__proc__hook_8h.html#a753070cf30659880272a58c165916b33',1,'th07_bullet_proc_hook.h']]], 5 | ['sub_5f455d00_5ft',['sub_455D00_t',['../th15__bullet__proc__hook_8h.html#ac950546d75807fe33edc8d4f3180211d',1,'th15_bullet_proc_hook.h']]], 6 | ['sub_5f455e10_5ft',['sub_455E10_t',['../th15__bullet__proc__hook_8h.html#a1bc78a6931b4dd2d86f26306c1f1819e',1,'th15_bullet_proc_hook.h']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/html/search/typedefs_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['th_5floader_5ft',['th_loader_t',['../twinhook_8cpp.html#a986d4356d408ecaecd673cefdc26cc0d',1,'twinhook.cpp']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/variables_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_5f_5fasm',['__asm',['../th15__bullet__proc__hook_8cpp.html#ad101de28d3c26b1657e7b4bbbc30b0c5',1,'th15_bullet_proc_hook.cpp']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/variables_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['a2',['a2',['../th08__bullet__proc__hook_8cpp.html#a3b8587d2671eddc116d9096da6c23b91',1,'a2(): th08_bullet_proc_hook.cpp'],['../th15__bullet__proc__hook_8cpp.html#a87fc05ba27e1686dd619e28e979a2833',1,'a2(): th15_bullet_proc_hook.cpp']]], 4 | ['a3',['a3',['../th08__bullet__proc__hook_8cpp.html#af0de1fc326bde4d57a359ceb08313bc5',1,'a3(): th08_bullet_proc_hook.cpp'],['../th15__bullet__proc__hook_8cpp.html#af0de1fc326bde4d57a359ceb08313bc5',1,'a3(): th15_bullet_proc_hook.cpp']]], 5 | ['a4',['a4',['../th15__bullet__proc__hook_8cpp.html#a892d614072bef87b30dca097bdacff41',1,'th15_bullet_proc_hook.cpp']]], 6 | ['a5',['a5',['../th15__bullet__proc__hook_8cpp.html#acf97767df4fac6da5e56297320eddb24',1,'th15_bullet_proc_hook.cpp']]], 7 | ['active_5fcolor',['active_color',['../structkey__graphic.html#afacd8b218c6487789af1f9c10d971898',1,'key_graphic']]], 8 | ['addr',['addr',['../th08__bullet__proc__hook_8cpp.html#a29514ac72d47e91c714aed6e9bb4d410',1,'th08_bullet_proc_hook.cpp']]], 9 | ['algorithm',['algorithm',['../classth__player.html#a16cb6f5e3294600c9a3aabce8b4386c5',1,'th_player']]], 10 | ['ang',['ang',['../structlaser.html#a31339f60337653f3fbe057c36e8e3705',1,'laser']]], 11 | ['angle',['angle',['../th15__bullet__proc__hook_8cpp.html#ab8ef1bf8a70cc07c6d55823c390a7e76',1,'th15_bullet_proc_hook.cpp']]] 12 | ]; 13 | -------------------------------------------------------------------------------- /docs/html/search/variables_10.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['th_5fparam',['th_param',['../th__config_8cpp.html#af6e1ff0eef25a5785f733a89fd6e07ab',1,'th_param(): th_config.cpp'],['../th__config_8h.html#ab6ee6b2bbc79916cb32f8436b850972a',1,'th_param(): th_config.h']]], 4 | ['this_5f',['this_',['../th15__bullet__proc__hook_8cpp.html#a54d657ed3ee98b29c44a70ddde9556c0',1,'th15_bullet_proc_hook.cpp']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/variables_11.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['up',['up',['../unionth__kbd__state.html#a82a89b7a5fd2bad7e435909ae57e02ac',1,'th_kbd_state']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/variables_12.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['v',['v',['../structentity.html#aba6fc245671f7d4f17b37e1a9928fed2',1,'entity::v()'],['../structlaser.html#a840c99080c564751cd7895df54b49719',1,'laser::v()'],['../structhsv.html#a572c01d23590231adffe6f9b16df20d3',1,'hsv::v()']]], 4 | ['vkcode',['vkCode',['../structkey__graphic.html#a92d8efdf115adbb3d9f767e81f8a7b7f',1,'key_graphic']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/variables_13.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['w',['w',['../structkey__graphic.html#a3decdfadc522f8e721dc6d1430ae35a2',1,'key_graphic']]], 4 | ['window_5fheight',['WINDOW_HEIGHT',['../structth__param.html#ae3b8ed4e76b15653c0e5c6d8fb427d8a',1,'th_param']]], 5 | ['window_5fwidth',['WINDOW_WIDTH',['../structth__param.html#a60777100ed378e6cced0f65db9878b16',1,'th_param']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/variables_14.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['x',['x',['../structkey__graphic.html#a49853c95f6e154874716b4b3c4d0c9c5',1,'key_graphic::x()'],['../structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html#a459c18601a5a0dfca5002d7a46f21bdf',1,'cdraw::D3DTLVERTEX::x()'],['../classvec2.html#a002d3519d48fe3cd79729b5b0ded74bf',1,'vec2::x()']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/variables_15.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['y',['Y',['../class_direct3_d_device9_wrapper.html#a6e1a76b858253e22ec325a209a12dd94',1,'Direct3DDevice9Wrapper::Y()'],['../structkey__graphic.html#a98ea578a1b13035de753d536372361f1',1,'key_graphic::y()'],['../structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html#aed03945b724b0809cfea46fbd1d76385',1,'cdraw::D3DTLVERTEX::y()'],['../classvec2.html#a6d28b12b511da692550fc9d37b4e9b1d',1,'vec2::y()']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/variables_16.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['z',['z',['../structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html#a54cbf75d836f192b1aca943e35ce5ad2',1,'cdraw::D3DTLVERTEX']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/variables_17.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['z',['z',['../structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html#a54cbf75d836f192b1aca943e35ce5ad2',1,'cdraw::D3DTLVERTEX']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/variables_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['color',['color',['../structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html#a67d615e499e2bd3435f7d67362cc2fa0',1,'cdraw::D3DTLVERTEX']]], 4 | ['createdevicehook',['CreateDeviceHook',['../struct_direct3_d9_hook.html#a4473c4b0f953772e3333e95ef5be9861',1,'Direct3D9Hook']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/variables_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['enabled',['enabled',['../classth__player.html#a14af6a3eb12b5cbc4ac928a0d87e5447',1,'th_player']]], 4 | ['endscenehook',['EndSceneHook',['../struct_direct3_d9_hook.html#af72f66f2e2329236c04efbff893a27ff',1,'Direct3D9Hook']]], 5 | ['ex',['ex',['../structlaser.html#a987a00c03c3c9d48ba8a213e68efb243',1,'laser']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/variables_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['flags',['Flags',['../class_direct3_d_device9_wrapper.html#a981c271e8076c5e6339fc4897d0e2eec',1,'Direct3DDevice9Wrapper::Flags()'],['../class_direct3_d_device9_wrapper.html#a9d0fd6d951826b40d9ae521285c3ecb8',1,'Direct3DDevice9Wrapper::Flags()']]], 4 | ['focus_5fforce_5fthreshold',['FOCUS_FORCE_THRESHOLD',['../th__vector__algo_8h.html#aabe45fb53ae2d1da46ca2d1b81758b97',1,'th_vector_algo.h']]], 5 | ['format',['Format',['../class_direct3_d9_wrapper.html#aa7c07f726ca2d5c2d888e643fed89d78',1,'Direct3D9Wrapper']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/variables_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['g',['g',['../structrgb.html#a1c51cad47a05c797643776f9357a8749',1,'rgb']]], 4 | ['game_5fheight',['GAME_HEIGHT',['../structth__param.html#a830e461b3822f0d04908c04508ff3a88',1,'th_param']]], 5 | ['game_5fwidth',['GAME_WIDTH',['../structth__param.html#adbd540f295e8429f096c26f594d88d6f',1,'th_param']]], 6 | ['game_5fx_5foffset',['GAME_X_OFFSET',['../structth__param.html#a1d685b40dd1dd30bf2e70acc92348a2a',1,'th_param']]], 7 | ['game_5fy_5foffset',['GAME_Y_OFFSET',['../structth__param.html#a89bd18a0062f246a2334518558cde1c0',1,'th_param']]], 8 | ['getdevicestatehook',['GetDeviceStateHook',['../struct_direct_input8_hook.html#ac80a71e891cda0a81d8a9e77097bdce9',1,'DirectInput8Hook']]], 9 | ['gs_5fptr',['gs_ptr',['../classth__player.html#a71a1aebaac7928de95e493c9884cf634',1,'th_player']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /docs/html/search/variables_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['h',['h',['../structkey__graphic.html#a36700eacb8b613e8d2a0d107444003b0',1,'key_graphic::h()'],['../structhsv.html#aa27eea5f2a89b941eead7139330d12f4',1,'hsv::h()']]], 4 | ['hook',['Hook',['../class_direct3_d9_wrapper.html#aaef0d2387153edb657e89d36b6b9386d',1,'Direct3D9Wrapper::Hook()'],['../class_direct_input8_wrapper.html#ad529d8413791ec135bfd3ad38f129cd1',1,'DirectInput8Wrapper::Hook()']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/variables_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['inputoverlayunitsize',['InputOverlayUnitSize',['../di8__input__overlay_8h.html#a2e790321686963411a401e763d97f660',1,'di8_input_overlay.h']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/variables_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['kbd_5fstate',['kbd_state',['../structgs__addr.html#a64eed5503d0891b16443c8b5ee8aa8ac',1,'gs_addr']]], 4 | ['keys',['keys',['../unionth__kbd__state.html#a1cbd0631689853c74c9542e21c8a6123',1,'th_kbd_state']]], 5 | ['kg_5fmonitoredkeys',['kg_MonitoredKeys',['../di8__input__overlay_8h.html#aa6e1b088a629eb5d202ccae8f62306b8',1,'di8_input_overlay.h']]], 6 | ['kpd',['kpd',['../classth__player.html#ac83b8d217a30089044882c8194e10c04',1,'th_player']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/html/search/variables_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['lasers',['lasers',['../classth__player.html#ab1fb330cf383005f12fc32f04d81ff8f',1,'th_player']]], 4 | ['left',['left',['../unionth__kbd__state.html#af5a2fc69979a3ac12262439cf5fea0b7',1,'th_kbd_state']]], 5 | ['length',['length',['../structlaser.html#adeeb7692186219e10170dcbe7e284247',1,'laser']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/variables_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['m_5fstride',['m_Stride',['../class_direct3_d_device9_wrapper.html#aec6e4b401e4a3f90ecdb7b8b785e2076',1,'Direct3DDevice9Wrapper']]], 4 | ['me',['me',['../structentity.html#a0e3803ed734f4727d606ed89c7ae7392',1,'entity']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/variables_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['p',['p',['../structentity.html#a2bd517ddb6a985307ea544eff1b4ecbc',1,'entity::p()'],['../structlaser.html#a2ee66f6144d38963d18f566bf07b8739',1,'laser::p()']]], 4 | ['player',['player',['../classth__algorithm.html#a79d3ddf1feb73bf4ef019ec7a8809444',1,'th_algorithm::player()'],['../classth__hook.html#a875ee06c4b527cd3b2ef7585faf7580f',1,'th_hook::player()']]], 5 | ['plyr_5fpos',['plyr_pos',['../structgs__addr.html#ab5d68fc10249f83f0107e706eb2f03c4',1,'gs_addr']]], 6 | ['powerups',['powerups',['../classth__player.html#ae74b2bdd88894c21284428013178a6d8',1,'th_player']]], 7 | ['pramp',['pRamp',['../class_direct3_d_device9_wrapper.html#a8cff2d77d122babc87d60846e595b307',1,'Direct3DDevice9Wrapper::pRamp()'],['../class_direct3_d_device9_wrapper.html#a05e4c3e26310cbff35504a80514e5ebd',1,'Direct3DDevice9Wrapper::pRamp()']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /docs/html/search/variables_e.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['r',['r',['../structrgb.html#ad5a38e43f70fb57d6da052745ea5ff90',1,'rgb']]], 4 | ['rad',['rad',['../structlaser.html#a4366b0c61bdbfa356b76ab15e1f25f17',1,'laser::rad()'],['../th15__bullet__proc__hook_8cpp.html#a28342d60f96d731271cfa20c110be44e',1,'rad(): th15_bullet_proc_hook.cpp']]], 5 | ['render',['render',['../classth__player.html#abe3cd8a650307fc52a9c8e9ea1901abd',1,'th_player']]], 6 | ['retval',['retval',['../th08__bullet__proc__hook_8cpp.html#a7f3fcc3b39464696f5682f787eb99368',1,'th08_bullet_proc_hook.cpp']]], 7 | ['rhw',['rhw',['../structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html#a316020df4d21ad7309a319d35fce29e6',1,'cdraw::D3DTLVERTEX']]], 8 | ['right',['right',['../unionth__kbd__state.html#a23d8d96ca1969f1a4899565b11fff44a',1,'th_kbd_state']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /docs/html/search/variables_f.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['s',['s',['../structhsv.html#a3cbdc4bf500068b5c4466c4272114a23',1,'hsv']]], 4 | ['shot',['shot',['../unionth__kbd__state.html#abac29d70acd99281907cec5dcd9ba475',1,'th_kbd_state']]], 5 | ['skip',['skip',['../unionth__kbd__state.html#a876492b6b7391102988dbe6628222440',1,'th_kbd_state']]], 6 | ['slow',['slow',['../unionth__kbd__state.html#a6e7ca2a4eb75060eb1a7845b0a2ea5fd',1,'th_kbd_state']]], 7 | ['sub_5f424290_5foriginal',['sub_424290_Original',['../th07__bullet__proc__hook_8cpp.html#a046d00d8703d2d64f0cfbbe1854db816',1,'th07_bullet_proc_hook.cpp']]], 8 | ['sz',['sz',['../structentity.html#ac349e2d72eda283ca9f2b51ba1188a08',1,'entity']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /docs/html/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/splitbar.png -------------------------------------------------------------------------------- /docs/html/stdafx_8h.js: -------------------------------------------------------------------------------- 1 | var stdafx_8h = 2 | [ 3 | [ "_WIN32_WINNT", "stdafx_8h.html#ac50762666aa00bd3a4308158510f1748", null ], 4 | [ "DIRECTINPUT_VERSION", "stdafx_8h.html#a1d7ab29fdefabdb4e7e7cd27ac4c9934", null ], 5 | [ "NOMINMAX", "stdafx_8h.html#a9f918755b601cf4bffca775992e6fb90", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/html/struct_direct3_d9_hook.js: -------------------------------------------------------------------------------- 1 | var struct_direct3_d9_hook = 2 | [ 3 | [ "BeginSceneHook", "struct_direct3_d9_hook.html#a48c88c14c452ad58a6d09964782b9f35", null ], 4 | [ "CreateDeviceHook", "struct_direct3_d9_hook.html#a4473c4b0f953772e3333e95ef5be9861", null ], 5 | [ "EndSceneHook", "struct_direct3_d9_hook.html#af72f66f2e2329236c04efbff893a27ff", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/html/struct_direct_input8_hook.js: -------------------------------------------------------------------------------- 1 | var struct_direct_input8_hook = 2 | [ 3 | [ "GetDeviceStateHook", "struct_direct_input8_hook.html#ac80a71e891cda0a81d8a9e77097bdce9", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.js: -------------------------------------------------------------------------------- 1 | var structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x = 2 | [ 3 | [ "color", "structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html#a67d615e499e2bd3435f7d67362cc2fa0", null ], 4 | [ "rhw", "structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html#a316020df4d21ad7309a319d35fce29e6", null ], 5 | [ "x", "structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html#a459c18601a5a0dfca5002d7a46f21bdf", null ], 6 | [ "y", "structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html#aed03945b724b0809cfea46fbd1d76385", null ], 7 | [ "z", "structcdraw_1_1_d3_d_t_l_v_e_r_t_e_x.html#a54cbf75d836f192b1aca943e35ce5ad2", null ] 8 | ]; -------------------------------------------------------------------------------- /docs/html/structentity.js: -------------------------------------------------------------------------------- 1 | var structentity = 2 | [ 3 | [ "me", "structentity.html#a0e3803ed734f4727d606ed89c7ae7392", null ], 4 | [ "p", "structentity.html#a2bd517ddb6a985307ea544eff1b4ecbc", null ], 5 | [ "sz", "structentity.html#ac349e2d72eda283ca9f2b51ba1188a08", null ], 6 | [ "v", "structentity.html#aba6fc245671f7d4f17b37e1a9928fed2", null ] 7 | ]; -------------------------------------------------------------------------------- /docs/html/structgs__addr.js: -------------------------------------------------------------------------------- 1 | var structgs__addr = 2 | [ 3 | [ "kbd_state", "structgs__addr.html#a64eed5503d0891b16443c8b5ee8aa8ac", null ], 4 | [ "plyr_pos", "structgs__addr.html#ab5d68fc10249f83f0107e706eb2f03c4", null ] 5 | ]; -------------------------------------------------------------------------------- /docs/html/structhsv.js: -------------------------------------------------------------------------------- 1 | var structhsv = 2 | [ 3 | [ "h", "structhsv.html#aa27eea5f2a89b941eead7139330d12f4", null ], 4 | [ "s", "structhsv.html#a3cbdc4bf500068b5c4466c4272114a23", null ], 5 | [ "v", "structhsv.html#a572c01d23590231adffe6f9b16df20d3", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/html/structkey__graphic.js: -------------------------------------------------------------------------------- 1 | var structkey__graphic = 2 | [ 3 | [ "active_color", "structkey__graphic.html#afacd8b218c6487789af1f9c10d971898", null ], 4 | [ "default_color", "structkey__graphic.html#abe5d3b34791bc1d7c2b2c03c7239291c", null ], 5 | [ "h", "structkey__graphic.html#a36700eacb8b613e8d2a0d107444003b0", null ], 6 | [ "vkCode", "structkey__graphic.html#a92d8efdf115adbb3d9f767e81f8a7b7f", null ], 7 | [ "w", "structkey__graphic.html#a3decdfadc522f8e721dc6d1430ae35a2", null ], 8 | [ "x", "structkey__graphic.html#a49853c95f6e154874716b4b3c4d0c9c5", null ], 9 | [ "y", "structkey__graphic.html#a98ea578a1b13035de753d536372361f1", null ] 10 | ]; -------------------------------------------------------------------------------- /docs/html/structlaser.js: -------------------------------------------------------------------------------- 1 | var structlaser = 2 | [ 3 | [ "ang", "structlaser.html#a31339f60337653f3fbe057c36e8e3705", null ], 4 | [ "ex", "structlaser.html#a987a00c03c3c9d48ba8a213e68efb243", null ], 5 | [ "length", "structlaser.html#adeeb7692186219e10170dcbe7e284247", null ], 6 | [ "p", "structlaser.html#a2ee66f6144d38963d18f566bf07b8739", null ], 7 | [ "rad", "structlaser.html#a4366b0c61bdbfa356b76ab15e1f25f17", null ], 8 | [ "v", "structlaser.html#a840c99080c564751cd7895df54b49719", null ] 9 | ]; -------------------------------------------------------------------------------- /docs/html/structrgb.js: -------------------------------------------------------------------------------- 1 | var structrgb = 2 | [ 3 | [ "b", "structrgb.html#aa3e45a2c26ad435fe29dfea49f16831e", null ], 4 | [ "g", "structrgb.html#a1c51cad47a05c797643776f9357a8749", null ], 5 | [ "r", "structrgb.html#ad5a38e43f70fb57d6da052745ea5ff90", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/html/structth__ann__algo_1_1sample.js: -------------------------------------------------------------------------------- 1 | var structth__ann__algo_1_1sample = 2 | [ 3 | [ "keys", "structth__ann__algo_1_1sample.html#ae719a55b22b6469de16dee7d08f2c268", null ], 4 | [ "pos", "structth__ann__algo_1_1sample.html#a68bc8d9196778d370c0be506e1609124", null ], 5 | [ "sampleCount", "structth__ann__algo_1_1sample.html#a1986a9dcf29d1f2b0a9fa5918633fbad", null ], 6 | [ "vel", "structth__ann__algo_1_1sample.html#a3a1dfca049bf46c1ca1d1ef27621bba3", null ] 7 | ]; -------------------------------------------------------------------------------- /docs/html/structth__param.js: -------------------------------------------------------------------------------- 1 | var structth__param = 2 | [ 3 | [ "GAME_HEIGHT", "structth__param.html#a830e461b3822f0d04908c04508ff3a88", null ], 4 | [ "GAME_WIDTH", "structth__param.html#adbd540f295e8429f096c26f594d88d6f", null ], 5 | [ "GAME_X_OFFSET", "structth__param.html#a1d685b40dd1dd30bf2e70acc92348a2a", null ], 6 | [ "GAME_Y_OFFSET", "structth__param.html#a89bd18a0062f246a2334518558cde1c0", null ], 7 | [ "WINDOW_HEIGHT", "structth__param.html#ae3b8ed4e76b15653c0e5c6d8fb427d8a", null ], 8 | [ "WINDOW_WIDTH", "structth__param.html#a60777100ed378e6cced0f65db9878b16", null ] 9 | ]; -------------------------------------------------------------------------------- /docs/html/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/sync_off.png -------------------------------------------------------------------------------- /docs/html/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/sync_on.png -------------------------------------------------------------------------------- /docs/html/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/tab_a.png -------------------------------------------------------------------------------- /docs/html/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/tab_b.png -------------------------------------------------------------------------------- /docs/html/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/tab_h.png -------------------------------------------------------------------------------- /docs/html/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Netdex/twinject/c9cd6adf53186102bb5f58699a3a45a97eb2ad57/docs/html/tab_s.png -------------------------------------------------------------------------------- /docs/html/th07__bullet__proc__hook_8cpp.js: -------------------------------------------------------------------------------- 1 | var th07__bullet__proc__hook_8cpp = 2 | [ 3 | [ "Hook_TH07_sub_424290", "th07__bullet__proc__hook_8cpp.html#a72439ca1ac83ec608d92403dbb344a5b", null ], 4 | [ "sub_424290_Hook", "th07__bullet__proc__hook_8cpp.html#af6d9bc23bdab3b0b23591625cbf9dab5", null ], 5 | [ "sub_424290_Original", "th07__bullet__proc__hook_8cpp.html#a046d00d8703d2d64f0cfbbe1854db816", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/html/th07__bullet__proc__hook_8h.js: -------------------------------------------------------------------------------- 1 | var th07__bullet__proc__hook_8h = 2 | [ 3 | [ "th07_bullet_proc_hook", "classth07__bullet__proc__hook.html", "classth07__bullet__proc__hook" ], 4 | [ "sub_424290_t", "th07__bullet__proc__hook_8h.html#a753070cf30659880272a58c165916b33", null ], 5 | [ "Hook_TH07_sub_424290", "th07__bullet__proc__hook_8h.html#a72439ca1ac83ec608d92403dbb344a5b", null ], 6 | [ "sub_424290_Hook", "th07__bullet__proc__hook_8h.html#af6d9bc23bdab3b0b23591625cbf9dab5", null ] 7 | ]; -------------------------------------------------------------------------------- /docs/html/th07__player_8cpp.js: -------------------------------------------------------------------------------- 1 | var th07__player_8cpp = 2 | [ 3 | [ "B", "th07__player_8cpp.html#a111da81ae5883147168bbb8366377b10", null ], 4 | [ "D", "th07__player_8cpp.html#af316c33cc298530f245e8b55330e86b5", null ] 5 | ]; -------------------------------------------------------------------------------- /docs/html/th08__bullet__proc__hook_8cpp.js: -------------------------------------------------------------------------------- 1 | var th08__bullet__proc__hook_8cpp = 2 | [ 3 | [ "__declspec", "th08__bullet__proc__hook_8cpp.html#afe52ebdc9b424ed978fafc9c391c27f8", null ], 4 | [ "a2", "th08__bullet__proc__hook_8cpp.html#a3b8587d2671eddc116d9096da6c23b91", null ], 5 | [ "a3", "th08__bullet__proc__hook_8cpp.html#af0de1fc326bde4d57a359ceb08313bc5", null ], 6 | [ "addr", "th08__bullet__proc__hook_8cpp.html#a29514ac72d47e91c714aed6e9bb4d410", null ], 7 | [ "retval", "th08__bullet__proc__hook_8cpp.html#a7f3fcc3b39464696f5682f787eb99368", null ] 8 | ]; -------------------------------------------------------------------------------- /docs/html/th08__bullet__proc__hook_8h.js: -------------------------------------------------------------------------------- 1 | var th08__bullet__proc__hook_8h = 2 | [ 3 | [ "th08_bullet_proc_hook", "classth08__bullet__proc__hook.html", "classth08__bullet__proc__hook" ], 4 | [ "sub_410A70_t", "th08__bullet__proc__hook_8h.html#a3d54e4e120f27e11a197b65c87257234", null ], 5 | [ "Hook_TH08_sub_410A70", "th08__bullet__proc__hook_8h.html#a0d3497a59bfe66baa9d0e86e195f9866", null ], 6 | [ "sub_410A70_Hook", "th08__bullet__proc__hook_8h.html#a7e96636cdc3ff4d379acd48a1696b100", null ] 7 | ]; -------------------------------------------------------------------------------- /docs/html/th08__player_8cpp.js: -------------------------------------------------------------------------------- 1 | var th08__player_8cpp = 2 | [ 3 | [ "B", "th08__player_8cpp.html#a111da81ae5883147168bbb8366377b10", null ], 4 | [ "D", "th08__player_8cpp.html#af316c33cc298530f245e8b55330e86b5", null ] 5 | ]; -------------------------------------------------------------------------------- /docs/html/th10__player_8cpp.js: -------------------------------------------------------------------------------- 1 | var th10__player_8cpp = 2 | [ 3 | [ "B", "th10__player_8cpp.html#a111da81ae5883147168bbb8366377b10", null ], 4 | [ "D", "th10__player_8cpp.html#af316c33cc298530f245e8b55330e86b5", null ] 5 | ]; -------------------------------------------------------------------------------- /docs/html/th15__bullet__proc__hook_8cpp.js: -------------------------------------------------------------------------------- 1 | var th15__bullet__proc__hook_8cpp = 2 | [ 3 | [ "__declspec", "th15__bullet__proc__hook_8cpp.html#a1ec9d37009db7b2325c69d1e9e0ea1ec", null ], 4 | [ "__asm", "th15__bullet__proc__hook_8cpp.html#ad101de28d3c26b1657e7b4bbbc30b0c5", null ], 5 | [ "a2", "th15__bullet__proc__hook_8cpp.html#a87fc05ba27e1686dd619e28e979a2833", null ], 6 | [ "a3", "th15__bullet__proc__hook_8cpp.html#af0de1fc326bde4d57a359ceb08313bc5", null ], 7 | [ "a4", "th15__bullet__proc__hook_8cpp.html#a892d614072bef87b30dca097bdacff41", null ], 8 | [ "a5", "th15__bullet__proc__hook_8cpp.html#acf97767df4fac6da5e56297320eddb24", null ], 9 | [ "angle", "th15__bullet__proc__hook_8cpp.html#ab8ef1bf8a70cc07c6d55823c390a7e76", null ], 10 | [ "rad", "th15__bullet__proc__hook_8cpp.html#a28342d60f96d731271cfa20c110be44e", null ], 11 | [ "this_", "th15__bullet__proc__hook_8cpp.html#a54d657ed3ee98b29c44a70ddde9556c0", null ] 12 | ]; -------------------------------------------------------------------------------- /docs/html/th15__bullet__proc__hook_8h.js: -------------------------------------------------------------------------------- 1 | var th15__bullet__proc__hook_8h = 2 | [ 3 | [ "th15_bullet_proc_hook", "classth15__bullet__proc__hook.html", "classth15__bullet__proc__hook" ], 4 | [ "sub_455D00_t", "th15__bullet__proc__hook_8h.html#ac950546d75807fe33edc8d4f3180211d", null ], 5 | [ "sub_455E10_t", "th15__bullet__proc__hook_8h.html#a1bc78a6931b4dd2d86f26306c1f1819e", null ], 6 | [ "hook_th15_sub_455D00", "th15__bullet__proc__hook_8h.html#af5b561aa7f5c121e1b97c5b50b2113ad", null ], 7 | [ "hook_th15_sub_455E10", "th15__bullet__proc__hook_8h.html#ae37ea00faa895db619470cc70ef09356", null ], 8 | [ "sub_455D00_hook", "th15__bullet__proc__hook_8h.html#aa276774ad1eed0e94392f4a10be616bb", null ], 9 | [ "sub_455E10_hook", "th15__bullet__proc__hook_8h.html#a4dba56aff056c2fe0423c3fd1399d28e", null ] 10 | ]; -------------------------------------------------------------------------------- /docs/html/th15__player_8cpp.js: -------------------------------------------------------------------------------- 1 | var th15__player_8cpp = 2 | [ 3 | [ "B", "th15__player_8cpp.html#a111da81ae5883147168bbb8366377b10", null ], 4 | [ "D", "th15__player_8cpp.html#af316c33cc298530f245e8b55330e86b5", null ] 5 | ]; -------------------------------------------------------------------------------- /docs/html/th__ann__algo_8h.js: -------------------------------------------------------------------------------- 1 | var th__ann__algo_8h = 2 | [ 3 | [ "th_ann_algo", "classth__ann__algo.html", "classth__ann__algo" ], 4 | [ "sample", "structth__ann__algo_1_1sample.html", "structth__ann__algo_1_1sample" ], 5 | [ "NNET_FILE", "th__ann__algo_8h.html#a850e2f49d0dcdafc7ac53d064543132c", null ], 6 | [ "SAMPLE_FILE", "th__ann__algo_8h.html#a42c3d182e7cd0f1a7bf3257476a08b8c", null ], 7 | [ "SAMPLE_SIZE", "th__ann__algo_8h.html#abb438dd06eaa3add6a90ac8aae07eb3a", null ] 8 | ]; -------------------------------------------------------------------------------- /docs/html/th__config_8cpp.js: -------------------------------------------------------------------------------- 1 | var th__config_8cpp = 2 | [ 3 | [ "th_param", "th__config_8cpp.html#af6e1ff0eef25a5785f733a89fd6e07ab", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/th__config_8h.js: -------------------------------------------------------------------------------- 1 | var th__config_8h = 2 | [ 3 | [ "th_param", "structth__param.html", "structth__param" ], 4 | [ "th_param", "th__config_8h.html#ab6ee6b2bbc79916cb32f8436b850972a", null ] 5 | ]; -------------------------------------------------------------------------------- /docs/html/th__d3d9__hook_8h.js: -------------------------------------------------------------------------------- 1 | var th__d3d9__hook_8h = 2 | [ 3 | [ "th_d3d9_hook", "classth__d3d9__hook.html", "classth__d3d9__hook" ], 4 | [ "Direct3DCreate9_t", "th__d3d9__hook_8h.html#adf6462669f15f38c4858b5b4b3d2850c", null ], 5 | [ "LoadLibrary_t", "th__d3d9__hook_8h.html#acb86e84976aca3390eb431d3d31bd7ff", null ], 6 | [ "Direct3DCreate9_Hook", "th__d3d9__hook_8h.html#a2c703bd51c763af81b78569b52e0e5b9", null ], 7 | [ "Hook_D3D9_Direct3DCreate9", "th__d3d9__hook_8h.html#a7f21a267cfadaead24faa7bebcf69eaa", null ], 8 | [ "Hook_Kernel32_LoadLibraryA", "th__d3d9__hook_8h.html#a4b0782917b2a0b457b14ecc67707d906", null ], 9 | [ "LoadLibraryA_Hook", "th__d3d9__hook_8h.html#ae85bc7be8b495fcb17d841e70f4f829d", null ] 10 | ]; -------------------------------------------------------------------------------- /docs/html/th__di8__hook_8h.js: -------------------------------------------------------------------------------- 1 | var th__di8__hook_8h = 2 | [ 3 | [ "th_di8_hook", "classth__di8__hook.html", "classth__di8__hook" ], 4 | [ "DIK_KEY_DOWN", "th__di8__hook_8h.html#ac18344a8a223d720776386b08133659e", null ], 5 | [ "DIK_KEY_UP", "th__di8__hook_8h.html#aaa3a4626b2877c43cdc8c8da469d2ff0", null ], 6 | [ "dwVersion", "th__di8__hook_8h.html#afc74685fd2a008acbffa5d4fd15a8913", null ], 7 | [ "ppvOut", "th__di8__hook_8h.html#a1a02cfe1ae9d9f0ed43acdaf83ec899e", null ], 8 | [ "punkOuter", "th__di8__hook_8h.html#ab1b16efa0f3df231efc065b994ca31ee", null ], 9 | [ "riidltf", "th__di8__hook_8h.html#a40c3916bcfafeebb2bfc93aaf4172c17", null ], 10 | [ "DirectInput8Create_Hook", "th__di8__hook_8h.html#a0755bc5174abee8c3c3ecc4c3e3da8b8", null ], 11 | [ "Hook_DInput8_DirectInput8Create", "th__di8__hook_8h.html#aa8a107c4c141366fd85f1c5add98dd4b", null ], 12 | [ "HRESULT", "th__di8__hook_8h.html#a34924b1579d722424d79a6045b59979b", null ] 13 | ]; -------------------------------------------------------------------------------- /docs/html/th__vector__algo_8h.js: -------------------------------------------------------------------------------- 1 | var th__vector__algo_8h = 2 | [ 3 | [ "th_vector_algo", "classth__vector__algo.html", "classth__vector__algo" ], 4 | [ "BOT_ACTION_THRESHOLD", "th__vector__algo_8h.html#a6a5ddacbeacce8afd30a7a7239cac8b8", null ], 5 | [ "BOT_BOSS_TARGET_PRIORITY", "th__vector__algo_8h.html#a445c471ff4ad38c88585ee61c75207a9", null ], 6 | [ "BOT_BULLET_PRIORITY", "th__vector__algo_8h.html#a5821809a2dc7b24ddf360b3f6388821d", null ], 7 | [ "BOT_BULLET_PROJECTION_FACTOR", "th__vector__algo_8h.html#a71fe126171ce3ffedc5af26d669774b9", null ], 8 | [ "BOT_MACROSAFETY_DELTA", "th__vector__algo_8h.html#a1112d77e9e2a77036d5cd06d3d3ee7d0", null ], 9 | [ "BOT_MICROSAFETY_DELTA", "th__vector__algo_8h.html#ab8433e8c7d9c0b005486926d4e3e7798", null ], 10 | [ "BOT_MIN_RADIUS", "th__vector__algo_8h.html#a5a8f655e0387d4dc735e127e39c73d45", null ], 11 | [ "BOT_POWERUP_MAXY", "th__vector__algo_8h.html#af8e992d4d40ef9ae7de7d50533808ab6", null ], 12 | [ "BOT_POWERUP_MINY", "th__vector__algo_8h.html#abc65fb297c76eb9990289d8779b3b275", null ], 13 | [ "BOT_POWERUP_PRIORITY", "th__vector__algo_8h.html#a49e4370d3050ca80621b00af5c166142", null ], 14 | [ "FOCUS_FORCE_THRESHOLD", "th__vector__algo_8h.html#aabe45fb53ae2d1da46ca2d1b81758b97", null ] 15 | ]; -------------------------------------------------------------------------------- /docs/html/th__vo__algo_8h.js: -------------------------------------------------------------------------------- 1 | var th__vo__algo_8h = 2 | [ 3 | [ "th_vo_algo", "classth__vo__algo.html", "classth__vo__algo" ] 4 | ]; -------------------------------------------------------------------------------- /docs/html/twinhook_8cpp.js: -------------------------------------------------------------------------------- 1 | var twinhook_8cpp = 2 | [ 3 | [ "th_loader_t", "twinhook_8cpp.html#a986d4356d408ecaecd673cefdc26cc0d", null ], 4 | [ "DllMain", "twinhook_8cpp.html#a4710933b43c9b808d1498c96891cde4f", null ], 5 | [ "th07_init", "twinhook_8cpp.html#ae2d9cebe557bd4687e10bd60a01da3d9", null ], 6 | [ "th08_init", "twinhook_8cpp.html#aed27a89229283d702cf433d37d15154c", null ], 7 | [ "th10_init", "twinhook_8cpp.html#af7e967387f154311a1570d7f33cbdc79", null ], 8 | [ "th15_init", "twinhook_8cpp.html#af0fcc02395bf9b0cfd6bd3fcc51e7abd", null ] 9 | ]; -------------------------------------------------------------------------------- /docs/html/unionth__kbd__state.js: -------------------------------------------------------------------------------- 1 | var unionth__kbd__state = 2 | [ 3 | [ "bomb", "unionth__kbd__state.html#a5029a1acada253e4e364a7854672f8ca", null ], 4 | [ "down", "unionth__kbd__state.html#aa349962b9837818296df829855f4b1d8", null ], 5 | [ "keys", "unionth__kbd__state.html#a1cbd0631689853c74c9542e21c8a6123", null ], 6 | [ "left", "unionth__kbd__state.html#af5a2fc69979a3ac12262439cf5fea0b7", null ], 7 | [ "right", "unionth__kbd__state.html#a23d8d96ca1969f1a4899565b11fff44a", null ], 8 | [ "shot", "unionth__kbd__state.html#abac29d70acd99281907cec5dcd9ba475", null ], 9 | [ "skip", "unionth__kbd__state.html#a876492b6b7391102988dbe6628222440", null ], 10 | [ "slow", "unionth__kbd__state.html#a6e7ca2a4eb75060eb1a7845b0a2ea5fd", null ], 11 | [ "up", "unionth__kbd__state.html#a82a89b7a5fd2bad7e435909ae57e02ac", null ] 12 | ]; -------------------------------------------------------------------------------- /docs/html/vec2_8cpp.js: -------------------------------------------------------------------------------- 1 | var vec2_8cpp = 2 | [ 3 | [ "operator*", "vec2_8cpp.html#ac1e029e67359313f14e297c99245242b", null ], 4 | [ "operator*", "vec2_8cpp.html#a836196ee31c17997e89b448b646ccd0f", null ], 5 | [ "operator+", "vec2_8cpp.html#af88e7bfe4941c172e739b2ed12dc3dbf", null ], 6 | [ "operator-", "vec2_8cpp.html#a38bfd1f3fcf7ccb830294f81494c31f5", null ], 7 | [ "operator/", "vec2_8cpp.html#a0122d810a08a640e8c1b92b26bdb5552", null ], 8 | [ "operator/", "vec2_8cpp.html#a3772a36eb599e40ca3d74edf38cd899b", null ] 9 | ]; -------------------------------------------------------------------------------- /docs/html/vec2_8h.js: -------------------------------------------------------------------------------- 1 | var vec2_8h = 2 | [ 3 | [ "vec2", "classvec2.html", "classvec2" ], 4 | [ "ZERO_EPSILON", "vec2_8h.html#af0dae59815de217cff678ef4c8fec416", null ], 5 | [ "operator*", "vec2_8h.html#ac1e029e67359313f14e297c99245242b", null ], 6 | [ "operator*", "vec2_8h.html#a836196ee31c17997e89b448b646ccd0f", null ], 7 | [ "operator+", "vec2_8h.html#af88e7bfe4941c172e739b2ed12dc3dbf", null ], 8 | [ "operator-", "vec2_8h.html#a38bfd1f3fcf7ccb830294f81494c31f5", null ], 9 | [ "operator/", "vec2_8h.html#a0122d810a08a640e8c1b92b26bdb5552", null ], 10 | [ "operator/", "vec2_8h.html#a3772a36eb599e40ca3d74edf38cd899b", null ] 11 | ]; -------------------------------------------------------------------------------- /thsandbox/scene.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include "model/object.h" 5 | 6 | class scene 7 | { 8 | public: 9 | std::vector> entities; 10 | 11 | scene(); 12 | ~scene(); 13 | 14 | void render(SDL_Renderer *renderer); 15 | void tick(); 16 | }; 17 | 18 | -------------------------------------------------------------------------------- /thsandbox/thsandbox.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | Source Files 23 | 24 | 25 | 26 | 27 | Header Files 28 | 29 | 30 | -------------------------------------------------------------------------------- /twinhook/algo/th_algorithm.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | class th_player; 4 | 5 | /** 6 | * \brief A player control algorithm, which determines an action to perform based on 7 | * current game state. 8 | */ 9 | class th_algorithm 10 | { 11 | protected: 12 | /** 13 | * \brief Pointer to game specific player controller 14 | */ 15 | th_player *player; 16 | public: 17 | /** 18 | * \brief Create a th_algorithm 19 | * \param player Pointer to player controller 20 | */ 21 | th_algorithm(th_player *player) : player(player) {} 22 | 23 | /** 24 | * \brief Called when the algorithm is initialized by the player controller 25 | */ 26 | virtual void onBegin() {}; 27 | /** 28 | * \brief Called every Direct3D frame 29 | */ 30 | virtual void onTick() = 0; 31 | /** 32 | * \brief Visualize algorithm functionality by drawing to framebuffer 33 | * \param d3dDev Pointer to game's Direct3DDevice 34 | */ 35 | virtual void visualize(IDirect3DDevice9* d3dDev){} 36 | 37 | /** 38 | * \brief Handle input received from player for algorithm control 39 | * \param diKeys Key hold state 40 | * \param press Key pressed state 41 | */ 42 | virtual void handleInput(const BYTE diKeys[256], const BYTE press[256]) {} 43 | }; 44 | -------------------------------------------------------------------------------- /twinhook/config/th_config.cpp: -------------------------------------------------------------------------------- 1 | #include "th_config.h" 2 | 3 | struct th_param th_param; -------------------------------------------------------------------------------- /twinhook/config/th_config.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | // global parameters that should be constant thru every game 4 | extern struct th_param { 5 | const float EXPECTED_WINDOW_WIDTH = 640; 6 | const float EXPECTED_WINDOW_HEIGHT = 480; 7 | float WINDOW_WIDTH = EXPECTED_WINDOW_WIDTH; 8 | float WINDOW_HEIGHT = EXPECTED_WINDOW_HEIGHT; 9 | const float GAME_WIDTH = 384; 10 | const float GAME_HEIGHT = 448; 11 | const float GAME_X_OFFSET = 32; 12 | const float GAME_Y_OFFSET = 16; 13 | } th_param; -------------------------------------------------------------------------------- /twinhook/config/th_registry.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "th_registry.h" 3 | 4 | std::unordered_map th_registry::global{ 5 | 6 | }; 7 | 8 | bool th_registry::read(const std::string& key, uint32_t &retval) 9 | { 10 | if (global.find(key) == global.end()) 11 | return false; 12 | retval = global[key]; 13 | return true; 14 | } 15 | 16 | void th_registry::write(const std::string& key, uint32_t val) 17 | { 18 | global[key] = val; 19 | } 20 | -------------------------------------------------------------------------------- /twinhook/config/th_registry.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | 6 | namespace th_registry 7 | { 8 | extern std::unordered_map global; 9 | 10 | bool read(const std::string &key, uint32_t &retval); 11 | void write(const std::string &key, uint32_t val); 12 | } 13 | -------------------------------------------------------------------------------- /twinhook/control/th06_player.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "th06_player.h" 3 | #include "config/th_config.h" 4 | #include "hook/th_di8_hook.h" 5 | 6 | 7 | void th06_player::onInit() 8 | { 9 | th_player::onInit(); 10 | } 11 | 12 | void th06_player::onTick() 13 | { 14 | th_player::onTick(); 15 | } 16 | 17 | void th06_player::onBeginTick() 18 | { 19 | th_player::onBeginTick(); 20 | } 21 | 22 | void th06_player::onAfterTick() 23 | { 24 | th_player::onAfterTick(); 25 | } 26 | 27 | void th06_player::draw(IDirect3DDevice9* d3dDev) 28 | { 29 | th_player::draw(d3dDev); 30 | } 31 | 32 | void th06_player::handleInput(const BYTE diKeys[256], const BYTE press[256]) 33 | { 34 | th_player::handleInput(diKeys, press); 35 | } 36 | 37 | void th06_player::onEnableChanged(bool enable) 38 | { 39 | th_player::onEnableChanged(enable); 40 | } 41 | 42 | player th06_player::getPlayerEntity() 43 | { 44 | // TODO no implementation 45 | return player{aabb()}; 46 | } 47 | -------------------------------------------------------------------------------- /twinhook/control/th06_player.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #pragma once 3 | #include "th_player.h" 4 | 5 | class th06_player : public th_player 6 | { 7 | public: 8 | th06_player() : th_player(gs_addr{ (uint8_t*)0x477834,(uint8_t*)0x474E5C }) {} 9 | ~th06_player() = default; 10 | 11 | void onInit() override; 12 | void onTick() override; 13 | void onBeginTick() override; 14 | void onAfterTick() override; 15 | void draw(IDirect3DDevice9* d3dDev) override; 16 | 17 | void handleInput(const BYTE diKeys[256], const BYTE press[256]) override; 18 | void onEnableChanged(bool enable) override; 19 | 20 | private: 21 | player getPlayerEntity() override; 22 | }; 23 | -------------------------------------------------------------------------------- /twinhook/control/th07_player.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "th07_player.h" 3 | #include "util/cdraw.h" 4 | #include "gfx/di8_input_overlay.h" 5 | #include "hook/th_di8_hook.h" 6 | #include "directx/IDI8ADevice_Wrapper.h" 7 | #include "config/th_config.h" 8 | #include "hook/th_d3d9_hook.h" 9 | #include "gfx/th_info_overlay.h" 10 | 11 | void th07_player::onInit() 12 | { 13 | th_player::onInit(); 14 | } 15 | 16 | void th07_player::onTick() 17 | { 18 | th_player::onTick(); 19 | } 20 | 21 | void th07_player::onBeginTick() 22 | { 23 | th_player::onBeginTick(); 24 | } 25 | 26 | void th07_player::onAfterTick() 27 | { 28 | th_player::onAfterTick(); 29 | } 30 | 31 | void th07_player::handleInput(const BYTE diKeys[256], const BYTE press[256]) 32 | { 33 | th_player::handleInput(diKeys, press); 34 | } 35 | 36 | void th07_player::onEnableChanged(bool enable) 37 | { 38 | th_player::onEnableChanged(enable); 39 | } 40 | 41 | player th07_player::getPlayerEntity() 42 | { 43 | // TODO 44 | return player{ aabb() }; 45 | } 46 | 47 | void th07_player::draw(IDirect3DDevice9* d3dDev) 48 | { 49 | th_player::draw(d3dDev); 50 | } 51 | 52 | -------------------------------------------------------------------------------- /twinhook/control/th07_player.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "th_player.h" 3 | 4 | class th07_player : public th_player 5 | { 6 | public: 7 | 8 | th07_player() : th_player(gs_addr{ (uint8_t*)0x4BDCA0, (uint8_t*)0x4B9E50 }) {} 9 | ~th07_player() = default; 10 | 11 | void onInit() override; 12 | void onTick() override; 13 | void onBeginTick() override; 14 | void onAfterTick() override; 15 | void draw(IDirect3DDevice9* d3dDev) override; 16 | 17 | void handleInput(const BYTE diKeys[256], const BYTE press[256]) override; 18 | void onEnableChanged(bool enable) override; 19 | player getPlayerEntity() override; 20 | }; 21 | -------------------------------------------------------------------------------- /twinhook/control/th08_player.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "th_player.h" 3 | 4 | 5 | class th08_player : public th_player 6 | { 7 | public: 8 | th08_player() : th_player(gs_addr{ (uint8_t*)0x017D6110, (uint8_t*)0x164D52C }) {} 9 | ~th08_player() = default; 10 | 11 | void onInit() override; 12 | void onTick() override; 13 | void onBeginTick() override; 14 | void onAfterTick() override; 15 | void draw(IDirect3DDevice9* d3dDev) override; 16 | 17 | void handleInput(const BYTE diKeys[256], const BYTE press[256]) override; 18 | void onEnableChanged(bool enable) override; 19 | player getPlayerEntity() override; 20 | }; 21 | -------------------------------------------------------------------------------- /twinhook/control/th10_player.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "th_player.h" 3 | 4 | class th10_player : public th_player 5 | { 6 | public: 7 | th10_player() : th_player(gs_addr{ (uint8_t*)0x477834,(uint8_t*)0x474E5C }) {} 8 | ~th10_player() = default; 9 | 10 | void onInit() override; 11 | void onTick() override; 12 | void onBeginTick() override; 13 | void onAfterTick() override; 14 | void draw(IDirect3DDevice9* d3dDev) override; 15 | 16 | void handleInput(const BYTE diKeys[256], const BYTE press[256]) override; 17 | void onEnableChanged(bool enable) override; 18 | 19 | private: 20 | void doBulletPoll(); 21 | void doEnemyPoll(); 22 | void doPowerupPoll(); 23 | void doLaserPoll(); 24 | 25 | player getPlayerEntity() override; 26 | }; 27 | -------------------------------------------------------------------------------- /twinhook/control/th11_player.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "th_player.h" 3 | 4 | class th11_player : public th_player 5 | { 6 | public: 7 | // TODO populate game-specific addresses 8 | th11_player() : th_player(gs_addr{ (uint8_t*) 0x4A8EB4,(uint8_t*)0x4C93C0 }) {} 9 | ~th11_player() = default; 10 | 11 | void onInit() override; 12 | void onTick() override; 13 | void onBeginTick() override; 14 | void onAfterTick() override; 15 | void draw(IDirect3DDevice9* d3dDev) override; 16 | 17 | void handleInput(const BYTE diKeys[256], const BYTE press[256]) override; 18 | void onEnableChanged(bool enable) override; 19 | 20 | private: 21 | void doBulletPoll(); 22 | void doEnemyPoll(); 23 | void doPowerupPoll(); 24 | void doLaserPoll(); 25 | 26 | player getPlayerEntity() override; 27 | }; 28 | -------------------------------------------------------------------------------- /twinhook/control/th15_player.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "th_player.h" 3 | 4 | class th15_player : public th_player 5 | { 6 | public: 7 | th15_player() : th_player(gs_addr{ (uint8_t*)0x004E9BB8,(uint8_t*)0x4E6F28 }) {} 8 | ~th15_player() = default; 9 | 10 | void onInit() override; 11 | void onTick() override; 12 | void onBeginTick() override; 13 | void onAfterTick() override; 14 | void draw(IDirect3DDevice9* d3dDev) override; 15 | 16 | void handleInput(const BYTE diKeys[256], const BYTE press[256]) override; 17 | void onEnableChanged(bool enable) override; 18 | 19 | private: 20 | /** 21 | * Note: the size for players in th15 is radius, not diameter. 22 | */ 23 | player getPlayerEntity() override; 24 | }; 25 | -------------------------------------------------------------------------------- /twinhook/gfx/di8_input_overlay.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "di8_input_overlay.h" 3 | 4 | #include "util/cdraw.h" 5 | #include "hook/th_di8_hook.h" 6 | #include "config/th_config.h" 7 | 8 | void DI8_Overlay_RenderInput(IDirect3DDevice9 *d3dDev, th_kbd_state state) 9 | { 10 | for (int i = 0; i < sizeof kg_MonitoredKeys / sizeof key_graphic; i++) 11 | { 12 | struct key_graphic kg = kg_MonitoredKeys[i]; 13 | float x = th_param.WINDOW_WIDTH - (640 - 520) + kg.x * InputOverlayUnitSize; 14 | float y = th_param.WINDOW_HEIGHT - (480 - 430) + kg.y * InputOverlayUnitSize; 15 | float w = kg.w * InputOverlayUnitSize; 16 | float h = kg.h * InputOverlayUnitSize; 17 | D3DCOLOR c = state.keys[kg.vkCode] ? kg.active_color : kg.default_color; 18 | cdraw::fillRect(x, y, w, h, c); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /twinhook/gfx/imgui_controller.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "imgui_controller.h" 3 | #include 4 | #include 5 | #include 6 | #include "hook/th_wndproc_imgui_hook.h" 7 | #include 8 | 9 | using namespace ImGui; 10 | 11 | void imgui_controller::init() 12 | { 13 | CHECK(pD3DDev->CreateStateBlock(D3DSBT_ALL, &d3d9_state_block) >= 0); 14 | 15 | th_wndproc_imgui_hook::bind(hWnd); 16 | 17 | IMGUI_CHECKVERSION(); 18 | CreateContext(); 19 | ImGuiIO& io = GetIO(); (void)io; 20 | io.FontAllowUserScaling = true; 21 | //io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls 22 | ImGui_ImplWin32_Init(hWnd); 23 | ImGui_ImplDX9_Init(pD3DDev); 24 | StyleColorsClassic(); 25 | } 26 | 27 | void imgui_controller::preframe() 28 | { 29 | ImGui_ImplDX9_NewFrame(); 30 | ImGui_ImplWin32_NewFrame(); 31 | NewFrame(); 32 | } 33 | 34 | void imgui_controller::render() 35 | { 36 | Render(); 37 | 38 | // We must apply state of working case, then return state back to normal 39 | CHECK(pD3DDev->CreateStateBlock(D3DSBT_ALL, &d3d9_sb_preserve) >= 0); 40 | d3d9_state_block->Apply(); 41 | ImGui_ImplDX9_RenderDrawData(GetDrawData()); 42 | d3d9_sb_preserve->Apply(); 43 | d3d9_sb_preserve->Release(); 44 | } 45 | -------------------------------------------------------------------------------- /twinhook/gfx/imgui_controller.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | class imgui_controller 6 | { 7 | HWND hWnd = NULL; 8 | IDirect3DDevice9 *pD3DDev = NULL; 9 | IDirect3DStateBlock9 *d3d9_state_block = NULL; 10 | IDirect3DStateBlock9 *d3d9_sb_preserve = NULL; 11 | 12 | public: 13 | imgui_controller(HWND hWnd, IDirect3DDevice9 *pD3DDev) : hWnd(hWnd), pD3DDev(pD3DDev){} 14 | ~imgui_controller() 15 | { 16 | if (d3d9_state_block) 17 | d3d9_state_block->Release(); 18 | if (d3d9_sb_preserve) 19 | d3d9_sb_preserve->Release(); 20 | } 21 | 22 | imgui_controller(const imgui_controller& other) = delete; 23 | 24 | imgui_controller(imgui_controller&& other) noexcept 25 | : hWnd{other.hWnd}, 26 | pD3DDev{other.pD3DDev}, 27 | d3d9_state_block{other.d3d9_state_block}, 28 | d3d9_sb_preserve{other.d3d9_sb_preserve} 29 | { 30 | } 31 | 32 | imgui_controller& operator=(imgui_controller&& other) noexcept 33 | { 34 | using std::swap; 35 | swap(*this, other); 36 | return *this; 37 | } 38 | 39 | void init(); 40 | void preframe(); 41 | void render(); 42 | }; 43 | -------------------------------------------------------------------------------- /twinhook/gfx/imgui_impl_win32.h: -------------------------------------------------------------------------------- 1 | // dear imgui: Platform Binding for Windows (standard windows API for 32 and 64 bits applications) 2 | // This needs to be used along with a Renderer (e.g. DirectX11, OpenGL3, Vulkan..) 3 | 4 | // Implemented features: 5 | // [X] Platform: Clipboard support (for Win32 this is actually part of core imgui) 6 | // [X] Platform: Mouse cursor shape and visibility. Disable with 'io.ConfigFlags |= ImGuiConfigFlags_NoMouseCursorChange'. 7 | // [X] Platform: Keyboard arrays indexed using VK_* Virtual Key Codes, e.g. ImGui::IsKeyPressed(VK_SPACE). 8 | // [X] Platform: Gamepad support. Enabled with 'io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad'. 9 | 10 | #pragma once 11 | 12 | IMGUI_IMPL_API bool ImGui_ImplWin32_Init(void* hwnd); 13 | IMGUI_IMPL_API void ImGui_ImplWin32_Shutdown(); 14 | IMGUI_IMPL_API void ImGui_ImplWin32_NewFrame(); 15 | 16 | // Handler for Win32 messages, update mouse/keyboard data. 17 | // You may or not need this for your implementation, but it can serve as reference for handling inputs. 18 | // Intentionally commented out to avoid dragging dependencies on types. You can COPY this line into your .cpp code instead. 19 | /* 20 | IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); 21 | */ 22 | -------------------------------------------------------------------------------- /twinhook/gfx/imgui_mixins.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "imgui_mixins.h" 3 | #include 4 | 5 | using namespace ImGui; 6 | 7 | void ShowHelpMarker(const char* desc) 8 | { 9 | TextDisabled("(?)"); 10 | if (IsItemHovered()) 11 | { 12 | BeginTooltip(); 13 | PushTextWrapPos(GetFontSize() * 35.0f); 14 | TextUnformatted(desc); 15 | PopTextWrapPos(); 16 | EndTooltip(); 17 | } 18 | } -------------------------------------------------------------------------------- /twinhook/gfx/imgui_mixins.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | void ShowHelpMarker(const char* desc); -------------------------------------------------------------------------------- /twinhook/gfx/imgui_window.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | 4 | /** 5 | * \brief Initialize the external D3D9 renderer and window that 6 | * IMGUI will use to render debug information onto 7 | * \return Whether the initialization succeeded or not 8 | */ 9 | bool imgui_window_init(); 10 | 11 | /** 12 | * \brief Execute operations for preparing the current frame 13 | */ 14 | bool imgui_window_preframe(); 15 | 16 | /** 17 | * \brief Process the message queue and render buffer to screen 18 | * \return Whether the operation succeeded or not 19 | * Will return false if the window was closed 20 | */ 21 | bool imgui_window_render(); 22 | 23 | bool imgui_window_cleanup(); -------------------------------------------------------------------------------- /twinhook/gfx/th_info_overlay.cpp: -------------------------------------------------------------------------------- 1 | #include "../stdafx.h" 2 | #include "th_info_overlay.h" 3 | #include "util/cdraw.h" 4 | #include "config/th_config.h" 5 | 6 | static char BotOverlayRenderer_StringBuffer[256]; 7 | static int BotOverlayRenderer_DebugLineOffset = 0; 8 | 9 | void BotOverlayRenderer_BeginDebugString() 10 | { 11 | cdraw::fillRect(th_param.WINDOW_WIDTH - (650 - 445), th_param.WINDOW_HEIGHT - (480 - 250), 12 | th_param.WINDOW_WIDTH, th_param.WINDOW_HEIGHT, D3DCOLOR_ARGB(200, 0, 0, 0)); 13 | BotOverlayRenderer_DebugLineOffset = 0; 14 | } 15 | 16 | // BUG this code actually uses a ridiculous amount of computing power 17 | // render text to a double-buffer then blit onto screen instead 18 | // or use ID3DXSprite 19 | void BotOverlayRenderer_DisplayDebugString(D3DCOLOR color, const char* fmt, ...) 20 | { 21 | va_list args; 22 | va_start(args, fmt); 23 | vsprintf_s(BotOverlayRenderer_StringBuffer, 256, fmt, args); 24 | cdraw::text(BotOverlayRenderer_StringBuffer, color, 25 | (int)th_param.WINDOW_WIDTH - (640 - 450), (int)th_param.WINDOW_HEIGHT - (480 - 255) + 15 * BotOverlayRenderer_DebugLineOffset); 26 | va_end(args); 27 | BotOverlayRenderer_DebugLineOffset++; 28 | } -------------------------------------------------------------------------------- /twinhook/gfx/th_info_overlay.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #define _D BotOverlayRenderer_DisplayDebugString 3 | #define _B BotOverlayRenderer_BeginDebugString 4 | 5 | void BotOverlayRenderer_BeginDebugString(); 6 | 7 | // BUG this code actually uses a ridiculous amount of computing power 8 | // render text to a double-buffer then blit onto screen instead 9 | // or use ID3DXSprite 10 | void BotOverlayRenderer_DisplayDebugString(D3DCOLOR color, const char* fmt, ...); -------------------------------------------------------------------------------- /twinhook/hook/th07_bullet_proc_hook.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "th_hook.h" 3 | #include "control/th07_player.h" 4 | 5 | typedef int(__fastcall *sub_424290_t)(void *ecx); 6 | int __fastcall sub_424290_Hook(void *ecx); 7 | void Hook_TH07_sub_424290(); 8 | 9 | class th07_bullet_proc_hook : public th_hook 10 | { 11 | static th07_bullet_proc_hook *instance; 12 | public: 13 | th07_bullet_proc_hook(th07_player *player) : th_hook(player) {} 14 | 15 | static void bind(th07_player *player); 16 | static th07_bullet_proc_hook *inst(); 17 | 18 | static void vectorUpdateHook(void *ecx); 19 | }; 20 | -------------------------------------------------------------------------------- /twinhook/hook/th08_bullet_proc_hook.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "th_hook.h" 3 | #include "../control/th08_player.h" 4 | 5 | typedef int(__fastcall *sub_410A70_t)(int a1, int a2, int a3); 6 | int __fastcall sub_410A70_Hook(int a1, int a2, int a3); 7 | void Hook_TH08_sub_410A70(); 8 | 9 | class th08_bullet_proc_hook : public th_hook 10 | { 11 | static th08_bullet_proc_hook *instance; 12 | public: 13 | th08_bullet_proc_hook(th08_player *player) : th_hook(player) {} 14 | 15 | static void bind(th08_player *player); 16 | static th08_bullet_proc_hook *inst(); 17 | 18 | static void vectorUpdateHook(int retaddr, int a1, int a2, int a3); 19 | }; 20 | -------------------------------------------------------------------------------- /twinhook/hook/th15_bullet_proc_hook.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "th_hook.h" 3 | #include "../control/th15_player.h" 4 | 5 | 6 | typedef signed int (__stdcall *sub_455D00_t)(int a1, int a2, int a3); 7 | typedef signed int (__stdcall *sub_455E10_t)(float *a3, float a4, int a5); 8 | 9 | // signed int __userpurge _col_chk@(float fRadius@, int pPos, int a3) 10 | int __stdcall sub_455D00_hook(int pPos, int a3); 11 | // signed int __userpurge _laser_col_chk@(__m128 a1@, float a2@, 12 | // float *a3, float a4, int a5) 13 | int __stdcall sub_455E10_hook(float *a3, float a4, int a5); 14 | 15 | void hook_th15_sub_455D00(); 16 | void hook_th15_sub_455E10(); 17 | 18 | class th15_bullet_proc_hook : public th_hook 19 | { 20 | static th15_bullet_proc_hook *instance; 21 | public: 22 | th15_bullet_proc_hook(th15_player *player) : th_hook(player) {} 23 | 24 | static void bind(th15_player *player); 25 | static th15_bullet_proc_hook *inst(); 26 | }; 27 | -------------------------------------------------------------------------------- /twinhook/hook/th_d3d9_hook.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "th_hook.h" 3 | #include "../control/th_player.h" 4 | #include "../directx/ID3D9Device_Wrapper.h" 5 | 6 | class th_di8_hook; 7 | 8 | struct Direct3D9Hook; 9 | 10 | IDirect3D9* WINAPI Direct3DCreate9_Hook(UINT sdkVers); 11 | typedef IDirect3D9* (WINAPI *Direct3DCreate9_t)(UINT SDKVersion); 12 | void Hook_D3D9_Direct3DCreate9(); 13 | 14 | struct Direct3D9Hook; 15 | 16 | HMODULE WINAPI LoadLibraryA_Hook(LPCSTR lpFileName); 17 | typedef HMODULE(WINAPI *LoadLibrary_t)(LPCSTR); 18 | void Hook_Kernel32_LoadLibraryA(); 19 | 20 | /** 21 | * \brief func hook for d3d9 22 | * \warning only for d3d8 -> d3d9 patch 23 | */ 24 | class th_d3d9_hook : th_hook 25 | { 26 | static th_d3d9_hook *instance; 27 | public: 28 | Direct3DDevice9Wrapper *d3ddev9_wrapper = nullptr; 29 | 30 | explicit th_d3d9_hook(th_player *player) : th_hook(player) {} 31 | virtual ~th_d3d9_hook() = default; 32 | 33 | static void bind(th_player *player, bool twoStage); 34 | static th_d3d9_hook* inst(); 35 | 36 | static void d3d9InitHook(IDirect3DDevice9 *d3dDev); 37 | static void d3d9BeginHook(IDirect3DDevice9 *d3dDev); 38 | static void d3d9EndHook(IDirect3DDevice9 *d3dDev); 39 | }; 40 | -------------------------------------------------------------------------------- /twinhook/hook/th_hook.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "../control/th_player.h" 3 | 4 | class th_hook 5 | { 6 | public: 7 | th_player *player; 8 | 9 | th_hook(th_player *player) : player(player) {} 10 | virtual ~th_hook() = default; 11 | }; 12 | -------------------------------------------------------------------------------- /twinhook/hook/th_wndproc_imgui_hook.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "th_wndproc_imgui_hook.h" 3 | 4 | static LONG_PTR originalWndProc = NULL; 5 | 6 | static LRESULT CALLBACK WndProcHook(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) 7 | { 8 | if (ImGui_ImplWin32_WndProcHandler(hWnd, msg, wParam, lParam)) 9 | return TRUE; 10 | return CallWindowProc((WNDPROC)originalWndProc, hWnd, msg, wParam, lParam); 11 | } 12 | 13 | void th_wndproc_imgui_hook::bind(HWND hWnd) 14 | { 15 | originalWndProc = SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG_PTR)WndProcHook); 16 | } 17 | -------------------------------------------------------------------------------- /twinhook/hook/th_wndproc_imgui_hook.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | * IMGUI requires a handler in WndProc in order to process input. 5 | * We give it that by replacing the game's WndProc with a MITM-style 6 | * hook. 7 | */ 8 | 9 | extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); 10 | static LRESULT CALLBACK WndProcHook(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); 11 | 12 | namespace th_wndproc_imgui_hook 13 | { 14 | void bind(HWND hWnd); 15 | } -------------------------------------------------------------------------------- /twinhook/info/keypress_detect.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "keypress_detect.h" 3 | 4 | void keypress_detect::tick(const BYTE state[256], BYTE pressed[256]) 5 | { 6 | for(int i = 0; i < 256; ++i) 7 | { 8 | if (!last_state[i] && state[i]) 9 | pressed[i] = 1; 10 | else 11 | pressed[i] = 0; 12 | } 13 | memcpy(last_state, state, 256); 14 | } 15 | -------------------------------------------------------------------------------- /twinhook/info/keypress_detect.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /** 4 | * \brief Detect changes in DirectInput keyboard state representative of keypresses 5 | */ 6 | class keypress_detect 7 | { 8 | BYTE last_state[256] = {0}; 9 | 10 | public: 11 | keypress_detect() {} 12 | 13 | /** 14 | * \brief Runs key press detection tick on key input frame 15 | * \param state State of keyboard 16 | * \return Vector of key presses by virtual key code 17 | */ 18 | void tick(const BYTE state[256], BYTE pressed[256]); 19 | }; -------------------------------------------------------------------------------- /twinhook/model/aabb.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include "entity.h" 8 | 9 | class aabb : public entity 10 | { 11 | public: 12 | vec2 position; 13 | vec2 size; 14 | 15 | aabb(const vec2& position = vec2(), const vec2& velocity = vec2(), const vec2& size = vec2(1, 1)) 16 | : entity(AABB, velocity), 17 | position(position), size(size) {} 18 | 19 | 20 | aabb(const aabb& other) 21 | : entity{other}, position{other.position}, size{other.size} {} 22 | 23 | vec2 com() const override; 24 | std::shared_ptr translate(vec2 delta) const override; 25 | std::shared_ptr withVelocity(vec2 newVelocity) const override; 26 | std::shared_ptr boundingBox() const override; 27 | 28 | float willExit(const entity& o) const override; 29 | float willCollideWith(const entity& o) const override; 30 | 31 | polygon toPolygon() const; 32 | 33 | std::ostream& serialize(std::ostream& os) const override; 34 | }; 35 | -------------------------------------------------------------------------------- /twinhook/model/circle.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include "util/vec2.h" 8 | #include "entity.h" 9 | 10 | class aabb; 11 | 12 | class circle : public entity 13 | { 14 | public: 15 | vec2 center; 16 | float radius; 17 | 18 | circle(const vec2& center = vec2(), const vec2& velocity = vec2(), float radius = 1) 19 | :entity(Circle, velocity), center(center), radius(radius) {} 20 | 21 | vec2 com() const override; 22 | std::shared_ptr translate(vec2 delta) const override; 23 | std::shared_ptr withVelocity(vec2 newVelocity) const override; 24 | std::shared_ptr boundingBox() const override; 25 | 26 | float willExit(const entity& o) const override; 27 | float willCollideWith(const entity& o) const override; 28 | 29 | std::ostream& serialize(std::ostream& os) const override; 30 | 31 | }; 32 | -------------------------------------------------------------------------------- /twinhook/model/entity.cpp: -------------------------------------------------------------------------------- 1 | #include "entity.h" 2 | 3 | std::shared_ptr entity::entityAtCollision(const entity& o) const 4 | { 5 | float t = this->willCollideWith(o); 6 | if (t < 0) 7 | return nullptr; 8 | return this->translate(t * this->velocity); 9 | } 10 | 11 | std::ostream& operator<<(std::ostream& os, const entity& o) 12 | { 13 | return o.serialize(os); 14 | } 15 | 16 | void swap(entity& lhs, entity& rhs) noexcept 17 | { 18 | using std::swap; 19 | swap(lhs.type, rhs.type); 20 | swap(lhs.velocity, rhs.velocity); 21 | } 22 | -------------------------------------------------------------------------------- /twinhook/model/obb.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "obb.h" 3 | 4 | std::vector obb::toVertices(const vec2& position, float length, float radius, float angle) 5 | { 6 | return { 7 | vec2(0, radius).rotate(angle) + position, 8 | vec2(0, -radius).rotate(angle) + position, 9 | vec2(length, -radius).rotate(angle) + position, 10 | vec2(length, radius).rotate(angle) + position 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /twinhook/model/obb.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | 6 | #include "util/vec2.h" 7 | #include "polygon.h" 8 | 9 | class obb : public polygon 10 | { 11 | static std::vector toVertices(const vec2& position, 12 | float length, float radius, float angle); 13 | public: 14 | obb(const vec2& position, float length, float radius, float angle, const vec2& velocity = vec2()) 15 | : polygon(toVertices(position, length, radius, angle), velocity) {} 16 | }; 17 | -------------------------------------------------------------------------------- /twinhook/model/object.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "entity.h" 4 | #include "aabb.h" 5 | #include "circle.h" 6 | #include "polygon.h" 7 | #include "obb.h" 8 | -------------------------------------------------------------------------------- /twinhook/model/polygon.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | #include "util/vec2.h" 8 | #include "entity.h" 9 | 10 | class polygon : public entity 11 | { 12 | public: 13 | std::vector points; 14 | 15 | polygon(std::vector points, const vec2& velocity = vec2()) 16 | : entity(Polygon, velocity), points(std::move(points)) {} 17 | 18 | vec2 com() const override; 19 | std::shared_ptr translate(vec2 delta) const override; 20 | std::shared_ptr withVelocity(vec2 newVelocity) const override; 21 | std::shared_ptr boundingBox() const override; 22 | 23 | float willExit(const entity& o) const override; 24 | float willCollideWith(const entity& o) const override; 25 | 26 | std::ostream& serialize(std::ostream& os) const override; 27 | }; 28 | -------------------------------------------------------------------------------- /twinhook/patch/th08_patch_autobomb.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "th_patch.h" 3 | 4 | class th08_patch_autobomb : public th_patch 5 | { 6 | public: 7 | th08_patch_autobomb() : th_patch({ 8 | th_patch_def((void*)0x0044CC18, "\xFF\x89", 2), 9 | th_patch_def((void*)0x0044CC21, "\x66\xC7\x05\x28\xD5\x64\x01\x02", 8) 10 | }) {} 11 | }; 12 | -------------------------------------------------------------------------------- /twinhook/patch/th10_patch_autobomb.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "th_patch.h" 3 | 4 | class th10_patch_autobomb : public th_patch 5 | { 6 | public: 7 | th10_patch_autobomb() : th_patch({ 8 | th_patch_def((void*)0x00425C13, "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90", 13) 9 | }){} 10 | }; 11 | -------------------------------------------------------------------------------- /twinhook/patch/th11_patch_dinput_fix.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "th_patch.h" 3 | 4 | /* 5 | * th11 seems to have some issues initializing DirectInput, which causes the bot to fail 6 | * to send inputs to the game correctly. 7 | * 8 | * This patch is a translation into "twinject-like" patch notation from the thcrap base_tsa 9 | * package, licensed under the Unlicense. 10 | * https://github.com/thpatch/thcrap-tsa/blob/master/base_tsa/th11.js 11 | * Thank you! 12 | */ 13 | class th11_patch_dinput_fix : public th_patch 14 | { 15 | public: 16 | /* NOTE: assuming base address is always 0x400000, don't know if that's 17 | * always true though 18 | */ 19 | th11_patch_dinput_fix() : th_patch({ 20 | th_patch_def((void*)0x446ADD, "\x50\x8b\x18", 3), 21 | th_patch_def((void*)0x446D20, "\x58\x31\xdb\xe9\x88\x0d\x00\x00", 8), 22 | th_patch_def((void*)0x4456C3, "\xe8\x15\x14\x00\x00", 5), 23 | th_patch_def((void*)0x445737, "\xa1\x88\x3d\x4c\x00\x85\xc0\x0f\x84", 9), 24 | }) {} 25 | }; 26 | -------------------------------------------------------------------------------- /twinhook/patch/th15_patch_autobomb.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "th_patch.h" 3 | 4 | class th15_patch_autobomb : public th_patch 5 | { 6 | public: 7 | th15_patch_autobomb() : th_patch({ 8 | th_patch_def((void*)0x00454CC9, "\xC6", 1) 9 | }){} 10 | }; 11 | -------------------------------------------------------------------------------- /twinhook/patch/th_patch_registry.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include "patch/th_patch.h" 5 | 6 | namespace th_registry { 7 | extern std::unordered_map mapPatch; 8 | 9 | th_patch* getPatch(const std::string &patchName); 10 | th_patch::result patch(const std::string &patchName); 11 | th_patch::result unpatch(const std::string &patchName); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /twinhook/stdafx.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define DIRECTINPUT_VERSION 0x0900 4 | //#define _WIN32_WINNT 0x0500 5 | #define NOMINMAX 6 | 7 | // windows includes 8 | #include 9 | #include 10 | #include 11 | 12 | // std includes 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | 23 | // directx includes 24 | #include 25 | #include 26 | #include 27 | 28 | // mathematics includes 29 | #include 30 | 31 | // user-defined includes 32 | #include 33 | #include "util/assert.h" 34 | 35 | 36 | -------------------------------------------------------------------------------- /twinhook/util/assert.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "stdafx.h" 3 | #include 4 | 5 | #define STRINGIFY(x) #x 6 | #define TOSTRING(x) STRINGIFY(x) 7 | 8 | #define CHECK(x) do{if(!(x)){SPDLOG_CRITICAL("Assertion Failed: " TOSTRING(x)); exit(1);}}while(0) 9 | 10 | -------------------------------------------------------------------------------- /twinhook/util/cdraw.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "stdafx.h" 3 | #define _USE_MATH_DEFINES 4 | 5 | namespace cdraw 6 | { 7 | struct D3DTLVERTEX 8 | { 9 | float x, y, z, rhw; 10 | DWORD color; 11 | }; 12 | 13 | void init(IDirect3DDevice9 *d3dDev, RECT destRect); 14 | void begin(); 15 | void end(); 16 | 17 | void fillRect(float x, float y, float w, float h, D3DCOLOR Color); 18 | void rect(float x, float y, float w, float h, D3DCOLOR Color); 19 | 20 | void text(char *str, D3DCOLOR color, int x, int y); 21 | void text(char *str, int len, D3DCOLOR color, int x, int y); 22 | void text(char *str, D3DCOLOR color, int x, int y, LPD3DXSPRITE sprite); 23 | void text(char *str, int len, D3DCOLOR color, int x, int y, LPD3DXSPRITE sprite); 24 | 25 | void line(float x1, float y1, float x2, float y2, D3DCOLOR color); 26 | void circle(float x, float y, float radius, int sides, DWORD color); 27 | } 28 | -------------------------------------------------------------------------------- /twinhook/util/color.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | * https://stackoverflow.com/questions/3018313/algorithm-to-convert-rgb-to-hsv-and-hsv-to-rgb-in-range-0-255-for-both 4 | */ 5 | 6 | #define D3DCOLOR_HSV(h,s,v) (hsv2d3d(hsv{h,s,v}) 7 | typedef struct { 8 | double r; // a fraction between 0 and 1 9 | double g; // a fraction between 0 and 1 10 | double b; // a fraction between 0 and 1 11 | } rgb; 12 | 13 | typedef struct { 14 | double h; // angle in degrees 15 | double s; // a fraction between 0 and 1 16 | double v; // a fraction between 0 and 1 17 | } hsv; 18 | 19 | hsv rgb2hsv(rgb in); 20 | rgb hsv2rgb(hsv in); 21 | D3DCOLOR hsv2d3d(hsv in); -------------------------------------------------------------------------------- /twinhook/util/detour.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | #include "detour.h" 3 | 4 | bool DetourFunction(PVOID *ppPointer, PVOID pDetour) 5 | { 6 | DetourTransactionBegin(); 7 | DetourUpdateThread(GetCurrentThread()); 8 | if (DetourAttach(ppPointer, pDetour)) 9 | return false; 10 | if (DetourTransactionCommit() != NO_ERROR) 11 | return false; 12 | return true; 13 | } -------------------------------------------------------------------------------- /twinhook/util/detour.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | bool DetourFunction(PVOID *ppPointer, PVOID pDetour); -------------------------------------------------------------------------------- /twinhook/util/spdlog_msvc.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | class spdlog_msvc 9 | { 10 | std::shared_ptr msvc_sink; 11 | std::shared_ptr logger; 12 | 13 | public: 14 | spdlog_msvc() 15 | { 16 | msvc_sink = std::make_shared(); 17 | logger = std::make_shared("msvc_logger", msvc_sink); 18 | spdlog::set_default_logger(logger); 19 | } 20 | 21 | std::shared_ptr get_logger() const 22 | { 23 | return logger; 24 | } 25 | }; 26 | -------------------------------------------------------------------------------- /twinject/debugger.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | DWORD OnLoadDllDebugEvent(const LPDEBUG_EVENT DebugEv); 6 | DWORD OnOutputDebugStringEvent(const LPDEBUG_EVENT debug_event); 7 | void EnterDebugLoop(const LPDEBUG_EVENT DebugEv); -------------------------------------------------------------------------------- /twinject/twinject.toml: -------------------------------------------------------------------------------- 1 | ################################### 2 | # TWINJECT INJECTOR CONFIGURATION # 3 | ################################### 4 | 5 | debug = true # if debug = true, use debug paths instead of searching current directory 6 | 7 | ### AUTOMATIC INJECTOR CONFIGURATION 8 | bin = "th10.exe" # name of th binary in current directory 9 | env = "th10" # name of internal environment/th_player type 10 | dll = "twinhook.dll" # name of twinhook DLL (should always be "twinhook.dll") 11 | 12 | ### HARDCODED DEBUG PATHS ### 13 | # if debug = true, the following hardcoded paths are used for env = loader.env 14 | 15 | twinhook_path_dbg = "D:\\Programming\\Multi\\twinject\\Debug\\twinhook.dll" 16 | twinhook_path_rls = "D:\\Programming\\Multi\\twinject\\Release\\twinhook.dll" 17 | 18 | [th06] 19 | bin = "th06e.exe" 20 | path = "D:\\Programming\\Multi\\th06" 21 | 22 | [th07] 23 | bin = "th07.exe" 24 | path = "D:\\Programming\\Multi\\th07" 25 | 26 | [th08] 27 | bin = "th08.exe" 28 | path = "D:\\Programming\\Multi\\th08" 29 | 30 | [th10] 31 | bin = "th10.exe" 32 | path = "D:\\Programming\\Multi\\th10" 33 | 34 | [th11] 35 | bin = "th11.exe" 36 | path = "D:\\Programming\\Multi\\th11" 37 | 38 | [th15] 39 | bin = "th15.exe" 40 | path = "D:\\Programming\\Multi\\th15" 41 | 42 | 43 | -------------------------------------------------------------------------------- /twinject/winmanip.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | LPTSTR GetFileName(LPTSTR path); 6 | LPTSTR GetFilePathFromHandle(HANDLE hFile); -------------------------------------------------------------------------------- /vcxproj/Detours/Detours.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | $(SolutionDir)dependencies/Detours/include;$(IncludePath) 7 | $(LibraryPath) 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /vcxproj/ImGui/ImGui.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | <_PropertySheetDisplayName>ImGui 7 | $(SolutionDir)dependencies\imgui;$(SolutionDir)dependencies\directx_2010\Include;$(IncludePath) 8 | 9 | 10 | 11 | d3d9.lib;d3dx9.lib;%(AdditionalDependencies) 12 | 13 | 14 | 15 | --------------------------------------------------------------------------------