Category Archives: howto’s

Sacrifice last level: how to defeat Marduk without cheating

Sacrifice was one of the first “decent” games I ever played on my first ever “decent” PC 10 years ago or something. Lately I installed it with Wine under Ubuntu on my Satellite laptop and wanted to revamp an old and undying, clever classic.

I went all-Stratos, as I remembered he was the subtle evil of the group, and tingled the most my curiosity (my first run years ago was a mix of Persephone, James, Stratos, Charnel, and maybe Pyro as well, I wanted to try them all), and I remember I had to cheat my way out of the last couple levels as I couldn’t really beat them well enough; having grown in the meanwhile, I also developed more of a “strategic mind”, and having beaten the 9th level without much difficulty, I wanted to give a try with Marduk (the toughest scare being the fact he can steal your souls without using convert and sac doctors).

The general strategy that worked throughout all the game for me was:

  1. build manaliths near your altar
  2. guardian the most creatures you can summon around them
  3. eat away the enemy’s souls as they attack you wave after wave, until you have enough stock to launch an attack yourself

Stratos’ ranged one-soul attackers are Sylphs, and I found them to be overkill in any kind of situation up to level 8, just summon full 12 groups of them and attack, you deal a lot of damage before the enemy can even reach you. I needed tougher fighters only to overcome the enemy manaliths closer to the altars to desecrate; guarded Sylphs have been especially useful until level 9, but they are simply too weak against Marduk’s huge waves, and there’s too many souls scattered around when they die, to gather before they are stolen.

So I summoned and guarded a Silverback for each manalith close to my altar, and with the remaning 2 souls I guarded a Storm Giant. That, together with wise use of Tornado and Cloud Kill, made me erode little by little Marduk’s souls, until he hadn’t any more spares to attack me with, and stopped coming to my altar at all.

When Marduk doesn’t pay any more visits, you know you can launch your own attacks on his manaliths, given the proper army; I only went around with Silverbacks guarding my back, casted Tornado+Cloud Kill on his altars, and as soon as the lightnings from Cloud Kill went off I launched my Silverbacks to kill the forces still alive; up until the latest manaliths, you can actually convert the souls without Marduk even showing up, I reached a small army of 11 Silverbacks with me, just make sure you make them flee as soon as Death is casted.

I surprised myself with how simple this strategy is, I remember that even cheating 99 souls on my deck last time I played, I still had problems winning, while this time Marduk was rendered unoffensive pretty soon.

  This article has been Digiproved

Guide for HTC HD2 full two-way in-call recording

I am not going to argue with you regarding the reasons you may want to record your incoming or outgoing calls, nor how it is illegal or only partially legal in some countries.
There are a couple of issues with full duplex phonecall recording on the untouched HD2:

  1. the other person’s voice is very faint and totally unhearable when speaking in loud environments
  2. the recording stops after a minute or so, and longer phonecalls are cut after that delay

The reasons for this are

  1. the sound for the third party is not recorded directly, but only what comes from the speaker through to the mic is hearable
  2. the device enters a sleep mode after a certain delay when in a phonecall, so anything which is not radio related is shut down

The main concern until a while ago was the first problem, the second being addressed by a pre-existing  registry hack by I don’t really know who (I’d be happy to credit them, but XDA member shinoby_uk only released a CAB of those pre-esisting hacks, so he is not the real author); this neverending issue (which in time led some people to think that it was a hardware limitation, while I’ve always believed in the hidden software switch) has been solved (according to the XDA member who published the solution) by 4pda.ru member RekGRpth; the existing registry hacks that were released by XDA member mskip (if I am not wrong) and worked for previous HTC models, are still needed, even if are not sufficient by themselves to enable full recording.

So here is the complete list of registry keys to add/modify in order to enable full 2way incall recording on the HD2:

[HKLM > Drivers > BuiltIn > WaveDev]
"MixModeRecord"=dword:00000001

[HKLM > Drivers > BuiltIn > RIL]
"BatteryTimeoutInCall"=dword:00000000
"BattSuspendTimeoutInCall"=dword:00000000
"EnableFastDormantDisplayDuringCall"=dword:00000000

[HKCU > ControlPanel > Phone]
"Sleep"=dword:00000000

[HKCU > ControlPanel > BackLight]
"LightSensorPollingEnable"=dword:0

[HKLM > System > AudioRecording]
"Enabled"=dword:00000001

[HKLM > Software > Microsoft > Voice]
"EnableCallRecordMenuItem"=dword:00000001
"AllowInCallRecording"=dword:00000001

Once you have done so, you are still not done, as you will need a program to actually record the calls; the one I use is the simple but deadly efficient ACR by XDA member slothie.

  This article has been Digiproved

Rover 75: run cables from under bonnet to cockpit

