Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

cabalmain.exe and modifications(A brainstorming Session)

Newbie Spellweaver
Joined
Mar 9, 2017
Messages
61
Reaction score
2
So to get started I wanted to share some things that I've thought of aswell as some things that I learned were a thing. Do I have experiance with any of this stuff currently, probably not. Do I know they are possible, absolutely. Will I do them, I'll damn well try.


Direct3D(Kinda Reasonable):
So to get into it lets start with something more reasonable, D3DX9_30.dll being replaced. windows has newer versions of the d3dx?_??.dll files inside "c:/windows/system32/" meaning we can get the more up to date DLLs for use with the client.

We also have alot of useful info on the forum already regarding modifying the cabalmain.exe. Stuff for disabling certain things and injecting our own DLLs. I'm sure with the right amount of expirementing we could in theory get the client to use newer versions of d3dx.

Maybe not to the extent of jumping from Direct3D9 to DirectX12 or vulcan, but possibly from d3dx9_30 to d3dx9_43 instead. MAYBE d3dx10_?? possibly, depending on if it has everything needed for the game to use.

The stuff regarding Direct3D could also be applied to the sound libraries used by the game aswell, meaning we could update the libogg.dll, libvorbis.dll and libvorbisfile.dll aswell(Given the age of this game I'm somewhat assuming these libraries are just as outdated as the d3dx version is, but I don't know about those 2 libraries yet to say without a sliver of a doubt)


Multi-platform(A little bit of a stretch but possible-ish):
Sure, its likely easy to get the game running on linux with something like wine. But I recently came across a thread from 2013 (here) that was touching up on the topic of "rewriting the game to work on android tablets" sure at first it sounds silly, and probably not useful. HOWEVER, it did remind me of another video I saw recently about creating a virtual machine from scratch using C++( )

Maybe we could get around the lack of client source code, and instead make a virtual machine that simply replicates the stuff the game needs to run on windows. We could technically put the game on other things besides windows PCs this way.


New/Improved assets(already being done, but could be done on a massive scale? maybe as a collaborative effort):
So I'm no 3D modeler, and I hate working with both blender and 3DMax. But I've seen the stuff people have posted before on these forums where they have made their own new assets.

What if we take it a step further however? Like say taking the stock asset files for characters, mobs, armor, items, the levels, effects from skills, skill icons, and so on....and remastering them? If we get the improvements mentioned in the Direct3D section above done, we could also be more flexible in terms of how detailed models are for these things(lets face it, compared to modern games even MMOs, the graphics don't hold up to the newer stuff)


New features to the game(Possible but complex???!):
So a user recently told me that there are no source files for the client or the server. The only thing we have are compiled client and server, and then the few files that they use which are not compiled. But as we all already know, using tools like OllyDbg we've already been modifying the game client(And might I add that despite me jumping in only yesturday for the litteral first time using OllyDbg or even touching assembly stuff, I can see it isn't IMPOSSIBLE to hook anything we want to, just tedious and time consuming)

What if we do the hard work of using OllyDbg to force the client to load a dll that allows us to use lua to better extend the client(possibly also doing the same with the server aswell) LuaJIT is open source, already used in many games, and REALLY easy for first time coders to get started with(its where I started before moving to C++ later on) We could then use OllyDbg to get addresses of things we want to make accessible to lua, then we could have our injected dll simply expose it to lua.

We could also add a means of networking iinto this using sockets to allow for the server and client side lua state to communicate with each other. What does this allow us to do exactly? Well we could allow for potentially new things to be rendered on screen such as a HUD replacement, alteration of mobstats on the fly, maybe some event related stuff, we could likely also allow for other stuff I haven't even thought of. Getting LuaJIT forced into the client or server really opens ALOT of doors for new development in this game. Possibly also bringing more popularity to this game(Something I REALLY would love to see happen.

For those curious about LuaJIT:



Final thoughts:
So you are probably wondering why put in all this effort for a game this old and the original creators who already made a sequel to it, well logically it makes little sense. BUT it is technically all possible to do with enough time, effort and people working together. And I'm sure the people here love this game, especially if its still spoken about after all this time and people still make private servers for it.

So why not, lets give it a shot. Either for the benefits of having atleast some of the stuff above, or for the fun of doing it, or even for the learning experiance from trying.

I'd love to get people's input on some of these and also to know who all finds these ideas useful or interesting enough to also attempt one of them.

--------
EDIT: I later realized the video regarding virtual machines built in C++ isn't entirely good at explaining what I meant.

Basically the idea is to do what a DRM called Denuvo does. Taking x86 code and compiling it to a virtual machine's instruction set, and running those as it's own application. Basically you could take ANY x86 application and run it on the VM. So in our case we simply make it automatically load the cabalmain.exe and we can effectively run it almost anywhere that has enough hardware resources and storage space.
 
Last edited:
Joined
Feb 26, 2010
Messages
1,374
Reaction score
780
The stuff regarding Direct3D could also be applied to the sound libraries used by the game aswell, meaning we could update the libogg.dll, libvorbis.dll and libvorbisfile.dll aswell(Given the age of this game I'm somewhat assuming these libraries are just as outdated as the d3dx version is, but I don't know about those 2 libraries yet to say without a sliver of a doubt)

Only if the APIs haven't changed at all between versions, which I doubt.


Maybe we could get around the lack of client source code, and instead make a virtual machine that simply replicates the stuff the game needs to run on windows. We could technically put the game on other things besides windows PCs this way.



What you're describing is Wine.

New/Improved assets(already being done, but could be done on a massive scale? maybe as a collaborative effort):
So I'm no 3D modeler, and I hate working with both blender and 3DMax. But I've seen the stuff people have posted before on these forums where they have made their own new assets.

