Author Topic: MAME Plugin Progress Thread  (Read 80537 times)

tschak909

  • LinuxMCE God
  • ****
  • Posts: 5549
  • DOES work for LinuxMCE.
    • View Profile
Re: MAME Plugin Progress Thread
« Reply #90 on: February 21, 2008, 02:53:55 am »
Still hacking on the plugin, this time, doing a new external library, WindowUtils, which will currently have two high level functions

GetWindowIDFromTitle() - Gets the Window # from a title fragment. This is used to find the MAME window.
SendKeystrokeToWindowID() - This uses XSendEvent to pass keystrokes to the emulator window. I use XSendEvent _BECAUSE_ the orbiter window may not be in focus at all times, and I need to be able to periodically send events (for example, Screenshot, to grab a video frame.)

work progresses onward, also having to deal with my health, so i am taking this slow.

This may if it becomes mature enough, be a nice replacement for the wmctrl calls all over Orbiter.

-Thom


tschak909

  • LinuxMCE God
  • ****
  • Posts: 5549
  • DOES work for LinuxMCE.
    • View Profile
Re: MAME Plugin Progress Thread
« Reply #91 on: February 24, 2008, 03:39:39 am »
still hacking on WindowUtils, it compiles now.. but I seem to be having difficulties with my GetProperty routine...very odd...

Code: [Select]
12      02/23/08 21:19:42.000           Calling callback for alarm 0x808e798 id 1 param=(nil) entry->when: 1203819582 time: 1203819582 <0xb7752b90>
10      02/23/08 21:19:42.000           WindowUtils::GetProperty -- getting property _NET_CLIENT_LIST <0xb7752b90>
10      02/23/08 21:19:42.000           WindowUtils::GetProperty -- Got Property:  <0xb7752b90>
10      02/23/08 21:19:42.000           WindowUtils::GetClientList -- Got Client List:  <0xb7752b90>
01      02/23/08 21:19:42.001           WindowUtils::FindWindowMatching -- Fell all the way through! <0xb7752b90>
01      02/23/08 21:19:42.001           Couldn't find MAME Window <0xb7752b90>
12      02/23/08 21:19:42.001           Cancel Alarm by type: 1 <0xb7752b90>
12      02/23/08 21:19:47.000           Calling callback for alarm 0x808e798 id 1 param=(nil) entry->when: 1203819587 time: 1203819587 <0xb7752b90>
10      02/23/08 21:19:47.000           WindowUtils::GetProperty -- getting property _NET_CLIENT_LIST <0xb7752b90>
10      02/23/08 21:19:47.000           WindowUtils::GetProperty -- Got Property:  <0xb7752b90>
10      02/23/08 21:19:47.000           WindowUtils::GetClientList -- Got Client List:  <0xb7752b90>
10      02/23/08 21:19:47.000           WindowUtils::GetClientList -- Client List Fragment:  <0xb7752b90>
10      02/23/08 21:19:47.000           WindowUtils::GetClientList -- Client List converted to int: 0 <0xb7752b90>
10      02/23/08 21:19:47.000           WindowUtils::GetClientList -- Client List Fragment:  <0xb7752b90>
10      02/23/08 21:19:47.000           WindowUtils::GetClientList -- Client List converted to int: 0 <0xb7752b90>
10      02/23/08 21:19:47.000           WindowUtils::GetProperty -- getting property _NET_WM_NAME <0xb7752b90>
X Error of failed request:  BadWindow (invalid Window parameter)
  Major opcode of failed request:  20 (X_GetProperty)
  Resource id in failed request:  0x0
  Serial number of failed request:  12
  Current serial number in output stream:  12

the code:

WindowUtils.cpp

Code: [Select]
/*
     Copyright (C) 2008 Locale|CONCEPT for the LinuxMCE project.

Author: Thomas Cherryhomes <thom.cherryhomes@localeconcept.com>


     This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License.
     This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

     See the GNU General Public License for more details.

This code was based in part on:

wmctrl
A command line tool to interact with an EWMH/NetWM compatible X Window Manager.

Author, current maintainer: Tomas Styblo <tripie@cpan.org>

Copyright (C) 2003

*/

