LaserMAME Output via EasylasUSB Thread

Allgemeine Fragen zu Lasershow Software und Show-Programmierung.
Antworten
Benutzeravatar
sparket
Beiträge: 392
Registriert: Di 19 Nov, 2002 12:00 pm
Wohnort: Oberlibbach
Kontaktdaten:

LaserMAME Output via EasylasUSB Thread

Beitrag von sparket » Mo 09 Jan, 2006 5:23 pm

Hallo, vielleicht kennen ja einige von Euch LaserMAME ( http://www.nightlase.com.au/lasermame ).

MAME ist ein Emulator für alte Arcade-(Vectoren)spiele, das bekannteste ist wohl ASTEROIDS. Bei LaserMAME werden die Vektoren eben über einen Laserprojektor ausgegeben und man kann Asteroids auf Hauswänden spielen.

Rodney, der Autor von LaserMAME hat momentan die Ausgabe über eine QM Karte realisiert, die sich aber kaum einer leisten kann - ich habe ihn daher mal gefragt ob es möglich wäre die Ausgabe auch über andere, populärere Karten wie die EasylasUSB anzugehen. Er hat Lust dies anzugehen, kennt sich aber wiederum mit der Programmierung und dem Interface der Easylas nicht gut aus - genausowenig wie ich.

Daher meine Frage, hätten die Coder die sich mit der Easylas auskennen (z.B. Erich ..! :) Lust (und sind der englischen Sprache ein bichen mächtig) hier weiterzuhelfen? Dann würde dieser Thread als Platform dienen dies zu diskutieren, leider in englischer Sprache.

Lasst mich wissen was Ihr denkt.

Gruss, Jo

Benutzeravatar
tschosef
Beiträge: 7955
Registriert: Mi 19 Nov, 2003 10:27 am
Do you already have Laser-Equipment?: 7 Projektoren, Tarm Two und DS 2000
7 x ShowNET in einem Gehäuse incl Switch
zwei alte Eigenbaukisten liegen noch im Keller rum.
Wohnort: Steinberg
Kontaktdaten:

Beitrag von tschosef » Mo 09 Jan, 2006 6:17 pm

halli hallo....

nun.. ich hab die EasyLase Aufrufe mit VB gemacht..... aber ich kann mir das gerne mal ansehen... aber nicht heute ;-)

eher morgen... aber so wild kanns nicht sein, denk ich mal.... sind ja "NUR "koordinaten

OK?

Gruß
Erich
Schreibe nie etwas, was Du deinem Gegenüber nicht auch vor anderen Leuten ins Gesicht sagen würdest

Bin der Programmierer von Showeditor und HE-Laserscan
www.HE-Laserscan.de

Lasersoftware + Laserhardware

schobi
Beiträge: 272
Registriert: Mo 26 Sep, 2005 9:28 am
Wohnort: Regensburg
Kontaktdaten:

Beitrag von schobi » Mo 09 Jan, 2006 11:19 pm

Hallo,

ein nicht ganz uneigennütziger Vorschlag: wie wär's denn als Ausgabe-DLL dann gleich die MLD-Architektur zu nutzen? Macht vom Aufwand in der Umsetzung keinen Unterschied, ist dann aber kartenunabhängig. Würde mit Easylase, QM, Medialas-Box und nicht zuletzt meiner eigenen Karte *grins* funktionieren.

Gruss Tobias

Benutzeravatar
tschosef
Beiträge: 7955
Registriert: Mi 19 Nov, 2003 10:27 am
Do you already have Laser-Equipment?: 7 Projektoren, Tarm Two und DS 2000
7 x ShowNET in einem Gehäuse incl Switch
zwei alte Eigenbaukisten liegen noch im Keller rum.
Wohnort: Steinberg
Kontaktdaten:

Beitrag von tschosef » Di 10 Jan, 2006 7:26 am

