Official Fulqrum Publishing forum

Official Fulqrum Publishing forum (http://forum.fulqrumpublishing.com/index.php)
-   Controls threads (http://forum.fulqrumpublishing.com/forumdisplay.php?f=194)
-   -   Freetrack interface use in IL-2:CoD (http://forum.fulqrumpublishing.com/showthread.php?t=18723)

Wolf_Rider 02-22-2011 11:21 PM

Quote:

Originally Posted by SEE (Post 227224)

~ do we really give a gnats turd.......:grin:


no, you don't

SEE 02-22-2011 11:25 PM

W-R if your keeping count of posts ....your winning hands down! congrats there buddy. Secondly, I wouldn't call anybody an idiot but I guess my principles are different to yours.

Extreme_One 02-22-2011 11:29 PM

The problem is that FT and FTnoIR are at present pretty much forced to emulate the NP software because very few game developers have opened up the possibility to interface directly with their game.

Of course this pisses NP off as they don't see why anyone should hack or emulate their software without purchasing their hardware. That's reasonable.

However it is unreasonable and undeniably false to claim that nowadays the only way to have head-tracking in a game is to have to buy expensive hardware when it's patently obvious that a webcam with the right software is perfectly capable.

If a developer were to say to, for example, the FT devs; "Hey we love what you do but we would need to enable native support rather than hacked TrackIR emulation..." then NP would no longer hold the monopoly, and we the consumer would finally have a fair choice.

It would then be up to NP to ensure that their hardware and software solution was superior to the 'webcam + free software' solution and we would have an open and honest playing field.

NP are trying to maintain their monopoly, I can't blame them but competition is healthy and if NP are stopping developers from enabling any alternative solution then that is anti-competitive and unreasonable.

Wolf_Rider 02-22-2011 11:42 PM

FMD....

that is the problem

the alternatives developers have every opportunity to present a clean alternative to developers in seeking inclusion. A consensus was reached very early in the thread on games should be available to alternative headtracking

even when FT uses a an non-TIR interfacing, most users pass that over for the TIR interfacing for its quality.

there is no monopoly (proven) and no proof of anti-competitive behaviour (that cry has been going on for 2 -3 years now)

albx 02-23-2011 05:15 AM

Quote:

Originally Posted by Wolf_Rider (Post 227231)
FMD....

that is the problem

the alternatives developers have every opportunity to present a clean alternative to developers in seeking inclusion. A consensus was reached very early in the thread on games should be available to alternative headtracking

even when FT uses a an non-TIR interfacing, most users pass that over for the TIR interfacing for its quality.

there is no monopoly (proven) and no proof of anti-competitive behaviour (that cry has been going on for 2 -3 years now)

elaborate that please... what means? now you are climbing on the glass.. what quality have TIR interface that don't have FT?? THEY JUST SEND FUC*ING DATA THROUGH A .DLL

and, for your information, this is the C++ source code to use Freetrack DLL

Code:

/************************************************************************
 *        freetrack_c_interface.c
 *       
 *  A simple command line application which reads the data from FreeTrack
 *        using the FreeTrackClient.dll interface.
 *
 *        Assumes that a copy of the FreeTrackClient.dll is in the same folder,
 *        thought this does not necessarily have to be the same folder as the
 *        FreeTrack application itself.
 *
 *        Based on code from http://en.wikipedia.org/wiki/Dynamic-link_library
 *
 *        Alastair Moore, December 2007
 *
 ************************************************************************/

//#include <iostream>
//#include <tchar.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>

typedef struct
{
        float yaw;
        float pitch;
        float roll;
        float x;
        float y;
        float z;
        int dataID;
}FreeTrackData;

// DLL function signatures
// These match those given in FTTypes.pas
// WINAPI is macro for __stdcall defined somewhere in the depths of windows.h
typedef bool (WINAPI *importGetData)(FreeTrackData * data);
typedef char *(WINAPI *importGetDllVersion)(void);
typedef void (WINAPI *importReportID)(int name);
typedef char *(WINAPI *importProvider)(void);


int main(int argc, char **argv)
{
                //declare imported function pointers
        importGetData getData;
                importGetDllVersion getDllVersion;
                importReportID        reportID;
                importProvider provider;

                // create variables for exchanging data with the dll
        FreeTrackData data;
                FreeTrackData *pData;
                pData = &data;
                char *pDllVersion;
                int name = 453;
                char *pProvider;


        // Load DLL file
        HINSTANCE hinstLib = LoadLibrary("FreeTrackClient.dll");
        if (hinstLib == NULL) {
                printf("ERROR: unable to load DLL\n");
                return 1;
        }
                else
                {
                        printf("dll loaded\n");
                }

        // Get function pointers
        getData = (importGetData)GetProcAddress(hinstLib, "FTGetData");
                getDllVersion = (importGetDllVersion)GetProcAddress(hinstLib, "FTGetDllVersion");
                reportID = (importReportID)GetProcAddress(hinstLib, "FTReportID");
                provider = (importProvider)GetProcAddress(hinstLib, "FTProvider");

                // Check they are valid
        if (getData == NULL) {
                printf("ERROR: unable to find 'FTGetData' function\n");
              FreeLibrary(hinstLib);
                return 1;
        }
                if (getDllVersion == NULL){
                                printf("ERROR: unable to find 'FTGetDllVersion' function\n");
              FreeLibrary(hinstLib);
                return 1;
                }
                if (reportID == NULL){
                                printf("ERROR: unable to find 'FTReportID' function\n");
              FreeLibrary(hinstLib);
                return 1;
                }
                if (reportID == NULL){
                                printf("ERROR: unable to find 'FTProvider' function\n");
              FreeLibrary(hinstLib);
                return 1;
                }

                //        Print the address of each function
                printf("FTGetData is at address: 0x%x\n",getData);
                printf("FTGetDllVersion is at address: 0x%x\n",getDllVersion);
                printf("FTReportID is at address: 0x%x\n",reportID);
                printf("FTProvider is at address: 0x%x\n",provider);

                //        Call each function and display result
                pDllVersion = getDllVersion();
                printf("Dll Version: %s\n", pDllVersion);

                pProvider = provider();
                printf("Provider: %s\n", pProvider);
               
                reportID(name);        //not sure what this does - I guess it tells the dll that I am using it.
               
                system("pause"); //wait till keyboard is pressed before entering main loop
                while( kbhit() != 1)
                {
                        system("cls"); //clear screen
                        if (getData(pData))
                        {
                                printf("Record ID: %d\n" , data.dataID);
                                printf("Yaw: %5.2f\n" , data.yaw );
                                printf("Pitch: %5.2f\n" , data.pitch );
                                printf("Roll: %5.2f\n" , data.roll );
                                printf("X: %5.2f\n" , data.x );
                                printf("Y: %5.2f\n" , data.y );
                                printf("Z: %5.2f\n" , data.z );

                        }
                        else
                        {
                                printf("Nothing returned from getData\n");
                                break;
                        }
                }

        // Unload DLL file
        FreeLibrary(hinstLib);

                return 0;
}

the red/bolded text are the coords... that is very easy to include in a game... OK?

dmn... i promised not reply to W_R posts but i had to do

Alberto

Wolf_Rider 02-23-2011 06:53 AM

err, albx... I never that wasn't the code, I said it was a copy paste

(its not 100% bug free but at least it works

-updated the struct
-renamed FTReportID to FTReportName on line 93
-commented out the break in the loop, this allows the program to keep if for some reason the struct failed to update, so any program built off it should be error-tolerant)

is from the header




and I asked your pal to put into layman's terms how the FT worked, ie what did it hook into?

Extreme_One 02-23-2011 07:01 AM

Quote:

Originally Posted by Wolf_Rider (Post 227231)
....

even though FT has a non-TIR interfacing, most developers pass that over...

I have fixed your quote to make it more thruthful.

Wolf_Rider 02-23-2011 07:11 AM

is it hardly surprising a FT'er would stoop to forgery now?

Extreme_One 02-23-2011 07:16 AM

Quote:

Originally Posted by Wolf_Rider (Post 227286)
is it hardly surprising a FT'er would stoop to forgery now?

You are wrong. I'm not an FTer. I have TrackIR1 hardware, unfortunately there is no Win7 driver so it's not currently in use. I have too many kids to feed and therefore cannot afford to purchase the latest TIR.

Judging by your apparent inability to see the whole picture it is typical that you would jump to the wrong conclusion though.

Wolf_Rider 02-23-2011 07:27 AM

the rest is your concern and your concern alone and not an excuse to resort to forgery


All times are GMT. The time now is 02:20 PM.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright © 2007 Fulqrum Publishing. All rights reserved.