Skip to content

BCD 0.1.614 (alpha)

Choose a tag to compare

@thebcd69 thebcd69 released this 27 Oct 12:40
· 15 commits to main since this release

BCD is in alpha: an early stage of development, before beta. Many games run, many do not yet, and things can break between builds. When a game fails, please send a log.

✨ New

  • Japanese, Chinese, Korean and standard Windows fonts: BCD now links iOS system fonts into the Windows prefix for MS Gothic, MS PGothic, MS UI Gothic, MS Mincho, Meiryo, Yu Gothic, SimSun, NSimSun, SimHei, Microsoft YaHei, PMingLiU, Microsoft JhengHei, Gulim, Batang, Malgun Gothic, Arial, Courier New, Times New Roman, Verdana, Georgia and Trebuchet MS (including full-width Japanese font names), links CJK fallback glyphs into Tahoma, Arial and System, falls back to CP1252 when a font's name table uses an unloaded Mac codepage, and keeps the Marlett symbol font from replacing normal window and dialogue text (The Fruit of Grisaia, Touhou).
  • Desktop Command Prompt and .cmd / .bat startup files: opening Command Prompt from the Wine desktop Start Menu (or running cmd /k) now shows its console window while batch runs (cmd /c) stay hidden, and .cmd and .bat startup files are supported alongside .exe in Steam direct-start program pickers, Add a game, and Also start this program (#24).

Other improvements

Tried one of these games on an earlier build? Reset its settings first. A game keeps the settings it had until you reset them, so without this it may start with the old ones that failed. On the game's page: Options › Recommended settings › Reset to Recommended, then check that Options › Auto-tune › Auto-tune this game is on, and start the game again.

These fix failures found in the logs you sent with Send Log and in Discord reports since 0.1.611. Each fix targets the error a log showed; most could not be tested on a device yet, so a game may now get further and still stop at a later point. If it does, please send a new log: it names the next problem.

  • Marvel's Spider-Man Remastered: rebuilt and packaged d3d12.dll (madeira_d3d12.dll) with ID3D12GraphicsCommandList2::WriteBufferImmediate (write-buffer-immediate) so the render thread no longer hangs on a black screen after pressing Play in the launcher, cleared any unsaved draft in the Game config editor when resetting to recommended settings or changing an option, and kept the mouse cursor visible above GDI launcher windows.
  • OMORI and Cuphead (installer): fixed a freeze (virtual_mutex self-deadlock) when partially decommitting an uncommitted or read-only memory page (decommit_pages) or when an exiting thread's recycled TEB address matched prev_teb inside virtual_free_teb.
  • The Elder Scrolls V: Skyrim Special Edition and Fallout 4: automatically enabled the 64-bit media decoder path (MADEIRA_WG_64BIT = 1) whenever wmadmod.dll, wmvdecod.dll or mfasfsrcsnk.dll is opted in, fixing missing music and dialogue audio, and broadened the media Auto-tune rule to trigger when wmadmod.dll is missing.
  • BeamNG.drive: aligned 32 GB (0x800000000) soft-pool reservations to a 32 GB boundary (0x7800000000) for Chromium (chrome_elf.dll) PartitionAlloc and released uncommitted soft-pool reservations on VirtualFree(..., MEM_RELEASE) instead of returning STATUS_MEMORY_NOT_ALLOCATED (0xc00000a0) and hitting a 0x80000003 breakpoint.
  • 007 First Light and Red Dead Redemption 2: stopped large PAGE_NOACCESS step-down reservations (>= 256 MB) from steering into the FEX JIT arena once 24 GB is reserved, rate-limited repetitive [jumbo] and [bigres-use] log lines (preventing a 443 MB log spike), and broadened the Red Dead Redemption 2 28 GB reservation Auto-tune rule to match early exits and hangs.
  • Ghost of Tsushima DIRECTOR'S CUT and Marvel's Spider-Man: Miles Morales: converted DELAYIMPORTS to direct IMPORTS across all opt-in DLLs (evr-optin.dll, d2d1-optin.dll) so they never jump into x64 delay-load stubs from ARM64EC code, and automatically paired transitive opt-in dependencies (evr.dll with dxva2.dll, sfc.dll with sfc_os.dll).
  • Tape to Tape, No Rest for the Wicked and 1000xRESIST (Unity IL2CPP): broadened the Boehm garbage-collector klass | 1 method-table recovery across 24 general registers and 256 vtable slots, and added a second pass that dereferences object pointers (this->klass) when the temporary vtable register (RDX or R9) was overwritten by MethodInfo* before call rax, repairing both the target instruction pointer and MethodInfo* registers and clearing the stale mark bit in memory.
  • Rise of the Tomb Raider, FINAL FANTASY TACTICS and EA app: prevented the stale-pointer healer ([stale-heal]) from treating ntdll.dll!KiUserExceptionDispatcher as a stale data pointer when a thread delivers 256 or more exceptions.
  • F1 2020: preserved the thread's instruction and stack pointers (frame->pc, frame->sp) when an ARM64EC exception handler calls NtSetContextThread with CONTEXT_CONTROL and both Pc and Sp zeroed.
  • LEGO Batman: The Videogame: recovered from inline self-modifying code re-dispatch at Dispatcher+0x574 (ldr x0, [x4, #0x18]) when x4 holds a small integer instead of ThreadState* (x28).
  • Need for Speed: Underground 2: computed the true effective start address from the base register (Rn) when a 32-byte post-indexed SIMD STP Q store starts in a writable page and straddles a 16 KB RX/SMC page boundary, preventing +20-byte pointer writeback drift and heap header corruption (0x80000003).
  • StarCraft Remastered and Battle.net: clamped mprotect_exec ranges that start inside a PE image (ClientSdk.dll) and round up to the 16 KB host page boundary so the module is not misclassified as an anonymous RWX region and left PROT_NONE.
  • Fallout: New Vegas, Warcraft III, Grand Theft Auto IV, Far Cry 3, DOOM 3 BFG Edition and Helldivers: classified ARMv8.3-A LDAPR, LDAPRB and LDAPRH acquire loads as EXCEPTION_READ_FAULT instead of EXCEPTION_WRITE_FAULT in bus_handler so read-only page repair and guest exception handlers receive the true fault direction.
  • Crysis (64-bit) and Visual C++ 2005 games: populated the 64-bit Microsoft.VC80.CRT side-by-side (WinSxS) assembly folder and manifest in the prefix.
  • iPadOS/iOS status bar, edge gestures, hardware mouse lock and touch cursor: hid the iPadOS/iOS top status bar and persistent system overlays on the touch-controls overlay window during active game sessions, evaluated env.MADEIRA_DEFER_EDGES per game rather than caching it once at app launch, locked the physical mouse pointer and routed relative motion in BCD Dock sessions and when Mouse-look is on (System Shock, Aliens vs. Predator Classic 2000), installed prefersPointerLocked across all scene windows, and drew/moved the game cursor in direct game sessions when using Trackpad or Touch pointer mode.
  • Update notices, Steam DLC lookup and Auto-tune: recorded the daily update-check timestamp only after a notice is actually shown, re-checked when returning to the foreground, and waited until open sheets close before presenting the Update available alert; reduced the Steam DLC lookup retry cooldown from 60 seconds to 5 seconds (Kingdom Come: Deliverance, Fallout 4); applied wer.dll opt-in without a redundant retry (IS Defense); recognised GLFW OpenGL context errors (The Binding of Isaac: Rebirth); and ignored normal JIT-pool write traps in the D3D9 fault dumper.

Known issue: Frame generation with MetalFX upscaling can make the graphics driver stop the game after a minute or two. Turn Frame generation off for now.

Install help, game reports and ideas: join the BCD-Games Discord.

BCD.ipa: the unsigned IPA, for sideloading with SideStore, AltStore or LiveContainer. It needs iOS 18 or later and JIT; the README has the details.
BCD-source.tar.xz: the complete source of this build with all its submodules (GPL-3.0).