#include "WindowUtils.h"
#include "PlutoUtils/CommonIncludes.h"
#include "DCE/Logger.h"

#include <vector>
#include <map>
#include <string>
#include <cstdlib>
 
#include <fcntl.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <unistd.h>
#include <sys/wait.h>
#include <errno.h>
#include <sys/select.h>

extern int errno;

using namespace std;
using namespace DCE;

#include "PlutoUtils/StringUtils.h"
#include "PlutoUtils/FileUtils.h"
#include "PlutoUtils/PlutoDefs.h"

namespace WindowUtils
{
using std::map;
using std::vector;
using std::string;

}

// Quick little hack.
inline int stoi(std::string &s)
{
    return std::atoi(s.c_str());
}

/**
* GetProperty - Get an X Property.
*/
bool WindowUtils::GetProperty(Display *disp, Window win, Atom xa_prop_type, string s_PropertyName, string& s_Property)
{
Atom xa_prop_name;
Atom xa_ret_type;
int ret_format;
unsigned long ret_nitems;
unsigned long ret_bytes_after;
unsigned long tmp_size;
unsigned char *ret_prop;
        char *ret;

xa_prop_name = XInternAtom(disp, s_PropertyName.c_str(), False);
LoggerWrapper::GetInstance()->Write(LV_STATUS,"WindowUtils::GetProperty -- getting property %s",s_PropertyName.c_str());

    /* MAX_PROPERTY_VALUE_LEN / 4 explanation (XGetWindowProperty manpage):
      *
      * long_length = Specifies the length in 32-bit multiples of the
      *               data to be retrieved.
      */

if (XGetWindowProperty(disp, win, xa_prop_name, 0, MAX_PROPERTY_VALUE_LEN / 4, False,
    xa_prop_type, &xa_ret_type, &ret_format,     
            &ret_nitems, &ret_bytes_after, &ret_prop) != Success)
{
LoggerWrapper::GetInstance()->Write(LV_CRITICAL,"Cannot get %s property.",s_PropertyName.c_str());
return false;
}

if (xa_ret_type != xa_prop_type)
{
LoggerWrapper::GetInstance()->Write(LV_CRITICAL,"Invalid type of %s property.", s_PropertyName.c_str());
XFree(ret_prop);
return false;
}

XFree(ret_prop);

       /* null terminate the result to make string handling easier */
tmp_size = (ret_format / 8) * ret_nitems;
ret = (char *)malloc(tmp_size+1);

memcpy(ret, ret_prop, tmp_size);
ret[tmp_size] = '\0';

/* Then, convert it to a C++ string */

s_Property = string(ret);
LoggerWrapper::GetInstance()->Write(LV_STATUS,"WindowUtils::GetProperty -- Got Property: %s",s_Property.c_str());
return true;

}

/**
* GetClientList - Get the list of clients attached to display.
*/
bool WindowUtils::GetClientList(Display *disp,vector<Window>& v_wClientList)
{

string client_list;
unsigned int i;

if (!GetProperty(disp,DefaultRootWindow(disp),XA_WINDOW,"_NET_CLIENT_LIST",client_list)) 
{
if (!GetProperty(disp,DefaultRootWindow(disp), XA_CARDINAL, "_WIN_CLIENT_LIST",client_list))
{
LoggerWrapper::GetInstance()->Write(LV_CRITICAL,"WindowUtils: Cannot Get Client List Properties");
return false;
}
}

string temp;
int win;

LoggerWrapper::GetInstance()->Write(LV_STATUS,"WindowUtils::GetClientList -- Got Client List: %s",client_list.c_str());

// Now transmorgrify it into a vector of Windows
for (i=0;i<client_list.size();i+=sizeof(Window))
{
temp = client_list.substr(i,sizeof(Window));
LoggerWrapper::GetInstance()->Write(LV_STATUS,"WindowUtils::GetClientList -- Client List Fragment: %s",temp.c_str());
win = stoi(temp);
LoggerWrapper::GetInstance()->Write(LV_STATUS,"WindowUtils::GetClientList -- Client List converted to int: %x",win);
v_wClientList.push_back(win);
}

return true;

}
 
