01-04-2012, 10:10 PM
I'm assuming you have already downloaded the stuff needed for creating the DLL. If not, please check back >here<
In the rarara-folder (I'm just sticking to the original names for the sake of understandability (is that even a word? :p)), you'll see a file called "rarara.Asm". This is pretty much the file that starts all the magic. So, let's have a look into it:
Feel free to learn what does what; with a bit dedication, you get behind it pretty easily. What you need to know: semicolons ";" make the rest of the line a comment which is not going to be read by the assembler (the thing that creates the DLL for you). The "invoke"-command will load the routines that are stored inside the various .inc-files you see at the top which have been "include"d (these procedures actually override the exe-settings, so they are the ones you are looking for). You can basically include more than you actually use; it's just not good coding practice.
What you need to do is to comment out anything that is timestop-related. So, un-including timestop.inc is not necessary but it won't hurt. What you definitely need to do is commenting the timestop-related "invoke"s. As I said, these are the ones to be disabled, so go slap some ";" at the front of the respective lines.
Hope that helps a bit ;)
Yes, I could've simply done it myself and thus saved about 5minutes writing up this post but I actually wanted him to understand what is going on.
In the rarara-folder (I'm just sticking to the original names for the sake of understandability (is that even a word? :p)), you'll see a file called "rarara.Asm". This is pretty much the file that starts all the magic. So, let's have a look into it:
ASM-Code:
; Based on Masm32 Dll Plugin Example for Damnation by Drakken ; Modified for LF2 by Silva ; Contributions by: genevrier .386 .Model Flat, StdCall OPTION CASEMAP :NONE include \masm32\include\windows.inc include \masm32\include\masm32.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\debug.inc includelib \masm32\lib\masm32.lib includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\debug.lib include rarara.inc include generic.inc include AI.inc include armor.inc include states.inc include text.inc include itreff.inc include itrkind.inc include perspective.inc include timestop.inc .data memAlloc dd ? .code DllEntryPoint proc hInstDLL:DWORD, reason:DWORD, unused:DWORD mov eax,reason .if eax == DLL_PROCESS_ATTACH ; Called when our dll loaded invoke VirtualAlloc, NULL, 4000, MEM_COMMIT,PAGE_READWRITE mov memAlloc,eax call DLLStartup ; Memory patches and jmp patches .endif ret DllEntryPoint endp DLLStartup proc ;===============Random stuff(generic.inc)=========== invoke CallPatch, 0041FA09h, addr Health invoke JmpPatch, 0041FB09h, addr MP invoke JmpPatch, 00420223h, addr Max_HP invoke JmpPatch, 0041A71Dh, addr Hide_shadow invoke JmpPatch,004202B2h, addr opoint_kind ;=================================================== ;=============itr kind(itrkind.inc)================= invoke JmpPatch, 00430CECh, addr itr_kind8 invoke JmpPatch, 004176CCh, addr itr_kind8_2 ;=================================================== ;=============itr effects(itreff.inc)=============== invoke JmpPatch, 0042EB73h, addr itr_effect_fall invoke JmpPatch, 0042FD11h, addr itr_effect ;=================================================== ;=================states(states.inc)================ invoke JmpPatch, 0041F63Ch, addr State8xxx invoke JmpPatch, 004140FBh, addr State_Turning invoke JmpPatch, 004177D9h, addr Hit_teammates ;================================================== ;===================Loading Text(text.inc)============ invoke JmpPatch, 004243D2h, addr Loading ;===================================================== ;====================Armor(armor.inc)==================== invoke JmpPatch,0042E6DFh, addr Armor_Knight ;knight armor invoke JmpPatch,0042E74Ch, addr Armor_Louis ;louis armor invoke JmpPatch,0042E82Eh, addr Armor_Julian ;julian armor ;======================================================= ;============Perspective Tag(perspective.inc)=========== invoke JmpPatch, 00421517h, addr perspective invoke JmpPatch, 0042D62Eh, addr perspective2 invoke JmpPatch, 0042D36Bh, addr perspective3 invoke JmpPatch, 0042D4D3h, addr perspective4 ;===================================================== ;==============Time Stop(timestop.inc)================ invoke JmpPatch, 00406800h, addr loop2 invoke JmpPatch,0041FB3Dh, addr frame_update invoke JmpPatch,0041E68Bh, addr movement invoke JmpPatch,0041E395h,addr frame_shit invoke CallPatch,0041D4AAh, addr time_loop invoke WriteMem,0041D4AFh, addr oneNOP,1 invoke JmpPatch,0042F32Ch,addr shaking invoke JmpPatch,004064B0h,addr create_object invoke JmpPatch,0041FCB9h,addr timestop_opoint ;===================================================== call AI ret DLLStartup endp AI proc ;=================Range Stuf================== invoke JmpPatch, 0040AE1Ah, addr Range1 invoke JmpPatch, 0040B227h, addr Range2 invoke JmpPatch, 0040B2DBh, addr Range3 invoke JmpPatch, 0040B393h, addr Range4 invoke JmpPatch, 00403878h, addr Deep_Ball ;============================================= ;Generic D>A invoke JmpPatch, 00403608h, addr AI_Ball1 ;Generic D>A #2 invoke JmpPatch, 004036FBh, addr AI_Ball2 ;deep ai invoke JmpPatch, 00403E89h, addr AI_Deep ;john ai invoke JmpPatch, 00403A7Eh, addr AI_John ;henry ai invoke JmpPatch, 004041F1h, addr AI_Henry ;rudolf ai invoke JmpPatch, 0040436Eh, addr AI_Rudolf ;louis ai invoke JmpPatch, 004044FAh, addr AI_Louis ;firen ai invoke JmpPatch, 00404609h, addr AI_Firen ;freeze ai invoke JmpPatch, 0040499Ah, addr AI_Freeze ;dennis ai invoke JmpPatch, 00405150h, addr AI_Dennis ;woody ai invoke JmpPatch, 00404DBBh, addr AI_Woody ;davis ai invoke JmpPatch, 00404C12h, addr AI_Davis ;sorcerer ai invoke JmpPatch, 00405566h, addr AI_Sorcerer ret AI endp End DllEntryPoint |
What you need to do is to comment out anything that is timestop-related. So, un-including timestop.inc is not necessary but it won't hurt. What you definitely need to do is commenting the timestop-related "invoke"s. As I said, these are the ones to be disabled, so go slap some ";" at the front of the respective lines.
Hope that helps a bit ;)
Yes, I could've simply done it myself and thus saved about 5minutes writing up this post but I actually wanted him to understand what is going on.
Silverthorn / Blue Phoenix
~ Breaking LFE since 2008 ~
"Freeze, you're under vrest!" - Mark, probably.
» Gallery | » Sprites | » DeviantArt
~ Breaking LFE since 2008 ~
"Freeze, you're under vrest!" - Mark, probably.
» Gallery | » Sprites | » DeviantArt