I was laying cables for parking sensors to be used with the Rover 75 ride I got free of charge from my father. Running them from the holes in the bumper to the engine compartment was no big deal, but connecting the main unit under the bonnet to the display in the passenger compartment was a little harder, since I needed to find a way to run it through cleanly enough.

As improvisation goes (and as my father wanted to do himself) you would be tempted to use, somehow, the cable tubes that you see right in the middle of the rear wall of the engine compartment, but that’s gonna be a hard task. On the other side, if you don’t need to run really big cables, you can use a small hole which you can find on the right side (looking toward the engine, and on my car which has the steering wheel on the left of the cockpit) under a plastic grid you have to remove first.

rover 75 under bonnet right view
view of the side of the engine compartment where the hole is located

You have to pull out a waterproof rubber neck that’s fitted around another rigid cable passing through there, to free up enough space to actually run your wires through.

rover 75 engine under bonnet cable hole
Closer view of the hole and the rubber waterproof protection already pulled out

Then you have to access to the cockpit side of the hole.

rover 75 cockpit petals
this is the area where you will be accessing the cable ran through the under the bonnet hole

There is some unscrewing to do here

rover 75 cockpit pedals panel screw
unscrew both the screw you see in this picture and the one on the opposite side of the panel

Once you remove the screws, you need to pull the panel out, and if you want  a more comfortable working environment, also pull out with a discrete force the front panel where the lights switch is located to free up a larger area.

rover 75 pedals panel open
This is the panel pulled out of its place. You can also pull out the beige frontal panel under the steering wheel if you need to.

If you are in a well lit ambient, you should now be able to see the cable probe (or whatever that’s called in english) passing through the hole you just freed

rover 75 under the bonnet hole
this is how the hole appears from the inside of the cockpit if you look carefully enough

Let the cable(s) pass on the side of the panel you prefer (door side in my case) and then screw the panel back in place, after reinserting the frontal panel under the steering wheel if you pulled it out.

  This article has been Digiproved

Starcraft under Wine freezes, hangs and crashes at random interval

After having played Starcraft II on my Windows 7 desktop, yesterday I was trying to get the first Starcraft to work on my laptop under Ubuntu Lucid with Wine; the wine-hq website reported the game as perfectly working, and in fact I only needed to install a patch to let the game start without the mounted CD, but no matter if I tried to play with original Starcraft or the Brood War expansion, I always got random freezes: the game just hung up after a while, it freezed either on the menu or in the playing screen, the cursor wouldn’t respond anymore and all the screen stopped; the audio seemed to be fine though, because sound kept on playing.

I tried changing almost everything under wine configuration, enabling windowed mode with virtual desktop or disabling it, enabling or disabling hardware acceleration and all the other checkboxes under “Graphics” tab. I tried setting up the audio driver… no matter what I did I still got the random freezes.

Until I tried adding a couple of registry values that were reported in the Wine forum for that game but weren’t apparently addressing this particular issue.
Anyway, after adding these keys, I was able to end the first level and go through almost all the second one (time for lunch now) without a glitch, except for the occasional sluggishness.
Run wine regedit and add these couple values under:

HKEY_CURRENT_USER > Software > Wine > Direct3D

The values are two REG_SZ strings:

DirectDrawRenderer = opengl
RenderTargetLockMode = readtex

Should work for you too.

  This article has been Digiproved

Windows Mobile uptime since boot or battery swap, registry key

I am (at the date of writing) the proud owner of an HD2; given its limited 1200 something mAh battery, and my precaution of always having a spare battery for each of my devices (even if now, with the HD2, I got rid in one swoop of mobile phone, PDA, compact camera and bluetooth gps receiver, and this is pretty much my only device, excluding my DSLR which I rarely bring with me), I went a little overboard and bought three spare batteries, which I charge with a mains charger and then swap out periodically.

Just now I became curious to check the uptime before the battery reaches 10% (at which point I take it out for charging), because I never really remember how long it has been since the last battery swap.

I dug a little, and the registry key that stores the uptime since last boot is

HKLM > System > Uptime > Clock

while the uptime since last battery swap (appears to become 0 when you take out the battery, and is not reset after a simple reboot) is

HKLM > System > Uptime > ClockSession

These keys contain a time interval expressed in seconds. Divide it by 60 twice, and by 24 once, and you get the uptime in days (and fraction of day). They have been verified under WM 6.5.X, yet there is no reason they shouldn’t work in not-so-older builds of  Windows Mobile too.

  This article has been Digiproved

PunBB e-mail notification on each new post extension

