2015-10-29
A release after 17 months of more or less active development.
thcrap
- Restore the exports of the LoadLibrary injection detours.
(ccc87a5) - detour_cache_add(): Use a setinel NULL to pass the number
of arguments. (c551831) - Revise detour chaining to use a system similar to MS-DOS
interrupt chaining. (86e652d) - Add function level promotion detours for the CreateFont()
family. (ee2741c) - textdisp: Split the CreateFont() detour to make use of
detour promotion. (8d54854) - textdisp: Correctly explain CreateFont()'s fallback font selection.
(b7c03aa) - textdisp: Introduce a consistent string representation for
LOGFONT structures. (e075680) - textdisp: Add a rule-based font replacement system.
(2325832) - Standardize the handling of the "cave_exec" breakpoint parameter.
(c22be49) - Add json_flex_array_get_string_safe().
(55b31a8) - Introduce a module hook to be called on thread detach events.
(3efc0fe) - plugin: Optimize module hooks by caching the functions called
for each. (705a8da) - bp_file: Add a thread_exit hook to eliminate memory leaks.
(805273f) - Move the last piece of high-level injection code from the loader to
the core. (4d15493) - Move printf format specifier parsing to win32_utf8.
(7513037)
thcrap_update
- Prepare a separate list of files to download in advance.
(3d949d4) - Filter the files to be downloaded using an optional
callback function. (085e03f) - Only download necessary patch data during configuration and updates.
(add1b88) - Self-updater: Delete local files whose updated versions would be
0-byte files. (88cec5b)
thcrap_tsa
- Layout: Only add the original X offset in the final rendering call.
(1afe684) - ANM: Correctly shift the alpha value when blending 16-bit sprites.
(2df1642) - Layout: Don't increment the tab counter if no tab commands
were used. (e255d74) - Layout: Recognize 'l' as a tab command.
(9f736d6) - Layout: Refactor layout processing into its own function.
(3d2990a) - Layout: Consolidate the parameters to layout_textout_raw().
(59d2dd3) - Layout: Perform full text layout in GetTextExtent().
(75c4bae) - Layout: Use custom callback functions to render substrings.
(e23a26f) - Layout: Fix an off-by-one error in layout_match().
(181555e) - Add a module for translation of generic plaintext formats.
(498eafe) - ANM: Create a local copy of all sprite coordinates.
(292bcbf) - png_ex: Use a consistent return value for png_image_new().
(34ddd37) - MSG: Cut off replacement strings at the last Unicode code point.
(b2ce22e)
thcrap_loader
- Move the last piece of high-level injection code from the loader to
the core. (4d15493) - Give "exe" precedence over "game" in the run configuration.
(43fe482) - Improve the help messages about passing the target executable.
(e249470) - Don't show two messages on a run configuration syntax error.
(d3c1389) - Show a more helpful error if a game ID wasn't found in games.js.
(5f58856)
scripts
- repo_update.py: Don't count deleted files towards the file count of
a patch. (b80b135)
win32_utf8
- Add CreateFontIndirect() and CreateFontIndirectEx().
(thpatch/win32_utf8@ff4ac97) - Export function level promotion for the CreateFont()
family. (thpatch/win32_utf8@5e494b2) - win32_utf8: Add DragQueryFile().
(thpatch/win32_utf8@bc0963b) - shell32: Ensure the correct calling convention.
(thpatch/win32_utf8@1f87fc1) - LoadString(): Return the string in the fallback codepage
if possible.
(thpatch/win32_utf8@8fa2ea4) - CreateFontIndirect*(): Limit face name conversion to the actual
string length.
(thpatch/win32_utf8@db836ce) - Add SHBrowseForFolder().
(thpatch/win32_utf8@9390ff5) - Add WritePrivateProfileString().
(thpatch/win32_utf8@c3d1e5a) - Add ExtractIcon() and ExtractIconEx().
(thpatch/win32_utf8@614b2e9) - Add GetGlyphOutline().
(thpatch/win32_utf8@5220aec) - Add UnregisterClass().
(thpatch/win32_utf8@a382659) - Refactor conversion of the WNDCLASS and WNDCLASSEX structures.
(thpatch/win32_utf8@b93717f) - Add ExtTextOut() and TabbedTextOut().
(thpatch/win32_utf8@b5b8a64) - StringToUTF16_VLA(): Don't free the VLA if the original string
is NULL.
(thpatch/win32_utf8@e2ef489) - Add the GetFileVersionInfo functions.
(thpatch/win32_utf8@f131d83) - RegisterClass*(): Fix a crash if lpszMenuName is an integer
resource ID.
(thpatch/win32_utf8@05e99e5) - Introduce dynamic binding for functions not available on Windows XP.
(thpatch/win32_utf8@18f8c0e) - Add GetOpenFileName() and GetSaveFileName().
(thpatch/win32_utf8@bdec9c1) - STUB GetClassInfo() and GetClassInfoEx().
(thpatch/win32_utf8@79d2e55) - StringToUTF8(): Don't include the terminating \0 in the
returned length.
(thpatch/win32_utf8@6869156) - FormatMessage(): Support FORMAT_MESSAGE_FROM_STRING.
(thpatch/win32_utf8@4edc4c9) - FormatMessage(): Fix non-allocating calls.
(thpatch/win32_utf8@3a000ca) - Import printf format specifier parsing from thcrap.
(thpatch/win32_utf8@95e9304) - FormatMessage(): Fix a few return value and error code issues.
(thpatch/win32_utf8@aa81dde) - FormatMessage(): Parse the formatting syntax and convert any
string arguments.
(thpatch/win32_utf8@2c7b0e7) - FormatMessage(): Actually use the correct size for the
allocated buffer.
(thpatch/win32_utf8@16f7b87) - OPENFILENAME functions: Write nFileOffset and nFileExtension.
(thpatch/win32_utf8@aa5b4ec) - Wrap1P(): Change the return type to size_t.
(thpatch/win32_utf8@9ef6d33) - FormatMessage(): Fix FORMAT_MESSAGE_ARGUMENT_ARRAY for
32-bit builds.
(thpatch/win32_utf8@ecae46a) - Add GetCommandLine().
(thpatch/win32_utf8@f0db87b) - Add CommandLineToArgv().
(thpatch/win32_utf8@a9204f1) - Add DirectSoundCaptureEnumerate() and DirectSoundEnumerate().
(thpatch/win32_utf8@3f1de63) - Add main().
(thpatch/win32_utf8@8cf7cba)