Ausgabe-DLL dann gleich die MLD-Architektur zu nutzen
gutes Argument !!!!! ist auch nicht schwieriger...


gruß
Erich
Schreibe nie etwas, was Du deinem Gegenüber nicht auch vor anderen Leuten ins Gesicht sagen würdest

Bin der Programmierer von Showeditor und HE-Laserscan
www.HE-Laserscan.de

Lasersoftware + Laserhardware

Benutzeravatar
maxxtc
Beiträge: 205
Registriert: Do 24 Mär, 2005 8:52 pm
Do you already have Laser-Equipment?: 1x RGB (500/250/250)
1x RGY (300/150)
1xR (1700mW)
Wohnort: Althengstett
Kontaktdaten:

Beitrag von maxxtc » Di 10 Jan, 2006 7:59 am

Hallo zusammen,

ich weiß es gehört nicht hier her, aber kann mir kurz mal einer die grobe Funktionsweise dieser MLD Dateien erklären. Warum kann man damit mehrere Geräte ansprechen?

Danke euch!
Chris
..und es funkelt...

Benutzeravatar
tschosef
Beiträge: 7955
Registriert: Mi 19 Nov, 2003 10:27 am
Do you already have Laser-Equipment?: 7 Projektoren, Tarm Two und DS 2000
7 x ShowNET in einem Gehäuse incl Switch
zwei alte Eigenbaukisten liegen noch im Keller rum.
Wohnort: Steinberg
Kontaktdaten:

Beitrag von tschosef » Di 10 Jan, 2006 8:01 am

hai hai...

ich hab "dem" mal geschrieben und auf die MLD treiberarchitektur hin gewiesen, und gleich mal die Anleitung(englisch) dazu als link geschickt.... mal sehen


gruß derweil
Erich
Schreibe nie etwas, was Du deinem Gegenüber nicht auch vor anderen Leuten ins Gesicht sagen würdest

Bin der Programmierer von Showeditor und HE-Laserscan
www.HE-Laserscan.de

Lasersoftware + Laserhardware

schobi
Beiträge: 272
Registriert: Mo 26 Sep, 2005 9:28 am
Wohnort: Regensburg
Kontaktdaten:

Beitrag von schobi » Di 10 Jan, 2006 9:20 am

@MaxxTc

Jede Ausgabehardware bringt ihre eigene DLL mit. Darin werden Funktionen zur Verfügung gestellt, die den Zugriff von der Lasersoftware auf die Hardware ermöglichen.

Ist dann etwa in der Art:
- Prüfen ob Hardware vorhanden, wenn ja -> öffnen
- Frame ausgeben
- am Programmende: Hardware wieder freigeben

Bei Easylase heissen die zugehörigen DLL-Funktionen dann z.B. Easylase_Open, Easylase_Draw, Easylase_Close etc.
Für die QM-Karte dann meinetwegen QM_Open...
Im Grunde ist das vorgehen bei jeder Hardware ähnlich, und da setzt die MLD-Architektur an. Sie ist quasi eine Zwischenstufe zwischen Lasersoftware und der kartenspezifischen DLL und übersetzt standardisierte Funktionsnamen in die der jeweiligen DLL. Das geht aber nur für die Basisfunktionalität, erweiterte Funktionen einer Ausgabekarte sind über dieses Konzept nicht erreichbar.
Leider hat man bei Medialas nichtmal DMX oder TTL-Outs als notwendig erachtet, in das Konzept einzubaun. Aber RGB-Frames ausgeben, das geht.

Gruss Tobias

Benutzeravatar
sparket
Beiträge: 392
Registriert: Di 19 Nov, 2002 12:00 pm
Wohnort: Oberlibbach
Kontaktdaten:

Beitrag von sparket » Di 10 Jan, 2006 12:03 pm

Hi, the idea was to turn this thread to english so Rodney can participate. Please switch to English and discuss LaserMAME issues only.

Thanks, Jo