/**
* GetWindowTitle - Get Window Title given Window ID
*/
bool WindowUtils::GetWindowTitle(Display *disp, Window win, string& s_Title)
{
string s_wm_name;
string s_Net_wm_name;

if (!GetProperty(disp, win, XInternAtom(disp, "UTF8_STRING", False), "_NET_WM_NAME", s_Net_wm_name))
{
// no _NET_WM property for window title, get it the old way.
LoggerWrapper::GetInstance()->Write(LV_CRITICAL,"WindowUtils::GetWindowTitle -- no _NET_WM_Property, getting old way.");
if (!GetProperty(disp, win, XA_STRING, "WM_NAME", s_wm_name))
{
LoggerWrapper::GetInstance()->Write(LV_STATUS,"WindowUtils::GetWindowTitle -- no WM_NAME property either...bailing...");
return false;
} else {
LoggerWrapper::GetInstance()->Write(LV_STATUS,"WindowUtils::GetWindowTitle -- Setting Title to WM_NAME %s",s_wm_name.c_str());
s_Title = string(s_wm_name);
return true;
}
}
else
{
LoggerWrapper::GetInstance()->Write(LV_STATUS,"WindowUtils::GetWindowTitle -- Setting Title to _NET_WM_NAME %s",s_Net_wm_name.c_str());
s_Title = string(s_Net_wm_name);
return true;
}

}

/**
* FindWindowMatching - Return first Window ID matching a title fragment.
*/
bool WindowUtils::FindWindowMatching(Display *disp, string windowName, Window& win)
{
vector<Window> v_wClientList;
string title;
unsigned int i;

if (!GetClientList(disp,v_wClientList))
{
LoggerWrapper::GetInstance()->Write(LV_CRITICAL,"WindowUtils::FindWindowMatching -- Could not get client list!");
return false;
}

for (i=0;i<v_wClientList.size();i++)
{
if (!GetWindowTitle(disp,v_wClientList[i],title))
{
LoggerWrapper::GetInstance()->Write(LV_CRITICAL,"WindowUtils::FindWindowMatching -- Could not get window title for Window ID %x",v_wClientList[i]);
continue;
}
else
{
if (title.find_first_of(windowName) == string::npos)
{
LoggerWrapper::GetInstance()->Write(LV_CRITICAL,"WindowUtils::FindWindowMatching -- Couldn't match window title %s",title.c_str());
continue;
}
else
{
win = (Window)v_wClientList[i];
LoggerWrapper::GetInstance()->Write(LV_STATUS,"WindowUtils::FindWindowMatching -- Title Matched %s to Window id %x",title.c_str(),win);
return true;
}
}
}

LoggerWrapper::GetInstance()->Write(LV_CRITICAL,"WindowUtils::FindWindowMatching -- Fell all the way through!");
return false;

}

WindowUtils.h

Code: [Select]
/*
     Copyright (C) 2008 Locale|Concept

     www.localeconcept.com

     Phone: +1 (617) 245-1354

Author: Thom Cherryhomes <thom.cherryhomes@localeconcept.com>

     This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License.
     This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

     See the GNU General Public License for more details.

This code was based in part on:

wmctrl
A command line tool to interact with an EWMH/NetWM compatible X Window Manager.

Author, current maintainer: Tomas Styblo <tripie@cpan.org>

Copyright (C) 2003

*/

/** @file WindowUtils.h
 Header file for the Window Utils namespace
 */
#ifndef WINDOWUTILS
#define WINDOWUTILS

#include <string>
#include <vector>
#include <map>

#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <X11/cursorfont.h>
#include <X11/Xmu/WinUtil.h>

#define _NET_WM_STATE_REMOVE        0    /* remove/unset property */
#define _NET_WM_STATE_ADD           1    /* add/set property */
#define _NET_WM_STATE_TOGGLE        2    /* toggle property  */
#define MAX_PROPERTY_VALUE_LEN     4096

