1. COM ON!!! ... OLE!!! AYE CARRAMBA!!

Agh...

You saw the 3DEL, (3D Engines List) and think 'Hey!
That's cool! Lemme download one!'...
But then you figure 'Oh crap! I can't use these with
Euphoria, for they are C libraries!!'...

[Intermezzo; What do you nottice? That Euphoria should
be able to link to C libraries, like I showed you with
the translator and MTSECW.]

So you figure; "No biggy! Let's download a 3D Engine
for Euphoria from the Archive!"...
What??
No engines??
Why is that??

[Intermezzo; The reason for there being no engines is
because of the fact that Euphoria is too slow to code
one in, and you can't use special toolkits like Direct
X or Glide to boost performance, because Eu don't
support linking to COM and C libraries.]

Ah well, let's forget about this and download Morfit
anyways, as it's the only engine there for Euphoria. I
guess I'll have to put up with the poor performance,
restricting liberty, closed-sourceness, unportability,
unextendibility, and that damned logo that pops up at
startup. Oh, and I can't sell my games eighter...
Yet even if I could, who'd buy a game that was coded
with a toy like Morfit? NO ONE!


Why is MTS jumping onto 3D engines and games again?
Because let's face it, EVERYONE HERE is here for the
sole fact that videogames exist.
Is it the 50 year old ex-BASICA coder that started out
programming trying to create some platform games for
the C64 back in the 80's?
Or that 17 year old nebie that saw Quake III and
thought he could make a better game, he looked up how,
and found out he should learn how to 'Program'...

Games games games, they are the number one
entertainement market out there, beating movies (there
are more people with a Gameboy that people with a
VCR).
You wanna make cash as a coder?
Big cash?
While working at home?
You start coding a game.

Now why is it that Euphoria is so damned bad at game
coding?

No, that's not a question...
It's an awnser, see, this is why;

- No COM support (DX? Nope, sorry...)
- No portability (PSX? PS2? N64? Nope, sorry...)
- No interfacing with C (Glide? Glut? Nope, sorry...)


And... And... (*shakes fist*) ...ah (w)hell, you get
my drift...


Mike The Spike

new topic     » topic index » view message » categorize

2. Re: COM ON!!! ... OLE!!! AYE CARRAMBA!!

I'm afraid I'm going to have to side with Matt on this one.  Euphoria 
isn't made to crank in the $'s with videogames.  You can't make the language 
something it's not.  If you don't like it don't use it.

-Dan

new topic     » goto parent     » topic index » view message » categorize

3. Re: COM ON!!! ... OLE!!! AYE CARRAMBA!!

Go to  http://www.pbq.com.au/home/hutch/masm.htm

download the latest MASM32 there are code docs
to interface to COM thru assembler and if you know assembler
I presume you'll get it going.....


Euman

----- Original Message -----
From: "Matthew Lewis" <matthewwalkerlewis at YAHOO.COM>
To: "EUforum" <EUforum at topica.com>
Sent: Tuesday, March 20, 2001 13:23
Subject: RE: COM ON!!! ... OLE!!! AYE CARRAMBA!!


|
|
|
|
| > -----Original Message-----
| > From: Mike The Spike [mailto:mtsreborn at yahoo.com]
|
| <snip>
|
| > Now what is offset+4?
| > Is it IID_IDirect3DRM->CreateViewport?
| > You should do a lot of work figuring out at wich
| > offset members are, in theory it's all possible, but
| > for practical uses, it's not.
| > Just like it's theoretically possible to travel
| > through time, it don't mean we can go for a trip to
| > the middle ages for 29.95 pluss tax?
|
| I think you're being a bit over dramatic [again].  If you know the layout
of
| the interface, it's easy.  You'd have to know this to use C++ to work with
| COM.  You have to know this in _any_ language to work with COM.  So what's
| the big deal?
|
| I've done some more poking around, and I think it's definitely possible.
| Even if you don't have the docs on the layout of an interface, using
| IDispatch, it should be possible to get the info that's needed.  In fact,
it
| should be able to spit out a bare bones wrapper for a COM object.
|
| As far as I can tell, there's no real need to use an actual pointer table
in
| memory.  We could simply use sequences to keep track of things, the same
way
| we already use them to deal with routine_id's.
|
| I've looked a little harder at asm.e, and it's not quite as hard as I
| thought (I think :).  I need to add support for CALL FAR, but that looks
| pretty straightforward.  I should have Eu working with COM pretty shortly
| given that.
|
| > In conclusion, your compiler should support by-name
| > refferncing of structure/class/interface members for
| > COM to work.
|
| Maybe so, but that just means a little extra work if you want to support
| COM.  Certainly doesn't make anything _impossible_, as you say.  Here's
what
| I envision use of my wrappers might look like:
|
| -- file: com.ew
| global constant
| iid_iunknown = "00000000-0000-0000-C000-000000000046"
| -- end com.ew
|
| constant
| myobj = new_com_object( clsid ),
| myobj_queryinterface = define_com_func( clsid, iid_iunknown,
| "QueryInterface")
|
| object ok
|
| ok = com_func( myobj, myobj_queryinterface, {} )
|
| Basically, I want to make it operate as close to Eu's c_proc/c_func as
| possible, although it will handle string conversions automatically, since
| all COM strings need to be unicode.  Then it makes sense to write wrappers
| for individual COM objects using the COM wrappers.
|
| > Besides, you talk about GUIDs, look up how you have to
| > work with GUIDs, and you'll see that it's by using
| > some COM interfaces. It's the whole chicken-and-egg
| > thing.
|
| Yeah, I have.  But I don't understand what you're talking about.  The
issue
| of GUID's is there no matter what language you use.  It's not _that_
| difficult to use them.  Here's a proc for converting a GUID from a string
to
| a proper GUID structure:
|
| procedure poke_guid( sequence guid, atom ptr )
|     object ok
|
| -- struct GUID
| -- DWORD Data1
| -- WORD Data2
| -- WORD  Data3
| -- BYTE Data4[8]
|
|     ok = value( "#" & guid[1..8] )
|     ok = ok[2]
|     poke4( ptr, ok )
|     ptr += 4
|
|     guid = guid[10..length(guid)]
|
|     for i = 1 to 2 do
|         ok = value( "#" & guid[1..4] )
|         ok = ok[2]
|         poke4(ptr, ok)
|         ptr += 2
|         guid = guid[6..length(guid)]
|     end for
|
|     for i = 1 to 2 do
|         ok = value( "#" & guid[1..2] )
|         ok = ok[2]
|         poke(ptr,ok)
|         ptr += 1
|         guid = guid[3..length(guid)]
|     end for
|
|     guid = guid[2..length(guid)]
|
|     for i = 1 to 6 do
|         ok = value( "#" & guid[1..2] )
|         ok = ok[2]
|         poke(ptr,ok)
|         ptr += 1
|         guid = guid[3..length(guid)]
|     end for
|
| end procedure
|
| There.  That wasn't so hard, was it?
|
| Matt Lewis
|
|
|
|

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu