Releases: olliz0r/sys-botbase
Support for HOS 19.0.0+ and Atmosphere 18.x+
Allocate less memory for mod and Tesla support
The amount of heapmem allocated is now 3.2MB down from 12MB. This may cause issues for some users with huge freezepools, but should not affect 99.9% of users.
Issues with ToTK mods and Tesla overlays should no longer be present.
Some additional commands, buffer peeks, smaller fixes
All single-stream peek commands no longer require you to "chunk" the data as the sysmodule will do this to send large data quickly in one command. GetInfo()
is now used to get the heap base to reduce overhead on all peek and poke commands.
getTitleVersion
was added courtesy of @6A-Realm
Various info commands were added courtesy of @amel-am
Smaller fixes were provided by @Lincoln-LM and @ELY3M
Other smaller fixes are also included in this release.
Thank you to all the contributors.
A few stability tweaks
Sys-botbase no longer inits fs or mounts the sd card. If you run a fork or adapt from sys-botbase then please make sure to yield the fs service once you're done with it to avoid hitting the too many sessions panic.
screenOn and screenOff once again turn on/off the backlight. Many thanks to SciresM for yielding atmosphère's lbl service session until required such that we can do the same here. Note that this only works with Atmosphère 1.3.1 onwards.
Support for HOS 14.0.0 & AMS v1.3.0
This is an interim update until a stable 14.0.0 libnx is available, however it should work fine for the vast majority of cases.
All lbl sessions are allocated and as such screenOn/screenOff will no longer turn the backlight on/off.
Add ability to check if process is running and build with latest libnx
This should fix an issue with certain virtual controllers not connecting correctly.
isProgramRunning
requires the entire identifier, so to check if the keyboard is open you would send isProgramRunning 0x0100000000001008\r\n
Multi-peek commands and a few QOL updates
The following commands were added:
Functionality:
- peekMulti
- peekMainMulti
- peekAbsoluteMulti
- controllerType
Multi
commands are the same as their non-multi counterparts, and have the added benefit of accepting an array of addresses and sizes split by spaces, and return a sequential concat stream of bytes of all data that was looked up.
controllerType allows configuration of the controller from the default pro controller to other controllers, such as a single joy-con, ring-con, etc. Useful if you're writing a bot for something that requires a different controller, such as an LGPE bot. This must be configured to a HidDeviceType
The amount of memory allocated by sys-botbase is now also reduced, and the backlight will now turn off when using the screenOff command.
Address 13.0.0 session ID changes, fix detach bug
In addition to the title, this build has the pointerRelative
command if you want a pointer solved with the value returned relative to the heap.
Screen on/off, single-command sequential button presses, sys info requests, token cancels + 12.0.0 support
This version is compiled with the latest libnx and once again allows use of the virtual controller.
The home button will now glow if docked to your switch on startup to notify you sys-botbase is ready to accept requests.
Additionally, it has the following new commands:
Functionality:
- clickSeq <sequence> eg clickSeq A,W1000,B,W200,DUP,W500,DD,W350,%5000,1500,W2650,%0,0 (some params don't parse correctly, such as DDOWN so use the alt)
- clickCancel
- touchCancel
- screenOff
- screenOn
- charge
Both screenOff
and screenOn
change the screen's IsScanning state. They are especially useful if you are running always-on bots that would benefit from slightly less power use.
charge
will return the current battery charge percentage as an integer between 0-100.
Value freezing, pointer follows, touch & keyboard emulation
Thanks to olli for giving me free rein to add cool new stuff and thanks to Red for the keyboard emulation research & implementation
Newly added commands with this version are below. If you are not using any of this functionality then feel free to stick with 1.6.
Functionality:
- pointer <first (main) jump> <additional jumps> !!do not add the last jump in pointerexpr here, add it yourself!! (returns the pointer at the end nb: return value is in little endian)
- pointerAll <first (main) jump> <additional jumps> <final jump in pointerexpr> (as above)
- pointerPeek <amount of bytes in hex or dec> <first (main) jump> <additional jumps> <final jump in pointerexpr>
- pointerPoke <data to be sent> <first (main) jump> <additional jumps> <final jump in pointerexpr>
- freeze <offset> <data>
- unFreeze <offset>
- freezeCount (returns the amount of freeze slots use by the sysmodule, max is 255)
- freezeClear (removes all freezes)
- freezePause
- freezeUnpause
- touch followed by arrayof: <x in the range 0-1280> <y in the range 0-720>. Array is sequential taps, not different fingers.
- touchHold <x in the range 0-1280> <y in the range 0-720> <time in milliseconds (must be at least 17ms)>
- touchDraw followed by arrayof: <x in the range 0-1280> <y in the range 0-720>. Array is vectors of where finger moves to, then removes the finger.
- key followed by arrayof: <HidKeyboardKey> to be pressed in sequential order
- keyMod followed by arrayof: <HidKeyboardKey> <HidKeyboardModifier>(without the bitfield shift) to be pressed in sequential order
- keyMulti followed by arrayof: <HidKeyboardKey> to be pressed at the same time.
Config:
- configure keySleepTime <time to sleep in between keypresses in ms (default is 25ms)>
- configure fingerDiameter <finger diameter in the range 0-150 (default is 50)>
- configure pollRate <pollrate wait time to be used by the touch and key commands (default is 17ms)>
- configure freezeRate <freezeRate (default is 3ms)>
Most of the defaults are based on minimum pollrates for system applets. Both keySleepTime & pollRate should be set to a higher number if using an in-game keyboard as these are usually tied to framerate.