What if we take it a step further however? Like say taking the stock asset files for characters, mobs, armor, items, the levels, effects from skills, skill icons, and so on....and remastering them? If we get the improvements mentioned in the Direct3D section above done, we could also be more flexible in terms of how detailed models are for these things(lets face it, compared to modern games even MMOs, the graphics don't hold up to the newer stuff)

People don't cooperate due to monetary reasons, everyone is just stealing from each others clients' in a pserver scene that is flooded with new servers every year.

New features to the game(Possible but complex???!):
So a user recently told me that there are no source files for the client or the server. The only thing we have are compiled client and server, and then the few files that they use which are not compiled. But as we all already know, using tools like OllyDbg we've already been modifying the game client(And might I add that despite me jumping in only yesturday for the litteral first time using OllyDbg or even touching assembly stuff, I can see it isn't IMPOSSIBLE to hook anything we want to, just tedious and time consuming)

What if we do the hard work of using OllyDbg to force the client to load a dll that allows us to use lua to better extend the client(possibly also doing the same with the server aswell) LuaJIT is open source, already used in many games, and REALLY easy for first time coders to get started with(its where I started before moving to C++ later on) We could then use OllyDbg to get addresses of things we want to make accessible to lua, then we could have our injected dll simply expose it to lua.

We could also add a means of networking iinto this using sockets to allow for the server and client side lua state to communicate with each other. What does this allow us to do exactly? Well we could allow for potentially new things to be rendered on screen such as a HUD replacement, alteration of mobstats on the fly, maybe some event related stuff, we could likely also allow for other stuff I haven't even thought of. Getting LuaJIT forced into the client or server really opens ALOT of doors for new development in this game. Possibly also bringing more popularity to this game(Something I REALLY would love to see happen.

Even though someone did this to load the newer classes, it would be less work to just emulate a newer client. Emulation requires less knowledge than reverse engineering the whole client, and even then you're stuck maintaining an old client with old server files.


You make too many assumptions about how "easy" some of these things are.
 
Newbie Spellweaver
Joined
Mar 9, 2017
Messages
61
Reaction score
2
well so far with just drag and drop replacing the old d3dx9_30 with d3dx9_40 and renaming it doesn't seem to cause any crashes so I'd say we're good there. question now is will it work with newer versions of Direct3D.

As for wine thats just linux and ngl I've not bothered with wine in a while since last time it just never worked.

Not cooperating due to monitary reasons would make sense, but people working together on new game assets is in EVERYONE's benefit not just one person. I feel they should realize that, assuming they aren't just the greedy ones who would rather nobody have nice things if they can't be the only people with nice things. those types of people shouldn't be running a game server imo.

and regarding a newer client, I feel that would be alot more work actually. I've had my go at making a game engine and game of my own before. Compared to Ducking around with assembly code its alot more work. With assembly its just finding offsets to specific things and just making them available to use in something like lua or altering them. But with a game engine you have to do so much more. Dealing with rendering APIs for vulkan, DirectX and OpenGL, dealing with sound codecs, physics engine, networking(yea there is no standard yet for this one in C++ so its even more annoying to deal with than others) not to mention you'd be forced to recreate the serverside portion at the same time aswell.
 
Newbie Spellweaver
Joined
Mar 9, 2017
Messages
61
Reaction score
2
Yea but even then, you wouldn't really have much you could addon top of that. you would be really limited since you would just be using the same client. For example any new features would be limited to only serverside. so nothing involving menus, nothing involving new items(new types of armor, new skills, or anything that would need to be represented clientside) so its less you have to remake but its also less you can do with it in the end.

Remaking the clientside has that same issue. You wouldn't be able to really do much besides maybe new asset files and maybe remkaing the ui. You could maybe have a module that connects via socket to your own serverside stuff, but you are still limited by the part that we don't have code to.

But the wonderful thing is the client and server files we have are not being updated. So we don't have to deal with having to find new offsets every time atleast. Simply finding the right part of it in OllyDbg and then making it usable in something like lua means anybody could modify or add onto what would normally happen.

For example: We could hook into the stuff for the UI and build the UI from scratch in lua and have it end up looking far differant. you could add say stats listing to mobs that float above their head along with the HP bar(so you see HP and Lvl, but also other things like maybe the average attack or something. you could also list if its aggressive or nonaggressive to players it sees)

Serverside: You could hook into the game chat, then have a webhook post into discord when a message is sent on a certain channel. Or have a chat filter in place that removes more than just profanity(scam links, discord links or anything else abusive) You could also hook into both client and server side and build a way to make new admin commands for just about anything.

I feel that hooking into these things would be alot easier in the case of cabal, especially since the server and client files won't be getting updated by ESTSoft
 
Joined
Jul 24, 2011
Messages
806
Reaction score
615
I like your motivation but what you want to do is already done by some BR guy (vodika for ex.). You have to check some features what he done and working fine.
You wanna change the world but you are described only the keystones. No details about you and the idea's. Me and lot of other guy luke Punky is 10 year+ in this world.
In 2021 the cabal servers are dead. It's a coult game and only for old hardcore fans can keep up. Doesn't worth to invest tenthousands to reach something.
Lot of people tried to find investors for emulator, which could bring some light into this section.

So best what you can do is research how you can buy components to make improve your server.

TLDR: Soon will be easier to recreate a web based Cabal like game than you imagine :D
 
Newbie Spellweaver
Joined
Mar 9, 2017
Messages
61
Reaction score
2
What do you mean buy?

Also web based cabal game, I personally would prefer the serverside built on C++ instead of NodeJS(tho I'd prefer NodeJS over python atleast)
 
Back
Top