On another site I manage, I just switched from the previous forum script to PunBB; one feature I missed after the switch is the ability to activate an email notification for each and every post the users add into the forum, so I had to write my own.
Following is the source code of the extension, save it as manifest.xml, upload it into /extensions/newpost_mail_notify/ PunBB folder (or another name of your liking), and install from PunBB admin panel with the usual method. There is nothing to set, as long as the extension is active it just does its job.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE extension SYSTEM "ext-1.0.dtd">

<extension engine="1.0">
<id>pun_newpost_mail_notify</id>
<title>Send email to admin for each new post</title>
<version>1.1</version>
<description>This extension simply sends an email to the configured admin email address everytime a new post is added by someone who's not the configured admin</description>
<author>Ephestione</author>

<minversion>1.3.2</minversion>
<maxtestedon>1.3.4</maxtestedon>

<hooks>
<hook id="po_pre_redirect"><![CDATA[
if ($forum_user['group_id']!=1) { //default admin user id
$notification_to=$forum_config['o_admin_email'];
$notification_subject='['.$forum_config['o_board_title'].'] New topic/post notification';
$notification_message='New post/thread at URL: '.$base_url.'/viewtopic.php?pid='.$new_pid.'#p'.$new_pid;
mail($notification_to,$notification_subject,$notification_message);
}
]]></hook>

</hooks>

</extension>

This extension is very spartan, it will send a mail to the preconfigured admin email address, only if the new post is by someone else than the admin (obviously), with a simple link pointing to the post in the board.

I just updated the code with the suggestion by Grez from PunBB forums, correcting the check on the user which now uses the group_id and not the user id, thus being more solid.

Disclaimer: not my fault if your server explodes, this extension has been made/tested for PunBB 1.3.4, and if you’re not using that version you should definitely upgrade; may be a bad idea to use it if you get a lot of posts each day; I needed it because my forum is not so active, so I prefer getting notified if there’s something new, rather than go checking everyday.

  This article has been Digiproved

reCAPTCHA Input error: Invalid referer and WordPress

Just today someone (thank you) pointed out there was an error with the recaptcha plugin in my WordPress comments. Checking it out, that “Input error: Invalid referer” is a generic error noone has ever pointed out to a single cause.

At first I made sure the keys used by the reCAPTCHA plugin were correct, and created a brand new website domain in the reCAPTCHA admin panel, and updated the values in the plugin settings. That way, I could see the captcha image correctly when loaded while being logged in, but as soon as I logged out the error was back there. I checkd the page source, and I noticed the “challenge” value of the HTML line that called the external javascript was different from the public key I updated in the plugin settings.

After some thinking, it turns out that the WP Super Cache plugin in some cases interferes with reCAPTCHA plugin, as it caches the old plublic key value which of course makes reCAPTCHA mad. Clearing the cache, thus reloading the whole page, solved the problem, and the captcha image was back there to be solved.

  This article has been Digiproved

How to fix Fatal error: Allowed memory size exhausted in WordPress 3

