Releases: thpatch/thcrap
2016-03-27
Fix: the previous build should have been built with VS2013 instead of VS2015.
2016-03-26
2016-02-17
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)
2015-10-27
Old release for a clean upgrade path. Re-hosted on GitHub.
2014-05-28
When ZUN releases a game outside your vacations for a change, RL swamps you with work and your hardware starts failing, it's just going to take a while for 14.3 support to get done. Therefore, this is merely an intermediate release, focusing on fixes for bugs pointed out by our new members in the patch network, but also adding a bit of the functionality required for th143.
thcrap
- Fix random crashes in the hot-repatching module on Wine. (cca89be)
- Always skip the UTF-8 byte order mark on JSON loading. (bfcd6a4)
- Revise file size handling in file breakpoints. (f6fa4cb, 68f18ef)
- Allow to overwrite JSON objects with other types. (5f31a8f, cfca3a6)
thcrap_configure
scripts
- Filter out Thumbs.db when enumerating the files of a patch. (7969b5d)
win32_utf8
- Add EnumFontFamiliesEx(). (4fcda3a)
2014-05-12
Just a one-line change to register the th143 dialog file name pattern in order to make translations show up.
thcrap_tsa
- Register the th143 dialog file name pattern. (934e554)
2014-05-08
... and just when you thought you had a rock-solid build, you notice a bug in the one main thing you wanted to focus on. Oh well, at least we do have the option to ship updates on a daily basis now.
thcrap_configure
- Fix a logic error with read-only repository files. (989c14b)
- Use SHBrowseForFolder() to select the root game path. (93434c9, 07ff6da)
- Ask to search in another directory if no games were found at all. (5e22082, cef7bc6)
scripts
- repo_update.py: Catch the error thrown if files.js doesn't exist. (8281756)
2014-05-06
Over three months of development, resulting in digitally signed automatic updates of thcrap itself... as well as lots of features nobody has asked for, and which will only matter a few years from now.
thcrap
- Use a custom resolving chain for global.js and the game's main JSON files.
- Move thcrap updating information from patch.js to the run configuration.
- Check for a valid file name pointer when dumping a data file.
- Optionally check a binary hack against an expected sequence of bytes.
- Detour ExitProcess() to properly shut down any thcrap worker threads.
- textdisp_CreateFontA(): Only override iCharSet if a face name is given.
- Implement detour chaining.
- Add a module to watch for and apply changes to the patch files.
- json_object_get_create(): Fail if the containing object is NULL.
- Zip file reading support.
thcrap_configure
- Use the flexible array loop for dependencies.
- Default to the Nmlgc repository.
- Mention the artwork offer.
thcrap_update
- Link to the default zlib1.dll instead of zlibwapi.dll.
- Allow deletion of unmodified patch files by using JSON nulls in files.js.
- Move update notifications for thcrap and the game itself to thcrap_update.
- Add digitally signed automatic updates of thcrap itself.
thcrap_tsa
- MSG patching: Increment the line counter correctly to repair hard line patching.
- Remove the <f$> ruby layout parser introduced in 2013-08-20.
- BP_ruby_offset(): Fix a crash if "font_dialog" or "font_ruby" are not given.
- Layout: Don't overwrite the current width when defining a tabstop.
- Layout: Parse font-related commands before anything else.
- sprite_patch_set(): Verify the destination sprite coordinates.
- Layout: Only use the rightmost tab cell for the last token on a line.
scripts
- repo_update.py: Dump JSON with Git-compatible whitespace.
- repo_update.py: Explicitly set UTF-8 encoding for text I/O.
- Add a script to digitally sign a release archive.
- Don't try to create directories with empty names when writing JSON files.
- Enforce Unix line endings for JSON files.
win32_utf8
- Add MoveFile(), MoveFileEx() and MoveFileWithProgress().
- Add GetTempPath().
- Add GetFileAttributes() and GetFileAttributesEx().
- Add LoadString().
- Add WideCharToMultiByte() and MultiByteToWideChar().
- Add InsertMenuItem().
- Add fopen().
- Add RemoveDirectory().
- Add DeleteFile().
2014-01-27
Hotfix to repair update notifications, which have been broken since 2014-01-03.
thcrap
- Fix a reference counting issue that broke update notifications in 2014-01-03. (6c02237)