- Finish joystick view
+ Finish forward lock
+ When in menu, oystick can be used to move the virtual mouse
- Finish conditonal visibility
- Replace Make Default with Load
- Rewrote LauncherPreferences -> PLPreferences
+ Now the file layout is the same as UI layout
+ (get/set)Preference are replaced with corresponding get/set types + Getting/setting is now done through keyPath instead of manually iterating over subdictionaries.
+ Implemented an isolation layer, allowing an instance to have its own settings. This is off by default
- Implemented launcher_profiles
+ Added Profile manager that can be accessed from the sidebar
+ Moved "Game directory (instances)" to this screen
+ Replaced version selector with profile selector. Version selector is moved into profile editor.
- Other changes
+ Cleanup code by using NSPredicate instead of huge for loops
+ Titles in settings are made multilined
+ Controller config: replaced bar button items with localized ones
Due to how large the changes are, this is committed directly to the mainline branch. Bugs are expected to be found (although I did enough tests for this locally)
* Feat: external runtime manager
Currently missing: mmap hook
* we're past this ui todo
* feat: Bypass Library Validation (untested)
This bypass works because of JIT enabled, so the process can patch
anything loaded in the memory. Unsigned dylib works with JIT too.
* Fix `could not get real path` on iOS 14.x
iOS 15+ is untested, it may need patching in dyld instead of libSystem
* Make redirectFunction syscall-friendly
Replaced builtin_mprotect and vm_protect with a simple syscall to
_kernelrpc_mach_vm_protect_trap
* Add dyld hook back for iOS 15+, auto symlink xawt lib
* Cleanup Tools.java:showError+comments
Use System.exit(1) to drop to Game Exited screen instead of presenting
alert dialog on exception handled.
* Patch both to bypass codesigning at best
* Proper way of ignoring SIGBUS during patch
Turns out other background thread might also be calling inside dirty
page, so let's SIG_IGN them all until page permission is back to RX.
* Feat(install jar): auto detect java version
Rename Default version to Preferred version to match the behavior or
Install .jar detection: only override if selected version > required
version.
Add UnzipKit just to check jar file
Refactor(showDialog): remove viewController parameter, now use its own
ViewController to present.
* Feat: update LWJGL to 3.3.1
(tinygl4angle) add alias for GL_KHR_debug functions
Include nanovg for OneConfig mod
Move all LWJGLX classes to lwjgl3 repo
Set org.lwjgl.util.NoChecks=true to improve performance
* Fix: Forge 1.20 crashes (wrong artifact path)
Now use json-provided artifact path instead of generating one
Make lwjgl fat jar again
* Fix: handle null library artifact
* Fix: fatal glfw callback cleanup
* Build: fix copying LWJGL libraries
* Perf: set default settings
* Fix: incorrect SolClient useStackQueue check
* Feat: builtin runtime installer
Refactor parts of LauncherNavigationController.m
Workaround(LogView): disable animation on update to mitigate overload
* Fix: random game directory failures
This is caused by having current working directory unchanged after
re-making symlink.
* Fixes: TL-style artifact, update arc_dns_injector
Change pojavInit names
* Fix: 1.13+ isUseStackQueueCall check
* Build: update liblwjgl.dylib in attempt to fix ffi_closure_alloc
* Fix and improvements to the logger
- Dynamically get stdout/stderr fileno instead of fixed value
- Improve file migration logging
- Improve dyld bypass logging
* Fix(pickers): file permission issue
---------
Co-authored-by: Duy Tran Khanh <[email protected]>
Since the window size issue in old version was resolved, this button is no longer needed, plus enabling fullscreen would prevent version < 1.13 from resizing.
- Cleanup unused parts
- Cleanup complicated dictionary constructions
- Fix lag spikes during scrolling in this screen
Allow audio settings to be changed ingame
Same keycode names as the on-screen editor to make it easier to identify the possible values. Xbox and PlayStation button names for familiarity. Saving configs handled by the Save and Exit buttons on the navigation bar.
Currently known issues:
- may be jumpy when cells reload or load onto the screen
- loading a new configuration file does not update the value of the cells
- loading a new configuration file does not update the "Controller configurator" item in the main Settings window
- both of these are solved by closing and reopening the view controller for now
Haptics in iOS require a second-generation or newer Taptic Engine (sorry iPhone 6s users). Also move gamepad configs to controlmap/gamepads (you'll see why if you open the Load menu in the custom controls vc)
- Move controller init code to a file for the controller configurator code I'm working on locally
- Add option to limit framerate to 60FPS on ProMotion-enabled displays
News
- Added text input support for jar launcher.
- Updated MoltenVK to https://github.com/KhronosGroup/MoltenVK/commit/d880f4c
Internal changes
- Added more handling cases to avoid missing call to pojav_initOpenGL()
- Moved custom control’s global functions and properties to ControlLayout.
- Moved dylib framework outside its folder, as it’s not necessary to be bundled in framework.
- Reusing custom controls to produce flexible buttons in jar launcher, which might be extended in the future.
Fixes
- Multistage text input (Japanese, Chinese, etc) should now work again.
- Pointer lock should now function properly again.
- Updated README.md to reflect current stuff
This is not yet finished, there are 3 main things left
- Make sure everything works
- (Assets) download old structure
- Cleanup
What are implemented?
- Downloading file is handled with AFNetworking
- SHA1 validation, can be turned off in Preferences
- inheritsFrom support (need testing)
- Downloading assets with 20 jobs parallel
Known issue
- Assets SHA1 validating freezes the UI
Additional things
- [Custom controls] Dynamic position error is now handled instead of just crashes
- [Custom controls] The editor animation is now changed to fade in/out (for now, later might change)
- VGPU renderer is now made hidden, since it's too limited on iOS, removal planned
- [Code cleanup] Use NSDictionary instead of a set of fields for renderer list; Fix wrong field name.
- Some more stuff...
* Move control loaders to CustomControlsUtils.m
* WIP Drawer support (currently broken)
Also, updated MetalANGLE for helping debug stuff on crash.
* temp
* ControlDrawer: free orientation
* Avoid scrolling the hotbar in grab mode
* Popover: fix the frame inside the arrow
* Changes
- Attempt to allow Microsoft login when offline.
- Custom controls: drawer and sub-buttons are now visible.
- Pickers in Preferences: pre-select at the saved index.
* Bump version code to 4, hide sub-button by default
* Fix text trucanting
* impl scroll buttons, rewrite some parts to objc
* Virtual mouse implementation
Also, possible fix for popover crashes on iPad
Exception type: NSInternalInconsistencyException
> Reason: Tried to set <UIBarButtonItem: 0x10fee5660> menuOnTouchDown
menu=0x2810dce10 image=<UIImage:0x280149050 symbol(system:
ellipsis.circle) {20, 19} baseline=3.5,contentInsets={1, 1.5, 1,
1.5},alignmentRectInsets={-0.5, 0, -0.5, 0}
config=<traits=(UserInterfaceIdiom = Pad, DisplayScale = 2,
DisplayGamut = sRGB, HorizontalSizeClass = Regular, VerticalSizeClass
= Regular, UserInterfaceStyle = Dark, UserInterfaceLayoutDirection =
LTR, PreferredContentSizeCategory = L, AccessibilityContrast =
Normal)>> as sourceView of
<_UIAlertControllerActionSheetRegularPresentationController:
0x12043f5a0>, even though it is not a kind of UIView.
* Swap item between hands by double-tap item moment
* Basic editor (only several stuff implemented)
There's no save/load yet, so it's just a preview for now.
* Control editor (preview only)
TODO: Color picker for iOS < 14
* Save, load and set default are here
* Changes
- Ported Snap and Align from Android
- Added options: create and delete button
TODO:
- color picker for iOS < 14
- drawer editor
- maybe more
* Editor: Added orientation changer for drawer
Added some more check to determine whether dynamic position should be
visible (when the button is not a sub-button, or the parent drawer
doesn't use the FREE orientation)
* Editor: implemented adding drawer and sub-button
* Added a warning about unfinished custom controls
Co-authored-by: Duy Tran Khanh <[email protected]>
* Move control loaders to CustomControlsUtils.m
* WIP Drawer support (currently broken)
Also, updated MetalANGLE for helping debug stuff on crash.
* temp
* ControlDrawer: free orientation
* Avoid scrolling the hotbar in grab mode
* Popover: fix the frame inside the arrow
* Changes
- Attempt to allow Microsoft login when offline.
- Custom controls: drawer and sub-buttons are now visible.
- Pickers in Preferences: pre-select at the saved index.
* Bump version code to 4, hide sub-button by default
* Fix text trucanting
* impl scroll buttons, rewrite some parts to objc
* Virtual mouse implementation
Also, possible fix for popover crashes on iPad
Exception type: NSInternalInconsistencyException
> Reason: Tried to set <UIBarButtonItem: 0x10fee5660> menuOnTouchDown
menu=0x2810dce10 image=<UIImage:0x280149050 symbol(system:
ellipsis.circle) {20, 19} baseline=3.5,contentInsets={1, 1.5, 1,
1.5},alignmentRectInsets={-0.5, 0, -0.5, 0}
config=<traits=(UserInterfaceIdiom = Pad, DisplayScale = 2,
DisplayGamut = sRGB, HorizontalSizeClass = Regular, VerticalSizeClass
= Regular, UserInterfaceStyle = Dark, UserInterfaceLayoutDirection =
LTR, PreferredContentSizeCategory = L, AccessibilityContrast =
Normal)>> as sourceView of
<_UIAlertControllerActionSheetRegularPresentationController:
0x12043f5a0>, even though it is not a kind of UIView.
Co-authored-by: Duy Tran Khanh <[email protected]>