This is a little tutorial on how to edit your cabalmain to allow free camera movement, just like in the normal maps like Bloody Ice up until Pontus Ferrum, on new maps you would add f.e. Porta Inferno and/or Arcane Trace. It's been over a year since I've modified this so there might be a mistake somewhere.
Required:
OllyDbg
Knowledge about the basics on using OllyDbg
Preferably previous codecave experience
Section & More info
Open OllyDbg and go to address 0x489CEE and you'll see this (without the comments of course).
Now what happens here is just a couple of comparing of values and jumps to the correct code section that will take care of the rest of the work. Before that the WorldID has been moved into the EAX register.
Here the WorldID is compared to 0Ah(10) which is the last WorldID in the EP2 client, Pontus Ferrum. Now if the WorldID is below or equal to 0Ah(10) then a jump (JLE = Jump if Less or Equal) will be made to 00489DAA where the rest of the code takes care of setting up the camera. These two lines will enable Free camera movement on the following maps.CMP EAX, 0A JLE 00489DAA
Bloody Ice
Desert Scream
Green Despair
Port Lux
Fort Ruina
Undead Ground
Forgotten Ruin
LakeSide
Mutant Forrest
Pontus Ferrum
If the WorldID would happen to be higher like when you're in a dungeon it would not jump and just continue on to the next CMP.
This checks if the WorldID is 0Fh(15) which is normally the waiting area for Tierra Gloriosa. If EAX is 0Fh(15) then a jump will be made to 00489DAA.(Jump if Equal)CMP EAX, 0F JE 00489DAA
If the WorldID is 10h(16) which is Tierra Gloriosa it will jump to 00489D79.(You get the point ...)CMP EAX, 0A JE SHORT 00489D79
And the last check for WorldID = 14h(20) which should be Chaos Arena.CMD EAX, 14h JE 00489DAA
Now how to add a check for your new maps.
The easiest way would be to increase the first check, CMP EAX, 0A. If you put Porta Inferno on WorldID 11 and Arcane Trace on 12 then you can set CMP EAX, 0A to 0C and you shoud be finished.
But for those who put them on different WorldID's you can replace the last CMP EAX, 14 with a JMP to an address where you have some room to add some extra comparisons. (The address I jumped to is not ideal, it's best you search for a bigger area.)
At the new section you then first add CMP EAX, 14 and JE 00489DAA. Then you can add a new CMP EAX, [your WorldID] and JE 00489DAA. At the end of the new comparisons you're making you need to make sure you also jump back correctly if the WorldID fits none of those checks so add JMP 00489D12 as the last line in your little codecave.
Here's a little example of what it could look like:
The Addresses**JUST AN EXAMPLE** CMP EAX, 0A JE 00489DAA CMP EAX, 15 WorldID 21 = Porta Inferno JE 00489DAA CMP EAX, 18 WorldID 24 = Arcane Trace JE 00489DAA JMP 00489D12 **JUST AN EXAMPLE**
0x489D12 -> Restricted Dungeon camera
0x489D79 -> Tierra Gloriosa camera
0x489DAA -> All camera types allowed, Free camera
I haven't messed around with the different values you can see in OllyDbg (f.e. FLOAT 150.00 at 0x489D12). Maybe if you fiddle a bit with the values at those addresses you might change different aspects like how far you can zoom out.
SpeedDevil
Ragezone