/**
@namespace WindowUtils
For Window Management using EWMH semantics.
*/
namespace WindowUtils
{
using namespace std;
using std::map;
using std::vector;
using std::string;


/**
* GetProperty - Get an X Property.
*/
bool GetProperty(Display *disp, Window win, Atom xa_prop_type, string s_PropertyName, string& s_Property);

/**
* GetClientList - Get the list of clients attached to display.
*/
bool GetClientList(Display *disp,vector<Window>& v_wClientList);

/**
* GetWindowTitle - Get Window Title given Window ID
*/
bool GetWindowTitle(Display *disp, Window win, string& s_WindowTitle);

/**
* FindWindowMatching - Return first Window ID matching a title fragment.
*/
bool FindWindowMatching(Display *disp, string windowName, Window& win);

}
#endif

any ideas???  :-\ ??? I'm going to be whiddling through this until it works....

looks like i'm just mangling things a bit...

-Thom

tschak909

  • LinuxMCE God
  • ****
  • Posts: 5549
  • DOES work for LinuxMCE.
    • View Profile
Re: MAME Plugin Progress Thread
« Reply #92 on: February 26, 2008, 08:01:45 am »
all is good, windowutils is now properly matching windows, and I am getting back a proper window ID....now moving on to injecting window events.

Code: [Select]
12      02/26/08 0:47:27.000            Calling callback for alarm 0x808e798 id 1 param=(nil) entry->when: 1204004847 time: 1204004847 <0xb779fb90>
10      02/26/08 0:47:27.000            WindowUtils::GetClientList -- root window ID is 0x13a <0xb779fb90>
10      02/26/08 0:47:27.000            WindowUtils::GetProperty -- getting property _NET_CLIENT_LIST <0xb779fb90>
10      02/26/08 0:47:27.000            WindowUtils::GetProperty -- Got Property:  <0xb779fb90>
10      02/26/08 0:47:27.000            WindowUtils::GetClientList -- Client List Size 20 <0xb779fb90>
10      02/26/08 0:47:27.000            WindowUtils::GetClientList -- Client added: 0x00c00007 <0xb779fb90>
10      02/26/08 0:47:27.000            WindowUtils::GetClientList -- Client added: 0x0200000e <0xb779fb90>
10      02/26/08 0:47:27.000            WindowUtils::GetClientList -- Client added: 0x00e00002 <0xb779fb90>
10      02/26/08 0:47:27.000            WindowUtils::GetClientList -- Client added: 0x01800001 <0xb779fb90>
10      02/26/08 0:47:27.000            WindowUtils::GetClientList -- Client added: 0x01e0000e <0xb779fb90>
10      02/26/08 0:47:27.000            WindowUtils::GetWindowTitle -- Getting Window Title for Window 0xc00007 <0xb779fb90>
10      02/26/08 0:47:27.000            WindowUtils::GetProperty -- getting property _NET_WM_NAME <0xb779fb90>
10      02/26/08 0:47:27.000            WindowUtils::GetProperty -- Got Property: Linux MCE Launch Manager <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetWindowTitle -- Setting Title to _NET_WM_NAME Linux MCE Launch Manager <0xb779fb90>
01      02/26/08 0:47:27.001            WindowUtils::FindWindowMatching -- Couldn't match window title Linux MCE Launch Manager <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetWindowTitle -- Getting Window Title for Window 0x200000e <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetProperty -- getting property _NET_WM_NAME <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetProperty -- Got Property: PlutoGalleryViewer <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetWindowTitle -- Setting Title to _NET_WM_NAME PlutoGalleryViewer <0xb779fb90>
01      02/26/08 0:47:27.001            WindowUtils::FindWindowMatching -- Couldn't match window title PlutoGalleryViewer <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetWindowTitle -- Getting Window Title for Window 0xe00002 <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetProperty -- getting property _NET_WM_NAME <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetProperty -- Got Property: OrbiterGL <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetWindowTitle -- Setting Title to _NET_WM_NAME OrbiterGL <0xb779fb90>
01      02/26/08 0:47:27.001            WindowUtils::FindWindowMatching -- Couldn't match window title OrbiterGL <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetWindowTitle -- Getting Window Title for Window 0x1800001 <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetProperty -- getting property _NET_WM_NAME <0xb779fb90>
01      02/26/08 0:47:27.001            Invalid type of _NET_WM_NAME property. <0xb779fb90>
01      02/26/08 0:47:27.001            WindowUtils::GetWindowTitle -- no _NET_WM_Property, getting old way. <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetProperty -- getting property WM_NAME <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetProperty -- Got Property: pluto-xine-playback-window <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetWindowTitle -- Setting Title to WM_NAME pluto-xine-playback-window <0xb779fb90>
01      02/26/08 0:47:27.001            WindowUtils::FindWindowMatching -- Couldn't match window title pluto-xine-playback-window <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetWindowTitle -- Getting Window Title for Window 0x1e0000e <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetProperty -- getting property _NET_WM_NAME <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetProperty -- Got Property: MAME: No Driver Loaded [empty] <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::GetWindowTitle -- Setting Title to _NET_WM_NAME MAME: No Driver Loaded [empty] <0xb779fb90>
10      02/26/08 0:47:27.001            WindowUtils::FindWindowMatching -- Position: 0, Title Matched MAME: No Driver Loaded [empty] to Window id 0x1e0000e <0xb779fb90>
10      02/26/08 0:47:27.001            MAME window found: Window ID 31457294 <0xb779fb90>
12      02/26/08 0:47:27.001            Cancel Alarm by type: 1 <0xb779fb90>

 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D

