You can see the source code for the function in indicators.c. Reproduced here:

Code:
// normalize a value to the -1..+1 range
var Normalize(var* Data,int Period)
{
	Period = Max(2,Period);
	var vMin = MinVal(Data,Period);
	var vMax = MaxVal(Data,Period);
	if(vMax>vMin) 
		return 2.*(*Data-vMin)/(vMax-vMin) - 1.;
	else return 0.;
}

// Fisher Transform
var Fisher(var* Data)
{
	var v = Clamp(Data[0],-0.998,0.998);
	return 0.5*log((1.+v)/(1.-v));
}

// Normalized Fisher transform
var FisherN(var* Data,int Period)
{
	var *Value = series(*Data,2), *FN = series(*Data,2);
	Value[0] = 0.33*Normalize(Data,Period) + 0.67*Value[1];
	return FN[0] = Fisher(Value) + 0.5*FN[1];
}



You can see that the FisherN function uses the weighted average of the two most recent values of the normalized data series in calculating the Fisher transform and adds half of the second most recent value of the data series. Without looking to closely into the reason why this approach is used (off the top of my head, probably to enforce parameter stability), you could also try normalizing the data series and then inputting that normalized series directly into the Fisher transform function without further processing and investigate any differences.

The purpose of the Fisher transform is essentially to emphasize extreme values, relative to the period used to normalize the data.