Author Topic: XMPlay KOM Archive Plugin (xmp-kom)(rev.1e)(partially done)  (Read 1748 times)

PSXGamerPro1

  • Posts: 258
Note: This is still in Development
Status: Not Complete and need help to Complete this one.
Average % done: 30% or less.
libs that needs completed to get it to work(3% done or so, guessing that is): komlib
I plan to get komlib to work and then my plugin would use that lib to read from the format I hope and to unpack. It does work when all the xmplay playable files are packed with Algorithm 0 (AKA Store)

To do:
   Make kom files be read by XMPlay with my plugin. I should be able to scan kom files for files like ogg or other supported files within them before telling you there is no playable files within the kom file.
   About Dialog. (I made it in the resource file but haven't seen much code on that in the SDK.)Done.
   A way to integrate kom files in way of telling windows to open them in XMPlay. But then My Plugin would have to tell XMPlay how to read inside such files correctly without crashing.

Rev.1e
             + Added Working about dialog that does not generate compile errors.
             + Need to convert the Python Code to C Code for a way of making a External DLL which would then be Statically compiled and then the plugin would use it but would not import it (like seen in the flac example)(It does not work when I use Cython as C++ 6 wont allow it to happen. (Over 100 Errors that way) and I do not like that the code for each python file is over 7,000 lines which is not readable so it would be needing to be completely rewritten in C which I do not know how to do so.)

The github repository for the lib that will be used for the plugin is here: https://github.com/AraHaan/komlib/.
« Last Edit: 17 Jan '16 - 02:06 by PSXGamerPro1 »

Y@nekŪ

  • Posts: 273
Re: xmp-kom rev.1d (partially done, errors fixed)
« Reply #1 on: 26 Dec '15 - 15:26 »
What kind of plugin is xmp-kom? How does it work?

PSXGamerPro1

  • Posts: 258
What kind of plugin is xmp-kom? How does it work?

It works like other archive plugins I did just get the about dialog working but sadly I cant get it to be able to know the kom file format yet so it can unpack all files in suck kom files to memory and then iterate though them for files that XMPlay knows natively or by other plugins and then add them to the playlist. If Ian has a idea how to do so I would gladly change it to do as such. Also I don't know how I can add it to the Integration file type list when it is a Archive plugin as well unless I somehow merge it with the input plugin headers. At least a little Steps have been taken and complete though. Also another thing that is needed is someone who knows python and C to make a static lib and to have that be added to the plugin similar to the way the FLAC plugin example does.

Also this seems to not do anything in the code as well.
Code: [Select]
const XMPARC *WINAPI XMPARC_GetInterface(DWORD face, InterfaceProc faceproc)
{
//Does not work. Tested with 3.7 to see if message shows and it does not.
if (face!=XMPARC_FACE) { // unsupported version
static int shownerror=0;
if (face<XMPARC_FACE && !shownerror) {
MessageBox(0,"The xmp-kom plugin requires XMPlay 3.8 or above",0,MB_ICONEXCLAMATION);
shownerror=1;
}
return NULL;
}
xmpffile=(XMPFUNC_FILE*)faceproc(XMPFUNC_FILE_FACE);
xmpfmisc=(XMPFUNC_MISC*)faceproc(XMPFUNC_MISC_FACE);
xmpver=xmpfmisc->GetVersion();
return &xmparc;
}

I am not sure if I mapped the file format right but the map is not in C++ so it would be nice to convert it over though. :D

Format Map:
Code: [Select]
KOG GC TEAM MASSFILE V.0.3.
//Hex data here anything with ?? are not constants.
00000000000000000000000000000000000000000000000000??00000001000000????????????????????0000
//xml data, anything with %s are not constant. Also XML's in this format generally have more than 1 File Node. So this is why I stuck %s for all the file specific data.
//also anything that does not have 0 for Algorithm must be ignored by plugin.
<?xml version="1.0"?><Files><File Name="%s" Size="%s" CompressedSize="%s" Checksum="%s" FileTime="%s" Algorithm="0" /></Files>
//compressed file streams here CompressedSize controls how far to look in this per file and is written as bytes.
//first file on the xml File Node is the 1st file in the Stream.
//any other files in the XML File Node? they go here after the 1st file.
//No other files to read? Well guess what you Reached the end of the KOM file and no more bytes to read.
//No files known by XMPlay? Show a message here.
//Any files known by XMPlay? Add them to playlist instead of showing a message.
//Also there is no new lines between the KOG GC stuff, the XML stuff,and the file streams unlike what you see here.
« Last Edit: 17 Jan '16 - 23:30 by PSXGamerPro1 »