-Thom

tschak909

  • LinuxMCE God
  • ****
  • Posts: 5549
  • DOES work for LinuxMCE.
    • View Profile
Re: MAME Plugin Progress Thread
« Reply #93 on: March 02, 2008, 01:33:08 am »
took a small sideline today, to implement the UI2 popup menu:

http://www.localeconcept.com/pub/scratch/games/now_with_ui2_menu.png

 ;D

still need to implement the DesignObjs for UI1, which is a bit more difficult.

-Thom

tschak909

  • LinuxMCE God
  • ****
  • Posts: 5549
  • DOES work for LinuxMCE.
    • View Profile
Re: MAME Plugin Progress Thread
« Reply #94 on: March 02, 2008, 05:18:32 am »
How you like that? three major things in one day so far:

* The first bits of UI2 done (above)
* WindowUtils::SendKeyToWindow() now works properly.. I will need to add two more complimentary functions for dealing with held down keys in OSD mode
* and because of that.. I was able to implement GetVideoFrame, and as a side effect? ... Thumbnail works!

http://www.localeconcept.com/pub/scratch/games/now_with_get_video_frame.png

I fight on.

-Thom

tschak909

  • LinuxMCE God
  • ****
  • Posts: 5549
  • DOES work for LinuxMCE.
    • View Profile
Re: MAME Plugin Progress Thread
« Reply #95 on: March 02, 2008, 08:06:53 am »
and just when things couldn't get any better....

holy crap, I did it.

I managed to trigger frames (a la the DVD menu option) on the orbiter! see for yourselves!

the video says it all...

http://www.localeconcept.com/pub/scratch/games/Holy_Crap__Frames_on_the_Orbiter.mp4

ddamron

  • Alumni
  • wants to work for LinuxMCE
  • *
  • Posts: 962
    • View Profile
    • My LinuxMCE User Page
Re: MAME Plugin Progress Thread
« Reply #96 on: March 02, 2008, 07:58:04 pm »
you ROCK
The only intuitive interface is the nipple.  After that it's all learned.
My other computer is your windows box.
I'm out of my mind.  Back in 5 minutes.
Q:  What's Red and smells like blue paint?

A:  Red Paint.

tschak909

  • LinuxMCE God
  • ****
  • Posts: 5549
  • DOES work for LinuxMCE.
    • View Profile
Re: MAME Plugin Progress Thread
« Reply #97 on: March 02, 2008, 07:59:41 pm »
I have added a youtube link:

http://www.youtube.com/watch?v=knachk4FcLc

 ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D

-Thom

d3vice

  • Newbie
  • *
  • Posts: 11
    • View Profile
Re: MAME Plugin Progress Thread
« Reply #98 on: March 02, 2008, 08:30:52 pm »
Great stuff!!

Keep it up!!

Will it work with USB joysticks?

Best regards!

tschak909

  • LinuxMCE God
  • ****
  • Posts: 5549
  • DOES work for LinuxMCE.
    • View Profile
Re: MAME Plugin Progress Thread
« Reply #99 on: March 04, 2008, 07:18:06 am »
Okay, more hacking.. Been adding DCE commands steadily, I am now implementing the UI for the Orbiters (UI1):

