SDK for OfflineList

1. Plugin
  1.1. Some declaration
  1.2. Function summary
2. Module
  2.1. Some declaration
  2.2. Function summary

Plugin

Some declaration

Functions for launch the emulator:
C++: typedef void (__stdcall FLaunchEmulatorFile)(char *fileName);
Delphi: type FLaunchEmulatorFile = procedure(fileName:PChar); stdcall;
        fileName : indicate the complete path of the rom (archived or not).
C++: typedef void (__stdcall FLaunchEmulatorCRC)(char *crc);
Delphi: type FLaunchEmulatorCRC = procedure(crc:PChar); stdcall;
        crc : indicate the crc of the file you want launch with the emulator.

Function for add files:
C++: typedef void (__stdcall FAddRoms)(char *files);
Delphi: FAddRoms = procedure(files:PChar);
        files is a string representing the files names separated by the char "\0" (#0 in delphi) and terminated by a doble "\0".
        The files can be archives or simple files.
        Exemple:
            - for one file: "C:\\foo.zip\0\0" (or 'C:\foo.zip' + #0#0 in delphi)
            - for more than one files: "C:\\foo.zip\0D:\\foo2.gba\0 ... D:\\foox.gba\0\0"

Function for get the unknows files folder:
C++: typedef char *(__stdcall FGetUnknownROMSDir)();
Delphi: FGetUnknownROMSDir = function(): pchar; stdcall;
        Return the path of the unknown files folder.

Fonction for extracting files:
C++: typedef INT32 (__stdcall FExtractRom)(char *crc, char *folder, INT32 patch, INT32 overwrite);
Delphi: FExtractRom = function(crc:PChar; folder: PChar; patch:Integer; overwrite:Integer): Integer; stdcall;
        crc: extract file with the correponding crc.
        folder: the folder to extract files.
        patch: specify if the files must be patched by the modules activated (0 for not patch, other values to patch).
        overwrite: specify if the extraction can overwrite existing files.

Structure for files info:
C++:
typedef struct s_info{
   s_info *nextInfo; // the next game selected.
   char *crc; // indicate the crc of the rom file.
   char *name; // indicate the name of the game.
   char *named; // indicate the rom naming.
   long num; // indicate the release number of the rom.
   long size; // indicate the size of the rom.
   INT32 location; // indicate the location of the rom.
   INT32 language; // indicate the Language(s) of the rom.
   char *save; // indicate the save type of the rom.
   char *publisher; // this is the publisher of the game.
   char *sourceItem; // this is the group who release the first dump available for the rom.
   char *comment; // this is the comment available for this rom.
   char *fileExtention; // the file extention of the rom.
   char *system; // the system of the dat file who contains this rom.
   char *fileName;
} s_info;


Delphi:
type
  PInfo = ^TInfo;
  TInfo = record
    nextInfo: PInfo;
    crc: PChar;
    name: PChar;
    named: PChar;
    num: Integer;
    size: Integer;
    location:Integer;
    language:Integer;
    save: PChar;
    publisher: PChar;
    sourceItem: PChar;
    comment: PChar;
    fileExtention: Pchar;
    system: Pchar;
    fileName: PChar;
  end;
        nextInfo: the next item selected.
        location: the item location, the values are:
                0 = Europe
                1 = USA
                2 = Germany
                3 = China
                4 = Spain
                5 = France
                6 = Italy
                7 = Japan
                8 = Netherlands
                9 = England
                10 = Denmark
                11 = Finland
                12 = Norway
                13 = Poland
                14 = Portugal
                15 = Sweden
                16 = Europe USA
                17 = Europe USA Japan
                18 = USA Japan
                19 = Australia
                20 = North Korea
                21 = Brazil
                22 =  South Korea
                23 = Europe Brazil
                24 = Europe USA Brazil
                25 = USA Brazil

        language: the item language(s), the individual values are:
                1 = French
                2 = English (US)
                4 = Chinese
                8 = Danish
                16 = Dutch
                32 = Finland
                64 = German
                128 = Italian
                256 = Japanese
                512 = Norwegian
                1024 = Polish
                2048 = Portuguese
                4096 = Spanish
                8192 = Swedish
                16384 = English (UK) (only if English (US) already exist)
                32768 = Portuguese (BR)
                65536 = Korean


Structure for functions:
C++:
typedef struct {
  
FExtractRom *extractRom;
   FLaunchEmulatorFile *launchEmulatorFile;
   FLaunchEmulatorCRC *launchEmulatorCRC;
   FAddRoms *addRoms;
   FGetUnknownROMSDir *getUnknownROMSDir;
} s_functions;
Delphi:
type
  TFunctions=record
    extractRom: FExtractRom;
    launchEmulatorFile: FLaunchEmulatorFile;
    launchEmulatorCRC: FLaunchEmulatorCRC;
    addRoms: FAddRoms;
    getUnknownROMSDir: FGetUnknownROMSDir;
  end;


Function summary

C++: void __stdcall closePlugin()
Delphi: procedure closePlugin; stdcall;
        This function is called when the plugin is deactivated.

C++: char *__stdcall getAuthor()
Delphi: function getAuthor: PChar; stdcall;
        Return the plugin author.

C++: char *__stdcall getName()
Delphi: function getName: PChar; stdcall;
        Return the plugin name.

C++: char *__stdcall getSDKVersion()
Delphi: function getSDKVersion: PChar; stdcall;
        Return the SDK plugin version. NEEDED (the SDK version 0.1 to 0.6 are not used anymore)

C++: char *__stdcall getSmallComment()
Delphi: function getSmallComment: PChar; stdcall;
        Return the small comment for describe the plugin.

C++: char *__stdcall getVersion()
Delphi: function getVersion: PChar; stdcall;
        Return the plugin version.

C++: void __stdcall initPlugin(s_functions functions, char *folder)
Delphi: procedure initPlugin(functions: TFunction; folder:PChar); stdcall;
        This function is called when the plugin is activated. NEEDED
        functions: The functions structure.
        folder: The folder where the plugin can store data.

C++: char *__stdcall inMenu()
Delphi: function inMenu: PChar; stdcall;
        If there are only one menu it will be displayed directly else if there are at least 2 menus there will be sub-menu of a menu named like the plugin.
        Return the list of menu which should be desplayed in the plugin menu.
        The menus must be separated by "\0" and the string must be finished by "\0\0"
        You can add a separator by naming a menu "-".

C++: char *__stdcall inPopupMenu()
Delphi: function inPopupMenu: PChar; stdcall;
        If there are only one menu it will be displayed directly else if there are at least 2 menus there will be sub-menu of a menu named like the plugin.
        Return the list of menu which sould be displayed in context menu in the list of item.

        The menus must be separated by "\0" and the string must be finished by "\0\0"
        You can add a separator by naming a menu "-".

C++: char *__stdcall inPopupMenuHave()
Delphi: function inPopupMenuHave: PChar; stdcall;
        If there are only one menu it will be displayed directly else if there are at least 2 menus there will be sub-menu of a menu named like the plugin.
        Return the list of menu which sould be displayed in context menu in the list of item. (for available item)

        The menus must be separated by "\0" and the string must be finished by "\0\0"
        You can add a separator by naming a menu "-".


C++: char *__stdcall inPopupMenuMiss()
Delphi: function inPopupMenuMiss: PChar; stdcall;
        If there are only one menu it will be displayed directly else if there are at least 2 menus there will be sub-menu of a menu named like the plugin.
        Return the list of menu which sould be displayed in context menu in the list of item. (for missing item)

        The menus must be separated by "\0" and the string must be finished by "\0\0"
        You can add a separator by naming a menu "-".


C++: boolean __stdcall isCompatible(char *system)
Delphi: function : PChar; stdcall;
        This function is called for know if the data file is supported by the plugin.

C++: void __stdcall onMenuClick(INT32 action)
Delphi: procedure onMenuClick(action: Integer); stdcall;
        This function is called when the user click on the context menu of the list of item.
        The "action" integer indicate wich menu is clicked 0 for the first menu, 1 for the second, ...


C++: void __stdcall onPopupMenuClick(INT32 action, s_info itemInfo)
Delphi: procedure onPopupMenuClick(action: Integer; itemInfo: PInfo); stdcall;
        This function is called when the user click on the context menu of the list of item.
        The "action" integer indicate wich menu is clicked 0 for the first menu, 1 for the second, ..
.

C++: void __stdcall onPopupMenuHaveClick(INT32 action, s_info itemInfo)
Delphi: procedure onPopupMenuHaveClick(action: Integer; itemInfo: PInfo); stdcall;
        This function is called when the user click on the context menu of the list of item (for available item).
        The "action" integer indicate wich menu is clicked 0 for the first menu, 1 for the second, ..
.

C++: void __stdcall onPopupMenuMissClick(INT32 action, s_info itemInfo)
Delphi: procedure onPopupMenuMissClick(action: Integer; itemInfo: PInfo); stdcall;
        This function is called when the user click on the context menu of the list of item (for missing item).
        The "action" integer indicate wich menu is clicked 0 for the first menu, 1 for the second, ..
.

C++: void __stdcall rename(INT32 language)
Delphi: procedure rename(language: Integer); stdcall;
        This function is called at startup of OfflineList and when the user change the selected language.
        The language value:
                - 0 : English
                - 1 : French
                - 2 : Chinese (Simp)
                - 3 : Chinese (Trad)
                - 4 : German
                - 5 : Dutch
                - 6 : Italian
                - 7 : Japanese
                - 8 : Norwegian
                - 9 : Polish
                - 10 : Portuguese (Brazil)
                - 11 : Spanish
                - 12 : Spanish (Mexico)
                - 13 : Swedish
                - 14 : Danish
                - 15 : Czech
                - 16 : ... .

Module

Some declaration

C++:
typedef struct {
   char *filePath;
   char *crc; // indicate the crc of the rom file.
   char *name; // indicate the name of the game.
   char *named; // indicate the rom naming.
   INT32 num; // indicate the release number of the rom.
} s_item;

Delphi:
type
  TItem = record
    filePath : PChar;
    crc: PChar;
    name: PChar;
    named: PChar;
    num: Integer;
  end;
        filePath: the path of the file to modify
        crc: the item/file crc
        name: the item name
        named: the item "naming"
        num: the item number

Function summary

C++: void __stdcall closeModule()
Delphi: procedure closeModule; stdcall;
        This function is called when the module is deactivated.

C++: void __stdcall editRom(s_item *item)
Delphi: procedure editRom(item: TItem); stdcall;
        Function for edit an item.

C++: char *__stdcall getAuthor()
Delphi: function getAuthor: PChar; stdcall;
        Return the module author.

C++: char *__stdcall getName()
Delphi: function getName: PChar; stdcall;
        Return the module name.

C++: char *__stdcall getSDKVersion()
Delphi: function getSDKVersion: PChar; stdcall;
        Return the SDK module version. NEEDED (the SDK version 0.1 to 0.6 are not used anymore)

C++: char *__stdcall getSmallComment()
Delphi: function getSmallComment: PChar; stdcall;
        Return the small comment for describe the module.

C++: char *__stdcall getVersion()
Delphi: function getVersion: PChar; stdcall;
        Return the module version.

C++: void __stdcall initModule(char *folder)
Delphi: procedure initModule(folder:PChar); stdcall;
        This function is called when the module is activated. NEEDED
        folder: The folder where the module can store data.

C++: boolean __stdcall isCompatible(char *system)
Delphi: function : PChar; stdcall;
        This function is called for know if the data file is supported by the module.

C++: void __stdcall rename(INT32 language)
Delphi: procedure rename(language: Integer); stdcall;
        This function is called at startup of OfflineList and when the user change the selected language.
        The language value:
                - 0 : English
                - 1 : French
                - 2 : Chinese (Simp)
                - 3 : Chinese (Trad)
                - 4 : German
                - 5 : Dutch
                - 6 : Italian
                - 7 : Japanese
                - 8 : Norwegian
                - 9 : Polish
                - 10 : Portuguese (Brazil)
                - 11 : Spanish
                - 12 : Spanish (Mexico)
                - 13 : Swedish
                - 14 : Danish
                - 15 : Czech
                - 16 : ... .