Benutzeravatar
lasermame
Beiträge: 11
Registriert: Sa 30 Jul, 2005 3:24 pm
Wohnort: Australia
Kontaktdaten:

Beitrag von lasermame » Di 10 Jan, 2006 2:02 pm

Hi everyone,

Thanks to Jo, Erich and others for getting this thread started - I am glad to see some interest happening in Laser-MAME!

Erich: I am looking through the information from your email - perhaps going with the Mamba drivers might be a good place to start - in theory, we may be able to get many DACs happening quickly!

I am hoping to try and get Laser-MAME to work on as many hardware DACs as possible, however, please be patient as I don't own any other than my own hardware which I built myself. I will simply do as much coding as possible and then send you all the program to try out for yourself...if that is ok with you?

I will also update the Laser-MAME website too with the developments as they happen, but I think it would be best to try and keep discussions within this forum as much as possible?

My humble appologies to everyone who has German as their native language - English is my native language and well, the only other languages I can speak well are C, C++, Visual Basic, Pascal, Perl, HTML and a few others! :D

Please feel free to offer suggestions/help or ask questions at anytime...

Looking forward to contributing!

Cheers,
Rodney

http://www.nightlase.com.au/lasermame

Benutzeravatar
tschosef
Beiträge: 7955
Registriert: Mi 19 Nov, 2003 10:27 am
Do you already have Laser-Equipment?: 7 Projektoren, Tarm Two und DS 2000
7 x ShowNET in einem Gehäuse incl Switch
zwei alte Eigenbaukisten liegen noch im Keller rum.
Wohnort: Steinberg
Kontaktdaten:

Beitrag von tschosef » Di 10 Jan, 2006 2:45 pm

hello


...., Visual Basic,.....
i could send you Software Code for mld-cals im using. (visual basic)


greetings
Erich
Schreibe nie etwas, was Du deinem Gegenüber nicht auch vor anderen Leuten ins Gesicht sagen würdest

Bin der Programmierer von Showeditor und HE-Laserscan
www.HE-Laserscan.de

Lasersoftware + Laserhardware

schobi
Beiträge: 272
Registriert: Mo 26 Sep, 2005 9:28 am
Wohnort: Regensburg
Kontaktdaten:

Beitrag von schobi » Di 10 Jan, 2006 3:20 pm

I'm currently working on a MLD driver DLL (MLD is the same as DLL, it's just renamed). The function calls to open the device, send a frame and close the device are quite simple. I had a lot of problems because I exported my function as __cdecl instead of __stdcall, so the stack got overwritten. Well, my first experiments with Windows DLLs...
If you know how to use DLLs it will be a easy job for you.
If you experience any problems, don't hesitate to ask us.

Regards, Tobias

Benutzeravatar
lasermame
Beiträge: 11
Registriert: Sa 30 Jul, 2005 3:24 pm
Wohnort: Australia
Kontaktdaten:

Beitrag von lasermame » Mi 11 Jan, 2006 2:32 pm

Hi everyone,

does anyone by chance happen to have access to a Pangolin QM2000 card?

I am re-coding how I have done the QM2000 hack in Laser-MAME (firstly, so that I can then do the EasyLase USB hack shortly) and need to have it tested... can anyone please help test it out now?

Thanks in advance,

Cheers,
Rodney

Benutzeravatar
lasermame
Beiträge: 11
Registriert: Sa 30 Jul, 2005 3:24 pm
Wohnort: Australia
Kontaktdaten:

Laser-MAME Update - ready for testing

Beitrag von lasermame » Sa 14 Jan, 2006 3:14 pm

Hi everyone,

ok, as I mentioned in my previous post, I was re-coding the Laser-MAME patches in the MAME source code tree to make it better and more efficient.

I have done that to support the previous version 0.05 of the patch which has QM2000 support only. Also, I have excluded a great deal of code out of MAME to have the compiled executable footprint come down to around 5.5MB (was 19.6MB) in size so far...I think I can still shrink it down a bit more though!