http://www.localeconcept.com/pub/scratch/games/games_remote_designer.png

*passing-out* later.

-Thom

bulek

  • Administrator
  • wants to work for LinuxMCE
  • *****
  • Posts: 909
  • Living with LMCE
    • View Profile
Re: MAME Plugin Progress Thread
« Reply #100 on: March 04, 2008, 01:52:34 pm »
Okay, more hacking.. Been adding DCE commands steadily, I am now implementing the UI for the Orbiters (UI1):

http://www.localeconcept.com/pub/scratch/games/games_remote_designer.png

*passing-out* later.

-Thom

Hi,

first thanks for great work... if I understood right, you have managed to create and add new screen to LMCE system using Designer ?

If that's true, could you possible devote some time and describe procedure to do it ? Iwanted to add two screens to LMCE some time ago, but never had a courage to battle with designer....

basically I wanted to create screens :
- for incoming call from doorphone (where I could add camera to incoming call screen so one can actually see person at the front door)
- for audio receivers (currently there is no screen for Audio receivers that have custom commands , so no "stock" screen matches it well enough....

Thanks in advance for any info,

regards,

Bulek....
Thanks in advance,

regards,

Bulek.

gazlang

  • Guru
  • ****
  • Posts: 210
    • View Profile
Re: MAME Plugin Progress Thread
« Reply #101 on: March 06, 2008, 02:10:27 pm »
Is MAME likely to be integrated in the final 0710 release? Or does it need to be manually added by the user?

Would be great for the develpoers to integrate this as standard - as said previously, the ROMS can actually be bought in 'arcade packs' so theres no harm in having the emulator for them!
AMD Athlon 5800+ X2
Asus M2N-SLI-Deluxe
2x Corsair XMS6400 DDR2 512mb
Samsung 400GB SATA + 500GB SATA
nVidia GeForce 7300GT
Hauppauge Nova-T 500
Hauppauge PVR-500
Thermaltake low-noise 450w PSU
Thermaltake Bach Case w/ imon vfd
Fiire Remote
UIRT

tschak909

  • LinuxMCE God
  • ****
  • Posts: 5549
  • DOES work for LinuxMCE.
    • View Profile
Re: MAME Plugin Progress Thread
« Reply #102 on: March 06, 2008, 03:12:27 pm »
given the way Pluto's system is designed, there is no choice, but to integrate it into the stack. But it won't be in the 0710 release. I still have so many issues to resolve (I'm targeting a complete orbiter UI for ALL of the targets, even the Cisco phone!, as well as auto-configuring joysticks, moving media etc..etc..etc..), so it will most likely be put in at or after 0804.

-Thom

tschak909

  • LinuxMCE God
  • ****
  • Posts: 5549
  • DOES work for LinuxMCE.
    • View Profile
Re: MAME Plugin Progress Thread
« Reply #103 on: March 16, 2008, 04:39:50 am »
Lots happened since I last wrote:

* The first DesignObjs for an orbiter UI have been created. Although I need to get them into the Build Process so that they will be part of the new orbiter, before they are Usable. http://www.localeconcept.com/pub/scratch/games/newcontroller1.png
* Infrared remote control now works, if I set the FK_Screen_OSD to 128 (which is the PVR OSD remote), this has an OSD ScreenType, so all key presses that are recieved from Infra-red devices go to the local media player, which is precisely what I want to happen.
* MAME Config Creator and Parser. Currently, gets the correct rom path for the selected rom. This allows the roms to be placed anywhere that the system can find them. There is also an allowance to set the graphic accelleration method. In the future this should probably be gotten from the MD's device data.

I am currently working on trying to get the media file list views to properly display the popups for Sort, Filter, Source, and More. This is proving harder than I thought.... ugh.

-Thom

tschak909

  • LinuxMCE God
  • ****
  • Posts: 5549
  • DOES work for LinuxMCE.
    • View Profile
Re: MAME Plugin Progress Thread
« Reply #104 on: March 16, 2008, 05:42:07 pm »
Has anyone here got experience with sql2cpp? I am trying to write a metadata bootstrap utility, and i think i'm just doing some things with it very wrong...but..meh...

-Thom