Repository navigation
BCD 0.1.614 (alpha)
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,GeorgiaandTrebuchet MS(including full-width Japanese font names), links CJK fallback glyphs intoTahoma,ArialandSystem, falls back toCP1252when a font's name table uses an unloaded Mac codepage, and keeps theMarlettsymbol font from replacing normal window and dialogue text (The Fruit of Grisaia, Touhou). - Desktop Command Prompt and
.cmd/.batstartup files: opening Command Prompt from the Wine desktop Start Menu (or runningcmd /k) now shows its console window while batch runs (cmd /c) stay hidden, and.cmdand.batstartup files are supported alongside.exein 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) withID3D12GraphicsCommandList2::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_mutexself-deadlock) when partially decommitting an uncommitted or read-only memory page (decommit_pages) or when an exiting thread's recycledTEBaddress matchedprev_tebinsidevirtual_free_teb. - The Elder Scrolls V: Skyrim Special Edition and Fallout 4: automatically enabled the 64-bit media decoder path (
MADEIRA_WG_64BIT = 1) wheneverwmadmod.dll,wmvdecod.dllormfasfsrcsnk.dllis opted in, fixing missing music and dialogue audio, and broadened the media Auto-tune rule to trigger whenwmadmod.dllis 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 onVirtualFree(..., MEM_RELEASE)instead of returningSTATUS_MEMORY_NOT_ALLOCATED(0xc00000a0) and hitting a0x80000003breakpoint. - 007 First Light and Red Dead Redemption 2: stopped large
PAGE_NOACCESSstep-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
DELAYIMPORTSto directIMPORTSacross 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.dllwithdxva2.dll,sfc.dllwithsfc_os.dll). - Tape to Tape, No Rest for the Wicked and 1000xRESIST (Unity IL2CPP): broadened the Boehm garbage-collector
klass | 1method-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 (RDXorR9) was overwritten byMethodInfo*beforecall rax, repairing both the target instruction pointer andMethodInfo*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 treatingntdll.dll!KiUserExceptionDispatcheras 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 callsNtSetContextThreadwithCONTEXT_CONTROLand bothPcandSpzeroed. - LEGO Batman: The Videogame: recovered from inline self-modifying code re-dispatch at
Dispatcher+0x574(ldr x0, [x4, #0x18]) whenx4holds a small integer instead ofThreadState*(x28). - Need for Speed: Underground 2: computed the true effective start address from the base register (
Rn) when a 32-byte post-indexed SIMDSTP Qstore 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_execranges 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 leftPROT_NONE. - Fallout: New Vegas, Warcraft III, Grand Theft Auto IV, Far Cry 3, DOOM 3 BFG Edition and Helldivers: classified ARMv8.3-A
LDAPR,LDAPRBandLDAPRHacquire loads asEXCEPTION_READ_FAULTinstead ofEXCEPTION_WRITE_FAULTinbus_handlerso 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.CRTside-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_EDGESper 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), installedprefersPointerLockedacross 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.dllopt-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).