I am updating the website in the next day, but if you would like a copy of the compiled executable (which will appear on the website for download), please email me and I'll send it to you zipped (~1.5MB).

I have started on the EasyLasUSB coding now and so far looking fairly straight-forward to do ... please be patient, hope to get back to you with a trial-version in the next day or so...

Thanks everyone,
Cheers,
Rodney

http://www.nightlase.com.au/lasermame

Benutzeravatar
lasermame
Beiträge: 11
Registriert: Sa 30 Jul, 2005 3:24 pm
Wohnort: Australia
Kontaktdaten:

Beitrag von lasermame » Sa 14 Jan, 2006 3:23 pm

Hi Tobias,
Schobi hat geschrieben:I'm currently working on a MLD driver DLL (MLD is the same as DLL, it's just renamed). The function calls to open the device, send a frame and close the device are quite simple. I had a lot of problems because I exported my function as __cdecl instead of __stdcall, so the stack got overwritten. Well, my first experiments with Windows DLLs...
If you know how to use DLLs it will be a easy job for you.
If you experience any problems, don't hesitate to ask us.

Regards, Tobias
Yes, I know DLLs quite well - I might be able to help you know more, if you like - please just ask... :-)

I'm looking at some code now, will let you know how I go...

Cheers,
Rodney

Benutzeravatar
lasermame
Beiträge: 11
Registriert: Sa 30 Jul, 2005 3:24 pm
Wohnort: Australia
Kontaktdaten:

Laser-MAME EasyLasUSB Ready for testing!

Beitrag von lasermame » Mo 16 Jan, 2006 12:17 pm

Hi everyone,

I have finished a quick hack to get support for EasyLasUSB in Laser-MAME and it is ready to be tested!

If you would like to test it, please email me so I can send you a ZIP file with the executable - the source code and executable will be available for download from the website later on this week, but I can email it out to you in the meantime....

Cheers,
Rodney

http://www.nightlase.com.au/lasermame

schobi
Beiträge: 272
Registriert: Mo 26 Sep, 2005 9:28 am
Wohnort: Regensburg
Kontaktdaten:

Beitrag von schobi » Mo 16 Jan, 2006 10:29 pm

Hello,

I'm a little bit confused if we're talking about native Easylase support or MLD architecture (which supports Easylase and many more).
Below you will find a code example which I used to check my own ML-driver. It opens the driver, draws a square with 4 points at 1000pps, and closes the driver. There's no error handling included.
I hope the code is understandable.
I attached my ML driver for testing. It will work even if there's no output device connected.

Bye, Tobias

Code: Alles auswählen

#pragma pack(1) // this is necessary to avoid integer alignment of the structure elements
typedef struct
{
unsigned short x, y, z;
unsigned char r, g, b;
unsigned char reserved1, reserved2, reserved3;
unsigned char intensity, reserved4, repeatpoint;
} tMLPoint;

typedef struct
{
unsigned char Size;
int PointRate;
boolean invert;
} tMLParam;
#pragma pack()

typedef unsigned short __stdcall (*tMLRegisterDriver)(char *Name);
typedef bool __stdcall (*tMLDevicePresent)(void);
typedef unsigned short __stdcall (*tMLKind)(void);
typedef bool __stdcall (*tMLGetName)(char *Name);
typedef bool __stdcall (*tMLInitDevice)(unsigned short Handle);
typedef bool __stdcall (*tMLInitShow)(unsigned short Handle, unsigned short c);
typedef bool __stdcall (*tMLDraw)(unsigned short Handle, unsigned short c, char *pPoints, int NumOfPoints);
typedef bool __stdcall (*tMLHaltShow)(unsigned short Handle, unsigned short c);
typedef bool __stdcall (*tMLHalt)(void);
typedef bool __stdcall (*tMLParams)(unsigned short Handle, unsigned short c, unsigned char *pParams);

