Neo-Mind 264 Posted November 26, 2020 (edited) Happy Thanksgiving everyone. Since I couldn't get the turkey, I thought I would bring this instead. Without further ado, Let me introduce...WARP (Windows Application Revamp Package) Why this name? Because I like using acronyms and this name sounded apt. Plus it's the function & features that matter more. And no, I am not gonna change the name. Why not just fix up NEMO? The codebase for NEMO is pretty much ancient at this point. So rather than fixing it up, I decided to go the route of creating it fresh from scratch. The end result is a far superior product. OK, but what if you end up AFRO (Away From RO)again? Well, I can't promise that I will be around forever. However, this time around, I am releasing the source code for the tool as well. So, exactly what has changed? Well, quite a few things. Let's start off with how the GUI looks now. As you can see, the GUI is much more modern and aesthetically pleasing thanks to @Haziel & @Hadrias. The package comes with 3 tools - Console version (for simple patching), Main GUI, and Tester GUI (for batch testing). A big salute to @4144 for keeping NEMO alive while I was AFRO 😄. Ok, jokes aside, I discussed with him about the changes he made and I have incorporated almost all of them but with some differences. Language & Styles are now on the bottom as you can see. All the remaining menus have now been shifted to drawers (moving side panels). To reveal them you can either swipe from the respective edge or click the button at the top. The right side drawer houses all the Extensions (Used to be called 'Addons' in NEMO). They are now loaded independently of the client. This avoids unnecessary redefinitions and now you can also use Extensions for activities that don't need a loaded client. All the common functions have been added to the 'Quick Actions' group and all the remaining ones are in the left drawer, which is not many. If you have suggestions for more features let me know. Moving on to the Back end (This is of no use to the regular user. So you can skip this part if you want) It was high time for us to have a proper input file format. Enter YAML. Love it or hate it but it's here to stay. Frankly, I like it more than libconfig and INI. You would be seeing YAML being used for almost every file in WARP. This includes input files for Patches & Extensions, Files defining those two, Session files, etc. Writing patches is far more flexible now. Say goodbye to PTYPE_HEX and \xAB. Now we can do wild card searches with the actual wild cards inside hex codes. Of course, we still need to have some well-defined characters for that. Currently, we have 2 forms of wildcards - Nibble wise - For e.g. => A?, ??, ?3 Bit wise - For e.g. => [1.0...01] If you have any suggestions about it let me know. Speaking of writing hex code, I have provided functions looking almost identical to Assembly instructions for generating their equivalent hex code. This helps in making the hex code more human-readable and adds a little more flexibility. User inputs have a few more types and little more flexibility in specifying constraints now. Scripts have proper segregation now. Please follow them when adding your own. Only the scripts inside the 'Init' folder gets reloaded each time the client is loaded. This avoids unnecessary reloads. exe has now become 'Exe'. But in addition to this, you get 2 more objects - System (for filesystem activities) & Warp (whatever is outside the scope of the other two) Many of the functions used for retrieving some constant information in the 'Exe' have become properties now. For e.g. PEoffset, ImageBase, BuildDate, etc. During patching, the Diff section is only added if you have inserted any code using one of the 'Add' functions. Also, the Diff section now grows dynamically as per requirement (in increments of Section Alignment of course). In addition to the Patched Exe, The tool also generates an (Extra Patch Info) file with the suffix '.epi'. It holds just enough info for the tool to recognize existing patches in an exe from a previous patch session. So how is it useful? Let's say you have a patched client and its EPI file. But you don't have the original anymore. Now you can remove 1 or 2 patches and keep the rest OR even restore the original from the patched exe. Last, but not least, I am providing documentation about everything including the API. But bear with me for a bit, as I am still working on the documentation part. I probably forgot more points to add here, but I think this pretty much covers the important stuff. Anyway, the documentation would be pretty comprehensive. Is it ready to be used now? The tool is definitely ready. I have added most of the patches but not all just yet. But I was not able to test all the patches in-game. So please don't attack me if something failed. I would appreciate a Bug Request in Github instead. Also note, that some patches are still failing for new clients, and some failing for old ones. However, I saw the same behavior in NEMO, so that would be part of the next stage of operations - Updating Patch scripts. So, where do I get it from?https://github.com/Neo-Mind/WARP How to use it? There is a User Guide in the git repo (best viewed from Github itself). Everyone is used to NEMO by now, so it shouldn't be difficult to use this even without the guide. Plus the Github wiki is pretty detailed. Any last words before we close this? Just like in the case of NEMO, my intention with WARP is to create a common tool for patching without being restricted to RO or which OS you use it in. For this reason, you will be seeing multiple branches in the Git repo. If you are planning to use WARP for patching some other application, Create a branch using the 'win32' branch as a starting point. That's about it from me for now. Edited January 15, 2021 by Neo-Mind 5 6 KhnKhymKh, Functor, Asheraf and 8 others reacted to this Quote Share this post Link to post Share on other sites
Caspian 23 Posted November 29, 2020 Very nice, I will be testing! Quote Share this post Link to post Share on other sites
hadiesyafiq 7 Posted January 14, 2021 hi @Neo-Mind when i use WARP the title icon is not show..how to show the icon? here some picture to refer...on the red mark Quote Share this post Link to post Share on other sites
Daraen 8 Posted January 14, 2021 (edited) Have you tried the RessourceHacker software? I know that you can modify the executable icon on it. I personally use it to configure a personal launcher for my game server. Try to open an executable where the Ragnarok online icon is present in order to extract the icons to add them to your executable. By the way, my question is irrelevant, but how did you display a warning window like the one you see on your screen shoot, that interests me. EDIT: Found it. sorry for inconvenience! Edited January 14, 2021 by Daraen Quote Share this post Link to post Share on other sites
hadiesyafiq 7 Posted January 14, 2021 1 hour ago, Daraen said: Have you tried the RessourceHacker software? I know that you can modify the executable icon on it. I personally use it to configure a personal launcher for my game server. Try to open an executable where the Ragnarok online icon is present in order to extract the icons to add them to your executable. By the way, my question is irrelevant, but how did you display a warning window like the one you see on your screen shoot, that interests me. EDIT: Found it. sorry for inconvenience! I already try use reshack but that one only change the exe icon not the title window icon... and for warning window is license.txt...just diff always show license...and need to use langtype 7/8 Quote Share this post Link to post Share on other sites
Daraen 8 Posted January 14, 2021 (edited) 13 minutes ago, hadiesyafiq said: I already try use reshack but that one only change the exe icon not the title window icon... and for warning window is license.txt...just diff always show license...and need to use langtype 7/8 I use langtype 18 and it work. Can you give me your exe, i can try for you if you want Edited January 14, 2021 by Daraen Quote Share this post Link to post Share on other sites
hadiesyafiq 7 Posted January 15, 2021 13 hours ago, Daraen said: I use langtype 18 and it work. Can you give me your exe, i can try for you if you want Hi @Daraen here mine https://drive.google.com/file/d/1Cxf9CsrLTvByAFiVd3zc52EzdKGn8klZ/view?usp=sharing Quote Share this post Link to post Share on other sites
Daraen 8 Posted January 15, 2021 @hadiesyafiq Thanks, I'm trying this, I'm not using the same exe version as you but it should normally be good! I keep you posted Quote Share this post Link to post Share on other sites
Daraen 8 Posted January 15, 2021 Try This ! @hadiesyafiq https://mega.nz/file/LqgSVLIK#FNYrIBDrf69wpx2WD6oUqUUDjunlwlkly-SSGXFVERU This should be good. I don't have enough because I'm tired of having to change my packetver hahaha, but the icon has changed in my folder, so I think the icon will also be changed when you launch the exe. Quote Share this post Link to post Share on other sites
Neo-Mind 264 Posted January 15, 2021 For the icon on the taskbar, you need to use either "Restore Inbuilt Icon" or "Use Custom Icon" (if you want to use your own icon). For the title icon, I was expecting that to be included in these patches, let me have a look. Quote Share this post Link to post Share on other sites
Neo-Mind 264 Posted January 15, 2021 On 1/14/2021 at 3:27 PM, hadiesyafiq said: hi @Neo-Mind when i use WARP the title icon is not show..how to show the icon? here some picture to refer...on the red mark Try using the patch "Restore Inbuilt Icon". I have fixed the issue with the title bar icon. In case you want to use your own icon then the "Use Custom Icon" patch should be selected instead. Quote Share this post Link to post Share on other sites
Neo-Mind 264 Posted April 10, 2021 FYI, I have also added Custom Shields & Custom Jobs patches in WARP and yes it supports all clients from 2010 - 2021.New features Custom Shields: Maximum Shield count can be customized now (limited to 127 for now). You can also validate a shield id based on the job id by modifying the ValidateShieldID function in ShieldTable_F.lub. Custom Jobs: All the Lua files are now in a different folder called 'JobInfo' to avoid mixing in with others. You can specify different strings based on servicetype. For e.g. "korea" and "america" can have different strings. To achieve this, you need to specify an override table with the name LT_<servicetype number>. For e.g. LT_0 specifies overrides for korea servicetype. Check PCNames.lub to get a clearer idea. At present, it is only used for name changes & palette path changes. Scaling for Baby Jobs can be changed. You can change this in Shrink_Map inside PCIDs.lub. There is one caveat though, due to client limitation, the factor needs to be specified as IEEE hex string. (no floating-point support in Lua function calls 😒) Common to both: You get the option to copy the files to your patched client area. The files are copied only if you apply the patch. For Custom Shields, the max shield value also gets updated in the copied file automatically. I was planning on more amount of changes in Custom Jobs, but it's on hold for now. 2 Asheraf and Ridley reacted to this Quote Share this post Link to post Share on other sites
Ridley 295 Posted April 11, 2021 Just want to point out, that the whole RO emulation scene, all the private servers and new people learning how this stuff works prolly wouldn't exist anymore without your efforts and tools. You got my highest respect and appreciation. Quote Share this post Link to post Share on other sites
chojuro 0 Posted January 20, 2022 On 4/10/2021 at 6:07 PM, Neo-Mind said: FYI, I have also added Custom Shields & Custom Jobs patches in WARP and yes it supports all clients from 2010 - 2021.New features Custom Shields: Maximum Shield count can be customized now (limited to 127 for now). You can also validate a shield id based on the job id by modifying the ValidateShieldID function in ShieldTable_F.lub. Custom Jobs: All the Lua files are now in a different folder called 'JobInfo' to avoid mixing in with others. You can specify different strings based on servicetype. For e.g. "korea" and "america" can have different strings. To achieve this, you need to specify an override table with the name LT_<servicetype number>. For e.g. LT_0 specifies overrides for korea servicetype. Check PCNames.lub to get a clearer idea. At present, it is only used for name changes & palette path changes. Scaling for Baby Jobs can be changed. You can change this in Shrink_Map inside PCIDs.lub. There is one caveat though, due to client limitation, the factor needs to be specified as IEEE hex string. (no floating-point support in Lua function calls 😒) Common to both: You get the option to copy the files to your patched client area. The files are copied only if you apply the patch. For Custom Shields, the max shield value also gets updated in the copied file automatically. I was planning on more amount of changes in Custom Jobs, but it's on hold for now. is there a guide in custom job, how to implement it with JobInfo?? Quote Share this post Link to post Share on other sites