<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Little Fighter Empire - Forums - Tutorials]]></title>
		<link>https://lf-empire.de/forum/</link>
		<description><![CDATA[Little Fighter Empire - Forums - https://lf-empire.de/forum]]></description>
		<pubDate>Sun, 26 Jul 2026 17:53:07 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Learn lf2.exe from C]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=9365</link>
			<pubDate>Sat, 23 Aug 2014 08:22:49 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=2284">o_g349</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=9365</guid>
			<description><![CDATA[Learn lf2.exe from C<br />
<br />
This tutorial teach you how to use C to understand what the assembly means in lf2.exe.<br />
Please download the tool IDA and ollydbg, we use these tools to find what lf2.exe doing in this tutorial.<br />
<br />
<span style="font-size: large;" class="mycode_size">Stack frame</span><br />
<br />
Lets checkout this function func_417400.<br />
At begining<br />
<img src="http://i.imgur.com/QrlO2jd.png" alt="[Image: QrlO2jd.png]" class="mycode_img" /><br />
When this function get called, the stack will pushed a return address.<br />
The return address is where to jump back when this function is doned and ready to return.<br />
<img src="http://i.imgur.com/N71RC1i.png" alt="[Image: N71RC1i.png]" class="mycode_img" /><br />
<br />
When the <span style="font-weight: bold;" class="mycode_b">sub esp,30</span> is executed, stack pointer (esp) will prepare the space for local variables usage.<br />
<img src="http://i.imgur.com/JUQDQwx.png" alt="[Image: JUQDQwx.png]" class="mycode_img" /><br />
<br />
When the <span style="font-weight: bold;" class="mycode_b">mov eax,dword ptr ss:[esp+34]</span> is executed, we get the first argument of this function and store it in eax register.<br />
<img src="http://i.imgur.com/NmmWQ5y.png" alt="[Image: NmmWQ5y.png]" class="mycode_img" /><br />
So the definition of this function looks like:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;C-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="c" style="font-family&#58;monospace;"><span style="color&#58; #993333;">int</span> func&#95;417400<span style="color&#58; #009900;">&#40;</span>arg&#95;1<span style="color&#58; #009900;">&#41;</span> <span style="color&#58; #009900;">&#123;</span>
<span style="color&#58; #009900;">&#125;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
When the <span style="font-weight: bold;" class="mycode_b">push esi</span> is executed, we save the data in esi register to prevent the code below from ruining the data in esi register.<br />
We will use esi register for another purpose in code below.<br />
<img src="http://i.imgur.com/A2r1M3R.png" alt="[Image: A2r1M3R.png]" class="mycode_img" /><br />
<br />
When the <span style="font-weight: bold;" class="mycode_b">mov esi,ecx</span> is executed, we copy the <span style="font-weight: bold;" class="mycode_b">this</span> pointer to esi register.<br />
Because LF2 is developed by <span style="font-weight: bold;" class="mycode_b">Visual C++</span>, by convension, Visual C++ compiler uses ecx register to transfor the <span style="font-weight: bold;" class="mycode_b">this</span> pointer to the function be called.<br />
You can regard <span style="font-weight: bold;" class="mycode_b">this</span> pointer as a first argument of this function in C.<br />
So the definition of this function looks like:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;C-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="c" style="font-family&#58;monospace;"><span style="color&#58; #993333;">int</span> func&#95;417400<span style="color&#58; #009900;">&#40;</span>this<span style="color&#58; #339933;">,</span> arg&#95;1<span style="color&#58; #009900;">&#41;</span> <span style="color&#58; #009900;">&#123;</span>
<span style="color&#58; #009900;">&#125;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
<span style="font-size: large;" class="mycode_size">Code in function</span><br />
<br />
Now we look this code:<br />
<img src="http://i.imgur.com/E2ea7Z7.png" alt="[Image: E2ea7Z7.png]" class="mycode_img" /><br />
<br />
The first line <span style="font-weight: bold;" class="mycode_b">mov eax,dword ptr ds:[esi+eax*4+194]</span> is a little bit complicated, this instruction use two registers to locate the address which data is stored in.<br />
We can translate this intruction to <span style="font-weight: bold;" class="mycode_b">mov eax,dword ptr ds:[this+arg_1*4+194]</span>.<br />
<img src="http://i.imgur.com/IwUrxzh.png" alt="[Image: IwUrxzh.png]" class="mycode_img" /><br />
By using this image, we know arg_1 should be <span style="font-weight: bold;" class="mycode_b">index of objects</span> and <span style="font-weight: bold;" class="mycode_b">this</span> pointer should be <span style="font-weight: bold;" class="mycode_b">struct 'global' pointer</span>, so the definition of this function becomes:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;C-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="c" style="font-family&#58;monospace;"><span style="color&#58; #993333;">int</span> func&#95;417400<span style="color&#58; #009900;">&#40;</span><span style="color&#58; #993333;">struct</span> global <span style="color&#58; #339933;">*</span> global<span style="color&#58; #339933;">,</span> uint32&#95;t object&#95;index<span style="color&#58; #009900;">&#41;</span> <span style="color&#58; #009900;">&#123;</span>
<span style="color&#58; #009900;">&#125;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
By inspecting this intruction <span style="font-weight: bold;" class="mycode_b">mov eax,dword ptr ds:[this+arg_1*4+194]</span>, we know corresponding C code:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;C-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="c" style="font-family&#58;monospace;"><span style="color&#58; #993333;">struct</span> object <span style="color&#58; #339933;">*</span> a&#95;object <span style="color&#58; #339933;">=</span> global<span style="color&#58; #339933;">-&gt;</span>objects<span style="color&#58; #009900;">&#91;</span>object&#95;index<span style="color&#58; #009900;">&#93;</span><span style="color&#58; #339933;">;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
By using the <a href="https://docs.google.com/spreadsheet/ccc?key=0At20xa0N5LxydHIwUHA5T3J5Q05DM3Z1UGd3ZTZBYVE#gid=0" target="_blank" rel="noopener" class="mycode_url">data structure</a>, we can understand what the code below means.<br />
<br />
The second line <span style="font-weight: bold;" class="mycode_b">mov ecx,dword ptr ds:[eax+7C]</span> means:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;C-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="c" style="font-family&#58;monospace;">uint32&#95;t frame&#95;id <span style="color&#58; #339933;">=</span> a&#95;object<span style="color&#58; #339933;">-&gt;</span>frame&#95;id<span style="color&#58; #339933;">;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
The third line <span style="font-weight: bold;" class="mycode_b">mov edx,dword ptr ds:[eax+368]</span> means:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;C-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="c" style="font-family&#58;monospace;"><span style="color&#58; #993333;">struct</span> file <span style="color&#58; #339933;">*</span> a&#95;file <span style="color&#58; #339933;">=</span> a&#95;object<span style="color&#58; #339933;">-&gt;</span>file<span style="color&#58; #339933;">;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
These two lines <span style="font-weight: bold;" class="mycode_b">imul ecx,ecx,178</span> and <span style="font-weight: bold;" class="mycode_b">lea ecx,dword ptr ds:[ecx+edx+7A4]</span> means:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;C-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="c" style="font-family&#58;monospace;"><span style="color&#58; #993333;">struct</span> frame <span style="color&#58; #339933;">*</span> a&#95;frame <span style="color&#58; #339933;">=</span> <span style="color&#58; #339933;">&</span>a&#95;file<span style="color&#58; #339933;">-&gt;</span>frames<span style="color&#58; #009900;">&#91;</span>frame&#95;id<span style="color&#58; #009900;">&#93;</span><span style="color&#58; #339933;">;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
So the function should looks like:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;C-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="c" style="font-family&#58;monospace;"><span style="color&#58; #993333;">int</span> func&#95;417400<span style="color&#58; #009900;">&#40;</span><span style="color&#58; #993333;">struct</span> global <span style="color&#58; #339933;">*</span> global<span style="color&#58; #339933;">,</span> uint32&#95;t object&#95;index<span style="color&#58; #009900;">&#41;</span> <span style="color&#58; #009900;">&#123;</span>
    <span style="color&#58; #993333;">struct</span> object <span style="color&#58; #339933;">*</span> a&#95;object <span style="color&#58; #339933;">=</span> global<span style="color&#58; #339933;">-&gt;</span>objects<span style="color&#58; #009900;">&#91;</span>object&#95;index<span style="color&#58; #009900;">&#93;</span><span style="color&#58; #339933;">;</span>
    uint32&#95;t frame&#95;id <span style="color&#58; #339933;">=</span> a&#95;object<span style="color&#58; #339933;">-&gt;</span>frame&#95;id<span style="color&#58; #339933;">;</span>
    <span style="color&#58; #993333;">struct</span> file <span style="color&#58; #339933;">*</span> a&#95;file <span style="color&#58; #339933;">=</span> a&#95;object<span style="color&#58; #339933;">-&gt;</span>file<span style="color&#58; #339933;">;</span>
    <span style="color&#58; #993333;">struct</span> frame <span style="color&#58; #339933;">*</span> a&#95;frame <span style="color&#58; #339933;">=</span> <span style="color&#58; #339933;">&</span>a&#95;file<span style="color&#58; #339933;">-&gt;</span>frames<span style="color&#58; #009900;">&#91;</span>frame&#95;id<span style="color&#58; #009900;">&#93;</span><span style="color&#58; #339933;">;</span>
<span style="color&#58; #009900;">&#125;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
If you have any question, please reply below.<br />
Thanks you for reading this tutorial :)]]></description>
			<content:encoded><![CDATA[Learn lf2.exe from C<br />
<br />
This tutorial teach you how to use C to understand what the assembly means in lf2.exe.<br />
Please download the tool IDA and ollydbg, we use these tools to find what lf2.exe doing in this tutorial.<br />
<br />
<span style="font-size: large;" class="mycode_size">Stack frame</span><br />
<br />
Lets checkout this function func_417400.<br />
At begining<br />
<img src="http://i.imgur.com/QrlO2jd.png" alt="[Image: QrlO2jd.png]" class="mycode_img" /><br />
When this function get called, the stack will pushed a return address.<br />
The return address is where to jump back when this function is doned and ready to return.<br />
<img src="http://i.imgur.com/N71RC1i.png" alt="[Image: N71RC1i.png]" class="mycode_img" /><br />
<br />
When the <span style="font-weight: bold;" class="mycode_b">sub esp,30</span> is executed, stack pointer (esp) will prepare the space for local variables usage.<br />
<img src="http://i.imgur.com/JUQDQwx.png" alt="[Image: JUQDQwx.png]" class="mycode_img" /><br />
<br />
When the <span style="font-weight: bold;" class="mycode_b">mov eax,dword ptr ss:[esp+34]</span> is executed, we get the first argument of this function and store it in eax register.<br />
<img src="http://i.imgur.com/NmmWQ5y.png" alt="[Image: NmmWQ5y.png]" class="mycode_img" /><br />
So the definition of this function looks like:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;C-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="c" style="font-family&#58;monospace;"><span style="color&#58; #993333;">int</span> func&#95;417400<span style="color&#58; #009900;">&#40;</span>arg&#95;1<span style="color&#58; #009900;">&#41;</span> <span style="color&#58; #009900;">&#123;</span>
<span style="color&#58; #009900;">&#125;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
When the <span style="font-weight: bold;" class="mycode_b">push esi</span> is executed, we save the data in esi register to prevent the code below from ruining the data in esi register.<br />
We will use esi register for another purpose in code below.<br />
<img src="http://i.imgur.com/A2r1M3R.png" alt="[Image: A2r1M3R.png]" class="mycode_img" /><br />
<br />
When the <span style="font-weight: bold;" class="mycode_b">mov esi,ecx</span> is executed, we copy the <span style="font-weight: bold;" class="mycode_b">this</span> pointer to esi register.<br />
Because LF2 is developed by <span style="font-weight: bold;" class="mycode_b">Visual C++</span>, by convension, Visual C++ compiler uses ecx register to transfor the <span style="font-weight: bold;" class="mycode_b">this</span> pointer to the function be called.<br />
You can regard <span style="font-weight: bold;" class="mycode_b">this</span> pointer as a first argument of this function in C.<br />
So the definition of this function looks like:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;C-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="c" style="font-family&#58;monospace;"><span style="color&#58; #993333;">int</span> func&#95;417400<span style="color&#58; #009900;">&#40;</span>this<span style="color&#58; #339933;">,</span> arg&#95;1<span style="color&#58; #009900;">&#41;</span> <span style="color&#58; #009900;">&#123;</span>
<span style="color&#58; #009900;">&#125;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
<span style="font-size: large;" class="mycode_size">Code in function</span><br />
<br />
Now we look this code:<br />
<img src="http://i.imgur.com/E2ea7Z7.png" alt="[Image: E2ea7Z7.png]" class="mycode_img" /><br />
<br />
The first line <span style="font-weight: bold;" class="mycode_b">mov eax,dword ptr ds:[esi+eax*4+194]</span> is a little bit complicated, this instruction use two registers to locate the address which data is stored in.<br />
We can translate this intruction to <span style="font-weight: bold;" class="mycode_b">mov eax,dword ptr ds:[this+arg_1*4+194]</span>.<br />
<img src="http://i.imgur.com/IwUrxzh.png" alt="[Image: IwUrxzh.png]" class="mycode_img" /><br />
By using this image, we know arg_1 should be <span style="font-weight: bold;" class="mycode_b">index of objects</span> and <span style="font-weight: bold;" class="mycode_b">this</span> pointer should be <span style="font-weight: bold;" class="mycode_b">struct 'global' pointer</span>, so the definition of this function becomes:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;C-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="c" style="font-family&#58;monospace;"><span style="color&#58; #993333;">int</span> func&#95;417400<span style="color&#58; #009900;">&#40;</span><span style="color&#58; #993333;">struct</span> global <span style="color&#58; #339933;">*</span> global<span style="color&#58; #339933;">,</span> uint32&#95;t object&#95;index<span style="color&#58; #009900;">&#41;</span> <span style="color&#58; #009900;">&#123;</span>
<span style="color&#58; #009900;">&#125;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
By inspecting this intruction <span style="font-weight: bold;" class="mycode_b">mov eax,dword ptr ds:[this+arg_1*4+194]</span>, we know corresponding C code:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;C-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="c" style="font-family&#58;monospace;"><span style="color&#58; #993333;">struct</span> object <span style="color&#58; #339933;">*</span> a&#95;object <span style="color&#58; #339933;">=</span> global<span style="color&#58; #339933;">-&gt;</span>objects<span style="color&#58; #009900;">&#91;</span>object&#95;index<span style="color&#58; #009900;">&#93;</span><span style="color&#58; #339933;">;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
By using the <a href="https://docs.google.com/spreadsheet/ccc?key=0At20xa0N5LxydHIwUHA5T3J5Q05DM3Z1UGd3ZTZBYVE#gid=0" target="_blank" rel="noopener" class="mycode_url">data structure</a>, we can understand what the code below means.<br />
<br />
The second line <span style="font-weight: bold;" class="mycode_b">mov ecx,dword ptr ds:[eax+7C]</span> means:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;C-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="c" style="font-family&#58;monospace;">uint32&#95;t frame&#95;id <span style="color&#58; #339933;">=</span> a&#95;object<span style="color&#58; #339933;">-&gt;</span>frame&#95;id<span style="color&#58; #339933;">;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
The third line <span style="font-weight: bold;" class="mycode_b">mov edx,dword ptr ds:[eax+368]</span> means:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;C-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="c" style="font-family&#58;monospace;"><span style="color&#58; #993333;">struct</span> file <span style="color&#58; #339933;">*</span> a&#95;file <span style="color&#58; #339933;">=</span> a&#95;object<span style="color&#58; #339933;">-&gt;</span>file<span style="color&#58; #339933;">;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
These two lines <span style="font-weight: bold;" class="mycode_b">imul ecx,ecx,178</span> and <span style="font-weight: bold;" class="mycode_b">lea ecx,dword ptr ds:[ecx+edx+7A4]</span> means:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;C-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="c" style="font-family&#58;monospace;"><span style="color&#58; #993333;">struct</span> frame <span style="color&#58; #339933;">*</span> a&#95;frame <span style="color&#58; #339933;">=</span> <span style="color&#58; #339933;">&</span>a&#95;file<span style="color&#58; #339933;">-&gt;</span>frames<span style="color&#58; #009900;">&#91;</span>frame&#95;id<span style="color&#58; #009900;">&#93;</span><span style="color&#58; #339933;">;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
So the function should looks like:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;C-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="c" style="font-family&#58;monospace;"><span style="color&#58; #993333;">int</span> func&#95;417400<span style="color&#58; #009900;">&#40;</span><span style="color&#58; #993333;">struct</span> global <span style="color&#58; #339933;">*</span> global<span style="color&#58; #339933;">,</span> uint32&#95;t object&#95;index<span style="color&#58; #009900;">&#41;</span> <span style="color&#58; #009900;">&#123;</span>
    <span style="color&#58; #993333;">struct</span> object <span style="color&#58; #339933;">*</span> a&#95;object <span style="color&#58; #339933;">=</span> global<span style="color&#58; #339933;">-&gt;</span>objects<span style="color&#58; #009900;">&#91;</span>object&#95;index<span style="color&#58; #009900;">&#93;</span><span style="color&#58; #339933;">;</span>
    uint32&#95;t frame&#95;id <span style="color&#58; #339933;">=</span> a&#95;object<span style="color&#58; #339933;">-&gt;</span>frame&#95;id<span style="color&#58; #339933;">;</span>
    <span style="color&#58; #993333;">struct</span> file <span style="color&#58; #339933;">*</span> a&#95;file <span style="color&#58; #339933;">=</span> a&#95;object<span style="color&#58; #339933;">-&gt;</span>file<span style="color&#58; #339933;">;</span>
    <span style="color&#58; #993333;">struct</span> frame <span style="color&#58; #339933;">*</span> a&#95;frame <span style="color&#58; #339933;">=</span> <span style="color&#58; #339933;">&</span>a&#95;file<span style="color&#58; #339933;">-&gt;</span>frames<span style="color&#58; #009900;">&#91;</span>frame&#95;id<span style="color&#58; #009900;">&#93;</span><span style="color&#58; #339933;">;</span>
<span style="color&#58; #009900;">&#125;</span></pre></code></div></div>
		</td></tr></table><br />
<br />
If you have any question, please reply below.<br />
Thanks you for reading this tutorial :)]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Changing\Removing ads in exe]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=8388</link>
			<pubDate>Fri, 23 Nov 2012 15:32:36 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=4523">InPhiKnight</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=8388</guid>
			<description><![CDATA[I know how to change the links and image.<br />
First change the sprite of the images to what you want in sprite\ad0.bmp<br />
Then  go to data folder and open ad0.txt there you will find<br />
ta 0 140 300 &lt;link you need&gt;<br />
ta 140 280 300 &lt;link you need&gt;<br />
ta 280 300 300 &lt;link you need&gt;<br />
And do the same in ad1.bmp and ad1.txt.<br />
Hope you'll understood it.<br />
<br />
To remove it<br />
<blockquote class="mycode_quote"><cite>Lord Silva Wrote:</cite>Turn updates off (at<br />
the top right). Go to the<br />
data folder and remove<br />
all the files related to<br />
ads. Jobs done.</blockquote>]]></description>
			<content:encoded><![CDATA[I know how to change the links and image.<br />
First change the sprite of the images to what you want in sprite\ad0.bmp<br />
Then  go to data folder and open ad0.txt there you will find<br />
ta 0 140 300 &lt;link you need&gt;<br />
ta 140 280 300 &lt;link you need&gt;<br />
ta 280 300 300 &lt;link you need&gt;<br />
And do the same in ad1.bmp and ad1.txt.<br />
Hope you'll understood it.<br />
<br />
To remove it<br />
<blockquote class="mycode_quote"><cite>Lord Silva Wrote:</cite>Turn updates off (at<br />
the top right). Go to the<br />
data folder and remove<br />
all the files related to<br />
ads. Jobs done.</blockquote>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Le New Video Tutorial]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=6378</link>
			<pubDate>Mon, 02 May 2011 15:25:27 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=8">Boop</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=6378</guid>
			<description><![CDATA[<a href="http://www.lf-empire.de/phoenix/LFE/Debugging%20Tutorial%20by%20Silva,%201%20May%202011.mp4" target="_blank" rel="noopener" class="mycode_url">http://www.lf-empire.de/phoenix/LFE/Debu...202011.mp4</a><br />
<br />
Assumes you already have RadASM installed and can compile dlls and stuff.<br />
Also assumes you have Olly and CheatEngine.<br />
<br />
If you can't get it to play, use vlc. Might want to watch the older ones then watch this one if you are struggling with the concepts explained.]]></description>
			<content:encoded><![CDATA[<a href="http://www.lf-empire.de/phoenix/LFE/Debugging%20Tutorial%20by%20Silva,%201%20May%202011.mp4" target="_blank" rel="noopener" class="mycode_url">http://www.lf-empire.de/phoenix/LFE/Debu...202011.mp4</a><br />
<br />
Assumes you already have RadASM installed and can compile dlls and stuff.<br />
Also assumes you have Olly and CheatEngine.<br />
<br />
If you can't get it to play, use vlc. Might want to watch the older ones then watch this one if you are struggling with the concepts explained.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[ancient video tutorial] How to debug by Silva]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=3616</link>
			<pubDate>Mon, 14 Sep 2009 22:00:55 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=736">The Lost Global Mod</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=3616</guid>
			<description><![CDATA[Guys, we found the ultimate solution to your hexing problems...<br />
means no more annoying and noobish posts that all are about the same sh*t and what not.. so prepare to be impressed and don't even dare to complain about quality.. this is more than 2 years old.. <br />
<br />
<a href="http://www.mediafire.com/?nym3ynjy0yz" target="_blank" rel="noopener" class="mycode_url">Click me</a><br />
<br />
Credits go to:<br />
- Silva for making this videos and the writeup..<br />
- Bp for still having them on his harddisk<br />
- and me for writing this post cause silva couldn't be bothered.. <img src="https://lf-empire.de/forum/images/smilies/biggrin.gif" alt=":D" title=":D" class="smilie smilie_20" />]]></description>
			<content:encoded><![CDATA[Guys, we found the ultimate solution to your hexing problems...<br />
means no more annoying and noobish posts that all are about the same sh*t and what not.. so prepare to be impressed and don't even dare to complain about quality.. this is more than 2 years old.. <br />
<br />
<a href="http://www.mediafire.com/?nym3ynjy0yz" target="_blank" rel="noopener" class="mycode_url">Click me</a><br />
<br />
Credits go to:<br />
- Silva for making this videos and the writeup..<br />
- Bp for still having them on his harddisk<br />
- and me for writing this post cause silva couldn't be bothered.. <img src="https://lf-empire.de/forum/images/smilies/biggrin.gif" alt=":D" title=":D" class="smilie smilie_20" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[About the LF2 Engine]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=3329</link>
			<pubDate>Wed, 29 Jul 2009 15:18:16 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=8">Boop</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=3329</guid>
			<description><![CDATA[LF2 consists of "objects". There is a maximum of 400 objects, numbered 0-399. LF2 loops through all the objects and does all the needed operations on them(physics calculations etc).Getting to access an object you first have to get it's base address. That looks something like this:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>mov eax,dword ptr ds:[esi+edi*4+194h]</code></div></div>Now I'll explain what everything is.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">eax:</span> that is where the address will be stored. Basic mov operation (mov destination,source).<br />
<br />
<span style="font-weight: bold;" class="mycode_b">esi:</span> Lets call it the "base pointer"(incorrect term but w/e), it is always 458B00h.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">edi:</span> That is the number of the object. Like I mentioned previously, lf2 loops through the objects, so making this a register means the same line can be used to access any object.<br />
<br />
So that line can be expressed as:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>mov eax, dword ptr ds:[458B00h+Object_Number*4+194h]</code></div></div><span style="font-weight: bold;" class="mycode_b">*The registers used are just examples, they can be, and will be different in different situations.</span><br />
<span style="font-style: italic;" class="mycode_i"><br />
Advanced (useless to most of you):<br />
It is possible to check if an object exists or not. </span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>cmp byte ptr ds:[esi+edi+4],0</code></div></div><span style="font-style: italic;" class="mycode_i">If it is zero, then the object doesn't exist, if it is 1, it does exist.</span><br />
<br />
After you have access to the "Object", you can access the objects properties. That works something like:<br />
mov dword ptr ds:[eax+70h],0<br />
That sets the objects frame number to 0. A large list of offsets exists here: <span style="font-weight: bold;" class="mycode_b"><a href="http://lf-empire.de/forum/thread-2756-post-152651.html#pid152651" target="_blank" rel="noopener" class="mycode_url">http://lf-empire.de/forum/thread-2756-po...#pid152651</a></span><br />
<br />
As of now, you have access to everything on the first page. To get access to the second page/"ID Properties" you have to get the next pointer. Assuming eax holds your object pointer:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>mov eax, dword ptr ds:[eax+368h] ;move the id properties pointer into eax<br />
cmp dword ptr ds:[eax+6f4h],10 ;check if the ID is 10</code></div></div>Basically, the first line loads the pointer for the id properties. Then after you have the pointer stored in eax, you can access all the information on the 2nd page (only useful stuff is ID and Type).<br />
<br />
Now all that left is the frame stuff:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>mov eax,dword ptr ds:[esi+edi*4+194h] ;Get object pointer<br />
mov ecx,dword ptr ds:[eax+70h] ; get frame number and store in ecx<br />
mov edx,dword ptr ds:[eax+368h] ; get "id" pointer and store in edx<br />
imul ecx,ecx,178h ; multiply frame(ecx) by 178h<br />
cmp dword ptr ds:[ecx+edx+7ACh],0 ; check if state is 0</code></div></div>Hopefully that all makes sense, it is basically : frame number * 178h + object pointer + Offset.<br />
<br />
End.<br />
<br />
~Written by <span style="font-style: italic;" class="mycode_i">(Lord)<img src="https://lf-empire.de/forum/images/smilies/tongue.gif" alt=":p" title=":p" class="smilie smilie_22" /></span> Silva]]></description>
			<content:encoded><![CDATA[LF2 consists of "objects". There is a maximum of 400 objects, numbered 0-399. LF2 loops through all the objects and does all the needed operations on them(physics calculations etc).Getting to access an object you first have to get it's base address. That looks something like this:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>mov eax,dword ptr ds:[esi+edi*4+194h]</code></div></div>Now I'll explain what everything is.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">eax:</span> that is where the address will be stored. Basic mov operation (mov destination,source).<br />
<br />
<span style="font-weight: bold;" class="mycode_b">esi:</span> Lets call it the "base pointer"(incorrect term but w/e), it is always 458B00h.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">edi:</span> That is the number of the object. Like I mentioned previously, lf2 loops through the objects, so making this a register means the same line can be used to access any object.<br />
<br />
So that line can be expressed as:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>mov eax, dword ptr ds:[458B00h+Object_Number*4+194h]</code></div></div><span style="font-weight: bold;" class="mycode_b">*The registers used are just examples, they can be, and will be different in different situations.</span><br />
<span style="font-style: italic;" class="mycode_i"><br />
Advanced (useless to most of you):<br />
It is possible to check if an object exists or not. </span><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>cmp byte ptr ds:[esi+edi+4],0</code></div></div><span style="font-style: italic;" class="mycode_i">If it is zero, then the object doesn't exist, if it is 1, it does exist.</span><br />
<br />
After you have access to the "Object", you can access the objects properties. That works something like:<br />
mov dword ptr ds:[eax+70h],0<br />
That sets the objects frame number to 0. A large list of offsets exists here: <span style="font-weight: bold;" class="mycode_b"><a href="http://lf-empire.de/forum/thread-2756-post-152651.html#pid152651" target="_blank" rel="noopener" class="mycode_url">http://lf-empire.de/forum/thread-2756-po...#pid152651</a></span><br />
<br />
As of now, you have access to everything on the first page. To get access to the second page/"ID Properties" you have to get the next pointer. Assuming eax holds your object pointer:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>mov eax, dword ptr ds:[eax+368h] ;move the id properties pointer into eax<br />
cmp dword ptr ds:[eax+6f4h],10 ;check if the ID is 10</code></div></div>Basically, the first line loads the pointer for the id properties. Then after you have the pointer stored in eax, you can access all the information on the 2nd page (only useful stuff is ID and Type).<br />
<br />
Now all that left is the frame stuff:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>mov eax,dword ptr ds:[esi+edi*4+194h] ;Get object pointer<br />
mov ecx,dword ptr ds:[eax+70h] ; get frame number and store in ecx<br />
mov edx,dword ptr ds:[eax+368h] ; get "id" pointer and store in edx<br />
imul ecx,ecx,178h ; multiply frame(ecx) by 178h<br />
cmp dword ptr ds:[ecx+edx+7ACh],0 ; check if state is 0</code></div></div>Hopefully that all makes sense, it is basically : frame number * 178h + object pointer + Offset.<br />
<br />
End.<br />
<br />
~Written by <span style="font-style: italic;" class="mycode_i">(Lord)<img src="https://lf-empire.de/forum/images/smilies/tongue.gif" alt=":p" title=":p" class="smilie smilie_22" /></span> Silva]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Patching exe to load DLL]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=2521</link>
			<pubDate>Sun, 05 Apr 2009 08:42:40 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=8">Boop</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=2521</guid>
			<description><![CDATA[What you need:<br />
<a href="http://www.reteam.org/tools.html" target="_blank" rel="noopener" class="mycode_url">IIDKing v2.01</a><br />
<a href="http://www.ollydbg.de/" target="_blank" rel="noopener" class="mycode_url">OllyDBG</a><br />
<br />
1.Open IIDKing and Open LF2 with it.<br />
2.Press "Click to pick DLL(s) and their API(s) to add.<br />
3.Browse to C:/windows/system32/kernel32.dll<br />
4.Scroll down in the window appeared until you see "LoadLibaryA"<br />
5.Select it and press "Add them!"<br />
Should be at this stage:<br />
<img src="http://img27.imageshack.us/img27/5979/iddking.png" alt="[Image: iddking.png]" class="mycode_img" /><br />
<br />
Just press "Add them!!" and you are finished.<br />
<br />
IDDKing made a txt file in your lf2 directory. Open it. It should say something like:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>kernel32.dll::LoadLibraryA-&gt;call dword ptr [74f134]</code></div></div><br />
Now it is time for Olly.<br />
<br />
1.Open lf2 in olly.<br />
*The first line selected is the called the Entry point.<br />
2.Change the call at the entry point to call an empty location at the bottom of the file. For example:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;ASM-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="asm" style="font-family&#58;monospace;"><span style="color&#58; #666666; font-style&#58; italic;">;before</span>
<span style="color&#58; #00007f; font-weight&#58; bold;">CALL</span> 00445B31
<span style="color&#58; #666666; font-style&#58; italic;">;after</span>
<span style="color&#58; #00007f; font-weight&#58; bold;">CALL</span> 00446A61</pre></code></div></div>
		</td></tr></table><br />
<br />
3.Now at 00446A61(or where ever you choose to call), put the original call again( CALL 00445B31).<br />
4.Scroll up a few lines(I did it at 00446A4E), right click, binary&gt; edit. Type in rarara.dll (in the ASCII box).<br />
5.Now scroll back to the call and write PUSH X (X being where you wrote the dll name, for me its 00446A4E).<br />
6.Remember the txt that IDDKing made? Open it and copy paste the call part (call dword ptr [74f134]), then paste it into olly after the push.<br />
7.return to the rest of the code. (RET command, it is a asm command thingy)<br />
<br />
Example:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>00446333&nbsp;&nbsp; . 72 61 72 61 72&gt;ASCII "rarara.dll",0<br />
0044633E&nbsp;&nbsp;/&#36; 68 33634400&nbsp;&nbsp;&nbsp;&nbsp;PUSH lf2_load.00446333&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; /FileName = "rarara.dll"<br />
00446343&nbsp;&nbsp;|. FF15 34F17400&nbsp;&nbsp;CALL DWORD PTR DS:[&lt;&amp;kernel32.LoadLibrar&gt;; &#92;LoadLibraryA<br />
00446349&nbsp;&nbsp;|. FF15 2E634400&nbsp;&nbsp;CALL DWORD PTR DS:[44632E]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp;&nbsp;lf2_load.00445AA1<br />
0044634F&nbsp;&nbsp;&#92;. C3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RETN</code></div></div><br />
You're done :).<br />
<br />
PS: Make sure the exe you are patching is based on the no-num version... Otherwise the DLL won't work.]]></description>
			<content:encoded><![CDATA[What you need:<br />
<a href="http://www.reteam.org/tools.html" target="_blank" rel="noopener" class="mycode_url">IIDKing v2.01</a><br />
<a href="http://www.ollydbg.de/" target="_blank" rel="noopener" class="mycode_url">OllyDBG</a><br />
<br />
1.Open IIDKing and Open LF2 with it.<br />
2.Press "Click to pick DLL(s) and their API(s) to add.<br />
3.Browse to C:/windows/system32/kernel32.dll<br />
4.Scroll down in the window appeared until you see "LoadLibaryA"<br />
5.Select it and press "Add them!"<br />
Should be at this stage:<br />
<img src="http://img27.imageshack.us/img27/5979/iddking.png" alt="[Image: iddking.png]" class="mycode_img" /><br />
<br />
Just press "Add them!!" and you are finished.<br />
<br />
IDDKing made a txt file in your lf2 directory. Open it. It should say something like:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>kernel32.dll::LoadLibraryA-&gt;call dword ptr [74f134]</code></div></div><br />
Now it is time for Olly.<br />
<br />
1.Open lf2 in olly.<br />
*The first line selected is the called the Entry point.<br />
2.Change the call at the entry point to call an empty location at the bottom of the file. For example:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;ASM-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="asm" style="font-family&#58;monospace;"><span style="color&#58; #666666; font-style&#58; italic;">;before</span>
<span style="color&#58; #00007f; font-weight&#58; bold;">CALL</span> 00445B31
<span style="color&#58; #666666; font-style&#58; italic;">;after</span>
<span style="color&#58; #00007f; font-weight&#58; bold;">CALL</span> 00446A61</pre></code></div></div>
		</td></tr></table><br />
<br />
3.Now at 00446A61(or where ever you choose to call), put the original call again( CALL 00445B31).<br />
4.Scroll up a few lines(I did it at 00446A4E), right click, binary&gt; edit. Type in rarara.dll (in the ASCII box).<br />
5.Now scroll back to the call and write PUSH X (X being where you wrote the dll name, for me its 00446A4E).<br />
6.Remember the txt that IDDKing made? Open it and copy paste the call part (call dword ptr [74f134]), then paste it into olly after the push.<br />
7.return to the rest of the code. (RET command, it is a asm command thingy)<br />
<br />
Example:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>00446333&nbsp;&nbsp; . 72 61 72 61 72&gt;ASCII "rarara.dll",0<br />
0044633E&nbsp;&nbsp;/&#36; 68 33634400&nbsp;&nbsp;&nbsp;&nbsp;PUSH lf2_load.00446333&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; /FileName = "rarara.dll"<br />
00446343&nbsp;&nbsp;|. FF15 34F17400&nbsp;&nbsp;CALL DWORD PTR DS:[&lt;&amp;kernel32.LoadLibrar&gt;; &#92;LoadLibraryA<br />
00446349&nbsp;&nbsp;|. FF15 2E634400&nbsp;&nbsp;CALL DWORD PTR DS:[44632E]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;&nbsp;&nbsp;lf2_load.00445AA1<br />
0044634F&nbsp;&nbsp;&#92;. C3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RETN</code></div></div><br />
You're done :).<br />
<br />
PS: Make sure the exe you are patching is based on the no-num version... Otherwise the DLL won't work.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[UPDATED]"perspective:" Tag in use]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=2470</link>
			<pubDate>Sat, 28 Mar 2009 15:55:11 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=8">Boop</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=2470</guid>
			<description><![CDATA[Okay, YinYin was one of the people that couldn't get it to work. Well we worked together and I fixed it now.<br />
<img src="http://a.deviantart.com/buttons/y/i/yinyin-falcon.gif" alt="[Image: yinyin-falcon.gif]" class="mycode_img" /> Exe now has YinYin's seal of approval, therefore it must work :).<br />
<br />
 <br />
I'm not sure how many of you knew about this, but marti and starsky made a "perspective: " tag in lf2 and left it unused(it is for bgs). Well now I decided to give it some value!<br />
<br />
Download:<br />
<span style="font-weight: bold;" class="mycode_b"><a href="http://www.mediafire.com/?z4gmnmmzjzn" target="_blank" rel="noopener" class="mycode_url">http://www.mediafire.com/?z4gmnmmzjzn</a></span> &lt;&lt; Updated exe, approved by YinYin.<br />
<br />
What it does:<br />
Basically, what ever number you put into the perspective, it spawns the object(drops it from the sky).<br />
<br />
example:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #800000; font-weight&#58; bold;">width&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2400</span>   <span style="color&#58; #800000; font-weight&#58; bold;">zboundary&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">289</span> <span style="color&#58; #000000; font-weight&#58; bold;">510</span> perspective&#58; <span style="color&#58; #000000; font-weight&#58; bold;">78</span></pre></code></div></div>
		</td></tr></table><br />
<br />
If that is in your bg, then when you bg is loaded, (id)object 78 will be <span style="text-decoration: line-through;" class="mycode_s">loaded</span> dropped from the sky! :).<br />
<br />
This only runs in VS mode... I don't know if it should be a "feature" or a "bug" :D.]]></description>
			<content:encoded><![CDATA[Okay, YinYin was one of the people that couldn't get it to work. Well we worked together and I fixed it now.<br />
<img src="http://a.deviantart.com/buttons/y/i/yinyin-falcon.gif" alt="[Image: yinyin-falcon.gif]" class="mycode_img" /> Exe now has YinYin's seal of approval, therefore it must work :).<br />
<br />
 <br />
I'm not sure how many of you knew about this, but marti and starsky made a "perspective: " tag in lf2 and left it unused(it is for bgs). Well now I decided to give it some value!<br />
<br />
Download:<br />
<span style="font-weight: bold;" class="mycode_b"><a href="http://www.mediafire.com/?z4gmnmmzjzn" target="_blank" rel="noopener" class="mycode_url">http://www.mediafire.com/?z4gmnmmzjzn</a></span> &lt;&lt; Updated exe, approved by YinYin.<br />
<br />
What it does:<br />
Basically, what ever number you put into the perspective, it spawns the object(drops it from the sky).<br />
<br />
example:<br />

		<table width='100%' border='0' style='table-layout:fixed;'><tr><td>
		<div class="geshicode_h" style='padding: 5px; background-color: #888888; border: 1px solid #AAAAAA; color: #000000;'>&nbsp;&nbsp;&nbsp;&nbsp;DC-Code:
			<div class="geshicode_b" style='background-color: #FFFFFF; padding-left: 5px; border: 1px solid #BBBBBB; overflow: auto; height: auto; max-height: 300px'><pre class="dc" style="font-family&#58;monospace;"><span style="color&#58; #800000; font-weight&#58; bold;">width&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">2400</span>   <span style="color&#58; #800000; font-weight&#58; bold;">zboundary&#58;</span> <span style="color&#58; #000000; font-weight&#58; bold;">289</span> <span style="color&#58; #000000; font-weight&#58; bold;">510</span> perspective&#58; <span style="color&#58; #000000; font-weight&#58; bold;">78</span></pre></code></div></div>
		</td></tr></table><br />
<br />
If that is in your bg, then when you bg is loaded, (id)object 78 will be <span style="text-decoration: line-through;" class="mycode_s">loaded</span> dropped from the sky! :).<br />
<br />
This only runs in VS mode... I don't know if it should be a "feature" or a "bug" :D.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Setting up DLL Compiler]]></title>
			<link>https://lf-empire.de/forum/showthread.php?tid=2265</link>
			<pubDate>Wed, 04 Mar 2009 20:40:45 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://lf-empire.de/forum/member.php?action=profile&uid=8">Boop</a>]]></dc:creator>
			<guid isPermaLink="false">https://lf-empire.de/forum/showthread.php?tid=2265</guid>
			<description><![CDATA[How to setup RadASM to compile the dll code.<br />
These instructions are for dummies. Most of the steps are common sense and if you're intelligent you probably don't need to read them.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Step 1:</span><br />
Download this: <a href="http://www.oby.ro/masm32/m32v10r.zip" target="_blank" rel="noopener" class="mycode_url">http://www.oby.ro/masm32/m32v10r.zip</a><br />
<span style="font-weight: bold;" class="mycode_b">Step 2:</span><br />
Extract the zip file you downloaded, and run install.exe.<br />
<span style="font-weight: bold;" class="mycode_b">Step 3:</span><br />
It will ask you where to install. Select c:.<br />
<span style="font-weight: bold;" class="mycode_b">Step 4:</span><br />
Press start<br />
****The next 4 steps tell you to press OK on every window you see pop up, feel free to skip them if you think you can handle it*******<br />
<span style="font-weight: bold;" class="mycode_b">Step 5:</span><br />
Warning message appears. Feel free to turn off your anti virus, or just ignore it.<br />
<span style="font-weight: bold;" class="mycode_b">Step 6:</span><br />
It tells you it will install on C. Press Yes.<br />
<span style="font-weight: bold;" class="mycode_b">Step 7:</span><br />
Another window appears, press OK.<br />
<span style="font-weight: bold;" class="mycode_b">Step 8:</span><br />
Another window appears, press extract.<br />
****Start reading here again****<br />
<span style="font-weight: bold;" class="mycode_b">Step 9:</span><br />
Console screen appears and starts spewing text out. Wait for it to finish<br />
<span style="font-weight: bold;" class="mycode_b">Step 10:</span><br />
After it finishes, a window will pop up telling you to press any key, press any key.<br />
<span style="font-weight: bold;" class="mycode_b">Step 11:</span><br />
Another window appears just press yes again. Keep pressing OK/close any other windows that appear.<br />
<br />
<br />
Congratulations! You've installed MASM32, now you need to install RadASM.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Step 1:</span><br />
Download this: <a href="http://www.mediafire.com/?vmzjjvy0mzz" target="_blank" rel="noopener" class="mycode_url">http://www.mediafire.com/?vmzjjvy0mzz</a><br />
<span style="font-weight: bold;" class="mycode_b">Step 2:</span><br />
Extract it. I extracted it in C: (c:\radasm) , if u don't do that, you'll have to put c:\ in front of all the include files(read post #5 and #6).<br />
<span style="font-weight: bold;" class="mycode_b">Step 3:</span><br />
run RadASM.exe which is inside the RadASM folder.<br />
<br />
Congratulations, you've installed and ran RadASM!! Now you need to get the DLL project files and learn how to compile them.. I always post the newest version of the code here: <a href="http://www.lf-empire.de/forum/showthread.php?tid=2246" target="_blank" rel="noopener" class="mycode_url">http://www.lf-empire.de/forum/showthread.php?tid=2246</a><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Step 1:</span><br />
Download the newest version of the code.<br />
<span style="font-weight: bold;" class="mycode_b">Step 2:</span><br />
Extract it in : RadASM &gt; MASM&gt; Projects . It will replace the old rarara folder<br />
<span style="font-weight: bold;" class="mycode_b">Step 3:</span><br />
In RadASM, the top menu, press File. Then Open Project. Browse to RadASM &gt; MASM &gt; Projects &gt; rarara &gt; rarara.rep<br />
<br />
Congratulations! You've opened the project. To open files in the project look at the far right side, you will see the list of files. Since I want this tutorial to apply in the future as well, I won't tell you what they are called, but double click any of them to open them.<br />
<br />
To compile press ALT+SHIFT+F5 , or in the top menu go to Make &gt; Build. The output dll (rarara.dll) will be in the project folder (RadASM &gt; MASM &gt; Projects &gt; rarara).<br />
<br />
<br />
To get LF2 to actually load the exe, you will need to download this:<br />
<a href="http://www.mediafire.com/?qzkzzvhfvdv" target="_blank" rel="noopener" class="mycode_url">http://www.mediafire.com/?qzkzzvhfvdv</a><br />
That exe file will load rarara.dll, the dll file <span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">has to be called</span></span> rarara.dll , <span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">the dll has to be in the same folder as the exe.</span></span><br />
<br />
<br />
Congratulations! You've finished reading the tutorial on how to set it up, now you can play around with stuff, until I finish writing the whole dll framework system <img src="https://lf-empire.de/forum/images/smilies/tongue.gif" alt=":p" title=":p" class="smilie smilie_22" />.]]></description>
			<content:encoded><![CDATA[How to setup RadASM to compile the dll code.<br />
These instructions are for dummies. Most of the steps are common sense and if you're intelligent you probably don't need to read them.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Step 1:</span><br />
Download this: <a href="http://www.oby.ro/masm32/m32v10r.zip" target="_blank" rel="noopener" class="mycode_url">http://www.oby.ro/masm32/m32v10r.zip</a><br />
<span style="font-weight: bold;" class="mycode_b">Step 2:</span><br />
Extract the zip file you downloaded, and run install.exe.<br />
<span style="font-weight: bold;" class="mycode_b">Step 3:</span><br />
It will ask you where to install. Select c:.<br />
<span style="font-weight: bold;" class="mycode_b">Step 4:</span><br />
Press start<br />
****The next 4 steps tell you to press OK on every window you see pop up, feel free to skip them if you think you can handle it*******<br />
<span style="font-weight: bold;" class="mycode_b">Step 5:</span><br />
Warning message appears. Feel free to turn off your anti virus, or just ignore it.<br />
<span style="font-weight: bold;" class="mycode_b">Step 6:</span><br />
It tells you it will install on C. Press Yes.<br />
<span style="font-weight: bold;" class="mycode_b">Step 7:</span><br />
Another window appears, press OK.<br />
<span style="font-weight: bold;" class="mycode_b">Step 8:</span><br />
Another window appears, press extract.<br />
****Start reading here again****<br />
<span style="font-weight: bold;" class="mycode_b">Step 9:</span><br />
Console screen appears and starts spewing text out. Wait for it to finish<br />
<span style="font-weight: bold;" class="mycode_b">Step 10:</span><br />
After it finishes, a window will pop up telling you to press any key, press any key.<br />
<span style="font-weight: bold;" class="mycode_b">Step 11:</span><br />
Another window appears just press yes again. Keep pressing OK/close any other windows that appear.<br />
<br />
<br />
Congratulations! You've installed MASM32, now you need to install RadASM.<br />
<br />
<span style="font-weight: bold;" class="mycode_b">Step 1:</span><br />
Download this: <a href="http://www.mediafire.com/?vmzjjvy0mzz" target="_blank" rel="noopener" class="mycode_url">http://www.mediafire.com/?vmzjjvy0mzz</a><br />
<span style="font-weight: bold;" class="mycode_b">Step 2:</span><br />
Extract it. I extracted it in C: (c:\radasm) , if u don't do that, you'll have to put c:\ in front of all the include files(read post #5 and #6).<br />
<span style="font-weight: bold;" class="mycode_b">Step 3:</span><br />
run RadASM.exe which is inside the RadASM folder.<br />
<br />
Congratulations, you've installed and ran RadASM!! Now you need to get the DLL project files and learn how to compile them.. I always post the newest version of the code here: <a href="http://www.lf-empire.de/forum/showthread.php?tid=2246" target="_blank" rel="noopener" class="mycode_url">http://www.lf-empire.de/forum/showthread.php?tid=2246</a><br />
<br />
<span style="font-weight: bold;" class="mycode_b">Step 1:</span><br />
Download the newest version of the code.<br />
<span style="font-weight: bold;" class="mycode_b">Step 2:</span><br />
Extract it in : RadASM &gt; MASM&gt; Projects . It will replace the old rarara folder<br />
<span style="font-weight: bold;" class="mycode_b">Step 3:</span><br />
In RadASM, the top menu, press File. Then Open Project. Browse to RadASM &gt; MASM &gt; Projects &gt; rarara &gt; rarara.rep<br />
<br />
Congratulations! You've opened the project. To open files in the project look at the far right side, you will see the list of files. Since I want this tutorial to apply in the future as well, I won't tell you what they are called, but double click any of them to open them.<br />
<br />
To compile press ALT+SHIFT+F5 , or in the top menu go to Make &gt; Build. The output dll (rarara.dll) will be in the project folder (RadASM &gt; MASM &gt; Projects &gt; rarara).<br />
<br />
<br />
To get LF2 to actually load the exe, you will need to download this:<br />
<a href="http://www.mediafire.com/?qzkzzvhfvdv" target="_blank" rel="noopener" class="mycode_url">http://www.mediafire.com/?qzkzzvhfvdv</a><br />
That exe file will load rarara.dll, the dll file <span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">has to be called</span></span> rarara.dll , <span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">the dll has to be in the same folder as the exe.</span></span><br />
<br />
<br />
Congratulations! You've finished reading the tutorial on how to set it up, now you can play around with stuff, until I finish writing the whole dll framework system <img src="https://lf-empire.de/forum/images/smilies/tongue.gif" alt=":p" title=":p" class="smilie smilie_22" />.]]></content:encoded>
		</item>
	</channel>
</rss>