void main(void)
{
tMLRegisterDriver fMLRegisterDriver;
tMLDevicePresent fMLDevicePresent;
tMLKind fMLKind;
tMLGetName fMLGetName;
tMLInitDevice fMLInitDevice;
tMLInitShow fMLInitShow;
tMLDraw fMLDraw;
tMLHaltShow fMLHaltShow;
tMLHalt fMLHalt;
tMLParams fMLParams;

HINSTANCE Handle;
char buffer[21];
unsigned short kind, h;
boolean result;
tMLParam Param;
tMLPoint Points[4];

Handle = LoadLibrary("lumax.mld");
Param.Size = 7;
Param.PointRate = 1000;
Param.invert = 0;
Points[0].x = 0;    Points[0].y = 0;    Points[0].r = 255; Points[0].g = 255; Points[0].b = 255;
Points[1].x = 4095; Points[1].y = 0;    Points[1].r = 255; Points[1].g = 255; Points[1].b = 255;
Points[2].x = 4095; Points[2].y = 4095; Points[2].r = 255; Points[2].g = 255; Points[2].b = 255;
Points[3].x = 0;    Points[3].y = 4095; Points[3].r = 255; Points[3].g = 255; Points[3].b = 255;

fMLRegisterDriver = (tMLRegisterDriver)GetProcAddress(Handle, "MLRegisterDriver");
fMLDevicePresent = (tMLDevicePresent)GetProcAddress(Handle, "MLDevicePresent");
fMLKind = (tMLKind)GetProcAddress(Handle, "MLKind");
fMLGetName = (tMLGetName)GetProcAddress(Handle, "MLGetName");
fMLInitDevice = (tMLInitDevice)GetProcAddress(Handle, "MLInitDevice");
fMLInitShow = (tMLInitShow)GetProcAddress(Handle, "MLInitShow");
fMLDraw = (tMLDraw)GetProcAddress(Handle, "MLDraw");
fMLHaltShow = (tMLHaltShow)GetProcAddress(Handle, "MLHaltShow");
fMLHalt = (tMLHalt)GetProcAddress(Handle, "MLHalt");
fMLParams = (tMLParams)GetProcAddress(Handle, "MLParams");

result = fMLDevicePresent(); // function should return true if device is present
result = fMLGetName(buffer); // function should return name of the driver in buffer
kind = fMLKind(); // function should return 1 for frame oriented devices
h = fMLRegisterDriver(buffer); // function should return device handle and the string "MLDevice" in buffer
result = fMLInitDevice(h);
result = fMLInitShow(h, 0);
result = fMLParams(h, 0, (char*)&Param);
result = fMLDraw(h, 0, (char*)Points, 4);
result = fMLHaltShow(h, 0);
result = fMLHalt();

FreeLibrary(Handle);
}

Benutzeravatar
lasermame
Beiträge: 11
Registriert: Sa 30 Jul, 2005 3:24 pm
Wohnort: Australia
Kontaktdaten:

Beitrag von lasermame » Di 17 Jan, 2006 12:22 am

Hi Tobias,
Schobi hat geschrieben:Hello,

I'm a little bit confused if we're talking about native Easylase support or MLD architecture (which supports Easylase and many more).
Below you will find a code example which I used to check my own ML-driver. It opens the driver, draws a square with 4 points at 1000pps, and closes the driver. There's no error handling included.
I hope the code is understandable.
I attached my ML driver for testing. It will work even if there's no output device connected.

Bye, Tobias
I have so-far coded the native EasyLaseUSB driver and in the process of testing that now.

Today I will be adding support for the MediaLas driver.

Thanks very much for your code sample, it has helped me heaps!

Will get back to you shortly,
Cheers,
Rodney

http://www.nightlase.com.au/lasermame

Antworten

Zurück zu „Software & Programmierung“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste