NPChar contains 100 entries.
Each NPChar entry is 22 bytes.
0x00:Byte Present
0x01:Byte CollisionType(0:NULL 1:BLOCK 2:ENEMY 3:EVENT)
0x02:Byte Type
0x03:Byte EventID
0x04:Little endian short Status(always 0 in npchar.dat,but in a savefile...double check this,okay?)
0x06:Fixed point (Little endian 18.14):X
0x0A:Fixed point (Little endian 18.14):Y
0x0E:Fixed point (Little endian 18.14):X target
0x12:Fixed point (Little endian 18.14):Y target
Java routine for FP -> Double,being used in my own personal project.
Value is returned in tiles.(to convert to pixels,multiply by 16)
    public double FixedPointToDouble(InputStream is) throws IOException
    {
        double fractional=is.read();
        int mb=is.read();//WWFFFFFF
        fractional+=(mb&0x3F)<<8;
        fractional/=(1<<14);
        int whole=(mb&(64|128))/64;
        whole|=is.read()<<2;
        whole|=is.read()<<10;
        return fractional+whole;
    }