This error is nothing new, per se, as far as I know it was present also in previous versions of wordpress (I’m a fresh new user and I’ve been using v3+ for more than I’ve been with 2.9.7 (first one I installed).
When this error occurred in previous versions, all you needed to do was open the [WORDPRESS FOLDER] > wp-settings.php file, and change the maximum allowed allocable ram from there. And that’s what most guides still tell you to do now, leaving you stranded as that line you need to change is not there anymore.
What you see though, is that at the beginning of the wp-settings.php file there is a line that says:

require( ABSPATH . WPINC . '/default-constants.php' );

which pretty much says it all, unless you are not the least bit PHP savvy (hence, this guide is for you).
All you need to do is open the [WORDPRESS FOLDER] > wp-includes > default-constants.php file, and change the line:

define('WP_MEMORY_LIMIT', '32M');

into

define('WP_MEMORY_LIMIT', '40M');

or anything of your liking (may be 36M, 48M, or whatever depending on your setup); obviously, the lower the better for the performance of your server, especially if you’re on a shared hosting.

  This article has been Digiproved

Resize, enlarge or scale an html image map with a PHP script

I am creating a portal for an italian website which will sport a nice region selector with an imagemap, and region highlighting with a javascript. I found a free and detailed image map of italy along with a combined png, but it was too small to be really useable, so I needed to put a bigger image; with that, I also needed to alter the imagemap coordinates to they matched the enlarged image… noway I was going to do that by hand!

So, after searching for a pre-made solution (which I obviously didn’t find)  I devised a very simple PHP script to do eaxctly that. The script puts the entire code for the image map inside a string variable, and then processes that string with a regular expression search and replace to change the values accordingly to my needs. I only needed to make the image two times bigger, mantaining the aspect ratio, but since I was going to publish this inside a guide, I said to myself “why not making it so you can change the aspect ratio as well”. So, if you want, you can make the imagemap two times larger, and 1.5 times taller.

Here’s the sample script (the $html variable is defined with a sample imagemap for the region of Lazio alone, for space purposes, but you can put whatever you want inside, I used it with the whole map of Italy, together with <map> tags and lines breaks/indentation). Be careful and ESCAPE the double quotes inside the HTML before pasting the code inside the string. In other words, simply put a backslash (the \ character) before each occurence of a double quote (the $quot; character) inside the HTML, I used the search and replace function of Notepad++.

<?php
$html="<area href=\"#\" alt=\"state\" title=\"lazio\" shape=\"poly\" coords=\"74.513,86.938,75.667,87.365,75.667,88.007,74.744,89.077,75.436,90.467,76.359,90.039,77.857,90.039,78.319,90.039,79.127,90.788,79.588,91.857,79.588,92.606,80.049,93.034,80.51,93.034,81.317,94.103,81.779,94.852,82.24,94.959,83.74,94.852,84.201,94.959,85.123,94.959,86.392,94.103,87.43,93.141,88.122,93.141,89.39,93.141,89.967,92.713,91.351,90.895,91.813,90.895,92.274,91.216,93.196,90.895,94.349,90.788,94.926,90.467,96.31,89.825,96.886,90.467,96.656,90.895,95.849,91.323,95.387,92.072,94.234,92.072,92.965,92.713,92.505,93.676,92.505,94.317,92.734,94.959,91.928,95.28,91.813,95.922,91.467,96.778,92.505,98.382,92.505,99.023,92.505,99.986,91.928,101.804,91.928,103.194,92.734,103.837,94.234,103.623,96.31,104.264,97.579,105.013,99.309,106.51,102.191,108.543,103.229,108.543,104.728,109.077,106.113,110.361,106.574,111.965,106.804,113.035,106.574,113.783,106.574,114.425,105.882,114.853,105.305,115.067,104.844,115.067,104.728,116.029,104.728,117.099,104.152,118.061,103.46,118.703,102.999,119.345,102.999,120.093,101.961,120.308,100.23,120.735,99.539,120.308,98.271,119.345,96.656,118.489,95.156,118.275,92.965,118.489,91.005,118.703,89.39,116.885,89.506,116.029,88.122,114.639,85.931,113.997,83.97,112.607,81.548,110.574,78.55,107.687,77.627,105.869,76.128,104.692,74.975,102.874,73.706,101.056,71.745,99.023,70.131,97.098,67.594,94.959,69.093,93.676,70.131,92.606,70.592,91.216,70.592,90.039,71.745,89.611,72.553,88.649,73.014,88.221,72.553,86.938,73.245,86.189,74.513,86.938\" />";
echo preg_replace("/([0-9.]{2,}),([0-9.]{2,})/e","round(\\1*2,3).','.round(\\2*1.5,3)",htmlentities($html));
?>

All you need to do is change the parameters inside the regular expression (numbers in red), first is for horizontal proportion, second for vertical; in this example the imagemap will be resized to 2 times its length, and 1.5 times its height, if you want to make the size three times bigger, change it to

echo  preg_replace("/([0-9.]{2,}),([0-9.]{2,})/e","round(\\1*3,3).','.round(\\2*3,3)",htmlentities($html));

Then, copy the php script to your server, open it in a web browser, and copy/paste the result. Note: according the the way the imagemap is originally formatted, you may need to edit the regular expression to accomodate for spaces, tabs, linebreaks or whatever; in this case, since the coordinates were listed with just commas inbetween it was not needed. If you are stuck, write in the comments an excerpt of your imagemap code and I’ll try and help you.

  This article has been Digiproved

Time of last visit to a website page in Firefox history

Last time I put hands on my car, a Rover 75, in order to change by myself the in-tank fuel pump (maybe a tutorial will be coming about that), I already knew it was going to be a hard task. That’s why I made sure I had enough time, it was a sunny sunday morning and had plenty of light as well.

Last thing I did before going out in the yard was checking some tutorial page to rapidly review the job details, and first thing I did after the job was finally done and I checked the pump was working, was to call my girlfriend to give her the good news, even if I knew she wasn’t going to car much. What I hadn’t done, was checking the time before going out, and after getting back inside, and I was surely curious to know how much it had taken total.

Checking the call history on my phone was easy, so I knew the time I finished, but looking in Firefox History to see at what time I had last visited that tutorial webpage, it wasn’t as easy as I thought, since there was no right-click option whatsoever to obtain that info. I knew it had to be recorded somewhere, since Firefox has the capability of ordering its history based onorder of last visit, so a not-so-immediate search found this solution, whis is the following:

Go to History menu -> Show all history, then in that window you have to add the date column (right-click on the columns headers and check “Visit Date”), that will show the visited time.

If you’re curious, in the end I realized I had been a total of four hours at it.