Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

DLL Talk / The Matrix1Utils plugins collection

Author
Message
IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 20th Apr 2008 23:50
Ok, here's the release I said I'd try to get out today.

Release 20080420

Matrix1Util_08 1.1.0.1
- Implemented multiple RNG's of various types using ID's.

Matrix1Util_09 1.1.0.2
- Added functions to get the current cursor (print) position.
- Added functions to get the current foreground and background colors.
- Added alternate INK command that only sets the foreground color.

Matrix1Util_13 1.1.0.4
- Fixed the broken GET WINDOW CLIENT HEIGHT functions - were always returning zero.

Matrix1Util_21 1.1.0.3
- Added functions to retrieve zone coordinates.
- Renamed ZONE2D & ZONE3D functions to POINT IN ZONE.

Matrix1Util_22 1.1.0.4
- Treat null strings as if they are empty strings when writing them to file.
- Small tweak to reading of float values from file.

Matrix1Util_29 1.1.0.2
- Complete rewrite of the sorting mechanism.
-- Allow a format to be defined for UDT arrays.
-- Added sort commands for UDT arrays, allow fields to be selected.
-- Added 2 alternate sorting methods (now Intro sort, Stable merge sort and Heap sort).
- All range sorts renamed to include RANGE in the name.
- Added checks to all commands for undefined arrays.
- Use alternate method for determining number & size of dimensions to avoid an obscure edge condition with the existing code.

Attachments

Login to view attachments
IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 20th Apr 2008 23:53
Apart from arrays and RNG's (Random Number Generators), all the changes here are pretty self-explanatory.

Here's a piece of code that demonstrates sorting - for best results, set as windowed, 640x640 (yes, you'll be looking through square window!):


Grandma
17
Years of Service
User Offline
Joined: 26th Dec 2005
Location: Norway, Guiding the New World Order
Posted: 21st Apr 2008 00:37
Suddenly, my source became 103 lines shorter.

Thanks.

This message was brought to you by Grandma industries.

Making yesterdays games, today!
IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 21st Apr 2008 01:52
Sounds like someone is taking advantage of the new sorting stuff

Mistrel
Retired Moderator
18
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 21st Apr 2008 03:38 Edited at: 21st Apr 2008 03:39
What about Peek/PokeQ?

http://3dfolio.com
IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 21st Apr 2008 04:02
Sorry, I forgot all about that one - it's a bug with the resource string.

Peeking a double integer attempts to return a double float, and vice versa. Poking is similarly messed up.

If I get chance tomorrow, I'll do a quick update.

Roxas
18
Years of Service
User Offline
Joined: 11th Nov 2005
Location: http://forum.thegamecreators.com
Posted: 21st Apr 2008 04:11
Awesome ianm!!!!!! Also i like the random commands. Maybe it solves the bug i have with dbpro.. Randoms always gives the same number (rarely other one) even i do randomization!

Your signature has been erased by a mod because it was too big
IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 21st Apr 2008 04:18 Edited at: 21st Apr 2008 04:27
One thing I didn't put in the help for the random number generators is that related ones will give you identical numbers until you seed them with different values, i.e. if you create 2 MT1 generators with identical parameters, they will give you identical results.

The best idea for getting more random sets of numbers is to seed one random number generator with the timer, then seed any others you create using numbers from that first one.

[EDIT]
Perhaps you are making the classic mistake of reseeding the DBPro random number generator from the timer all of the time - reseeding reduces randomness, so should only be done once, unless you wish to repeat a sequence of random numbers

Mistrel
Retired Moderator
18
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 21st Apr 2008 06:51 Edited at: 21st Apr 2008 07:29
I would still like to see a function to load a DBO object from a memory address instead of a memory bank. I don't use banks for anything but this function.

Also, the documentation for DLL 20 "CALL FUNCTION PTR" refers to the function that returns a value incorrectly as "CALL FUNCTION POINTER".

http://3dfolio.com
Roxas
18
Years of Service
User Offline
Joined: 11th Nov 2005
Location: http://forum.thegamecreators.com
Posted: 21st Apr 2008 15:25 Edited at: 21st Apr 2008 15:44
Quote: "Perhaps you are making the classic mistake of reseeding the DBPro random number generator from the timer all of the time - reseeding reduces randomness, so should only be done once, unless you wish to repeat a sequence of random numbers"

No i only seed once!

Also the sorting works awesome now! Thank you IanM very much! Your plugins are big help

Your signature has been erased by a mod because it was too big
IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 21st Apr 2008 18:36
In that case, I'd like to see an example of those random numbers posted in the bug forum if you have the time.

@Mistrel,
I will add the new command, but that plug-in will still have to load the banks plug-in - the functionality in that plug-in is tied too tightly into banks to avoid it.

Roxas
18
Years of Service
User Offline
Joined: 11th Nov 2005
Location: http://forum.thegamecreators.com
Posted: 21st Apr 2008 20:29
Quote: "In that case, I'd like to see an example of those random numbers posted in the bug forum if you have the time."

Actually i fixed it I just moved the Randomize Timer() to diffrent place of the code.. It was in top of my code and it dint work.. I guess some intilization or plugin intilization commands are messing it up so it must be called after those.

Your signature has been erased by a mod because it was too big
Mistrel
Retired Moderator
18
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 21st Apr 2008 21:44 Edited at: 21st Apr 2008 21:44
That's fine compromise, IanM. It will still simplify my code a lot to call only one function.

http://3dfolio.com
Mistrel
Retired Moderator
18
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 24th Apr 2008 03:16 Edited at: 24th Apr 2008 03:16
Will this object loading code be able to read an sObject structure or can it only load a .dbo file that's been read into memory? Aren't .dbo files just sObject structures dumped to disk?

http://3dfolio.com
IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 24th Apr 2008 15:17
The simple answer is 'no'.

sObject and it's connected structures (sFrame and sMesh) are all accessed via pointers, which don't work well with file storage (the pointers refer to memory allocated initially, and that may be in use when you reload).

DBO's are basically the same data with a 'flattening out' of the tree-like structures formed by the pointers - when loading, all the memory is newly allocated at runtime and the pointers are all generated on the fly and then repopulated from the data.

So, DBO's are a full and correct representation of sObject structures, but they aren't sObjects.

Mistrel
Retired Moderator
18
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 25th Apr 2008 03:30 Edited at: 25th Apr 2008 03:33
May I suggest adding a command to Matrix1Utils to save an object by ID to memory? That would complement loading an object quite nicely.

Something cleaner and faster than saving an object as .dbo to disk and then reading it back as memory would be nice.

Or even better: loading an object from memory that is in an sObject structure. That would be ideal because I could store the object data using GetObjectA() in whatever format I like.

http://3dfolio.com
Diggsey
17
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 25th Apr 2008 21:13 Edited at: 25th Apr 2008 21:14
@Mistrel
That wouldn't work, the sObject structure does not contain any mesh or limb data! It contains pointers to areas in memory where this data is stored.

IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 1st May 2008 22:13
Here's a small fix release:

Matrix1Util_04 1.1.0.2
- Corrected resource strings for peek/poke of double integers & double floats.

Matrix1Util_12 1.1.0.4
- Added GET LIMB MESH TYPE function.
- Added CONVERT LIMB TO TRILIST command.
- Set default of GET LIMB BY NAME to case-insensitive search, use flag version to set case-sensitive

Matrix1Util_18 1.1.0.2
- Added MAKE OBJECT FROM POINTER command.
- Added MAKE OBJECT variations to the existing command.
- Added CHANGE MESH variation to the existing command.

Matrix1Util_29 1.0.0.3
- General code tidy
- Added ROTATE ARRAY and ROTATE ARRAYPTR commands.

Help files
- All files generated for help now use / instead of \ as the directory separator
- Minor changes to help commands and descriptions

Attachments

Login to view attachments
Mistrel
Retired Moderator
18
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 2nd May 2008 05:18
Thank you for another great update.

http://3dfolio.com
Indie Rock 13
19
Years of Service
User Offline
Joined: 1st Sep 2004
Location:
Posted: 11th May 2008 22:52
Hey IanM, thanks for your help on my C++ related posts. I am trying to learn C++ so I can use DarkGDK rather than DBPro, but there are so many plugins for DBPro that aren't "ported" to DarkGDK, including this wonderful pack, so I'm not sure if that is the best thing for me to do right now.

Are these plugins written in C++, and if so do you think it'd be easy to get them to work with C++/DarkGDK? Have you ever had any plans to do so?

PC Specs: eVGA 780i Mobo, Intel C2D E8400 OC'ed @ 4.0Ghz, Tuniq Tower 120 heatsink, 2GB Kensington 1066Mhz DDR2 RAM, 2 x eVGA 8800 GT KO Edition 512MB in SLi
IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 11th May 2008 23:31
I've no concrete plans beyond 'that might be a good idea if I can get around to it'.

I've no real problem with putting together a targeted set of functions into a library for the GDK (i.e. if someone asks for a specific command I've already written), but I'm not planning to sit down right now and port all 652 commands to the GDK (just added 3 more since the last release). Firstly because a lot of them simply aren't required in C++, and secondly because I just haven't got that much patience.

So, if you have a specific set of commands, and there aren't too many of them at a time, I can certainly put something together, on the understanding that I work to my own timescales.

I've also got nebulous plans and the OK to resurrect my DBPro Interface library at some point (a library for interfacing with DBPro commands and internal functionality, which I still use for my own plug-ins), so it may be that you can learn C++ while still continuing to use DBPro, taking advantage of my plug-ins while writing your own.

Indie Rock 13
19
Years of Service
User Offline
Joined: 1st Sep 2004
Location:
Posted: 12th May 2008 00:13
Yeah that makes sense. I was just wondering because I'm still up in the air as to whether I should really be putting much time and energy into this or that language. Sometimes it seems like I could do more with DBPro without getting frustrated and giving up, but I don't like the thought of what I make running slower than it could if I just made it in DGDK.

I would feel kind of bad asking for a specific request from you, but since you did offer I may at some point. I won't ever be like the people who ask you to do things and then hassle you about how long it's taking! I'm trying to be as little of a bother and annoyance as possible to all of the busy guru's on these forums while trying to actually learn based on tutorials and books.

PC Specs: eVGA 780i Mobo, Intel C2D E8400 OC'ed @ 4.0Ghz, Tuniq Tower 120 heatsink, 2GB Kensington 1066Mhz DDR2 RAM, 2 x eVGA 8800 GT KO Edition 512MB in SLi
Mistrel
Retired Moderator
18
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 13th May 2008 13:30 Edited at: 13th May 2008 13:32
If you want to use a better language that's easier to learn than C++ have a look at PureBasic. I've created a product called PureGDK which allows PureGDK to compile with the DarkBasic Professional engine. It also supports DBP plugins through a special framework library.

Have a look:
http://puregdk.com
http://www.purebasic.fr/english/viewtopic.php?t=31201

While I'm on the topic, IanM, I would really love to see your Matrix1Utils as a developer supported library for PureGDK. Creating the wrapper library is a very simple and well documented process. You can even do it with the PureBasic demo.

PureGDK comes with support for several plugins already. I would have wrapped your plugins myself but they're always being updated.

http://3dfolio.com
IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 13th May 2008 15:10
Can't blame me for that - you're always suggesting additions yourself

Send me all of the details I need to do it and I'll be happy to build the new interfaces every time I create a new release.

Indie Rock 13
19
Years of Service
User Offline
Joined: 1st Sep 2004
Location:
Posted: 13th May 2008 17:36
Hey Mistrel, I don't want to take the conversation away from the topic too much, but I had read a bit about PureGDK in the past few days. The only reason I am using DGDK instead of DBPro is because I would like to take advantage of the extra speed it provides. How would PureGDK compare to DBPro and DGDK in speed?

Also, you say that some plugins are already compatible, but I wouldn't want to use something if it didn't have support for Dark Physics, Dark AI, EZRotate, and Enhanced Animations. Too much money spent there...

That is cool that IanM is willing to support it with his plugins though.

eVGA 780i Mobo :: Intel C2D E8400 OC'ed @ 4.0Ghz :: Tuniq Tower 120 heatsink :: 2GB Kensington 1066Mhz DDR2 RAM :: 2 x eVGA 8800 GT KO 512MB SLi :: m-Audio Audiophile 192 :: Vista Ultimate x86
Mistrel
Retired Moderator
18
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 13th May 2008 20:43 Edited at: 13th May 2008 21:16
Indie, the list of plugins supported by PureGDK natively is:

Quote: "Licensed Plugins:

2D Plugin Kit 1.1
3D Cloth & Particles Physics 6.2
Advanced Terrain
Dark Physics Beta 14-12-07
Dark AI 1.05
Dark Lights 1.02
Enhanced Animations 19-11-07
eXtends 1.4
EZ Rotate Enhanced 19-11-07
STYX 2.0
TextureMax 17-05-07
Unity 3.0

Free Plugins:

D3DFunc 3.6.6
DarkSide Starburst
DBP Collisions 2.04
DKAVM 12-07-06
DKSHOP 12-07-06
EZ Rotate Basic
Multisync 1.4.1
zParticles 1.11"


Newton is ready and will included be in the next release.

To quote myself from the PureGDK website:

Quote: "Is PureGDK slower than a native DarkBasic Professional executable?
A PureGDK executable will run as fast or faster than a native DarkBasic Professional executable. This is because the machine code produced by PureBasic is designed for maximum speed and compactness. The execution speed of code produced by PureBasic can match almost any professional compiler like Visual C++."


If you can compile some of the DarkGDK examples with an fps counter I'll compile some of the PureGDK examples with one as well. Then we can compare.

One great feature of PureGDK is that there are no Vector or Matrix IDs! These have been replaced internally by PureGDK so that all of the DBP functions that would require an index can now pass structure pointers.

For example (from the PureGDK documentation):

Quote: "Data structures to replace vector and matrix IDs

PureGDK uses structures to instead of IDs to pass vector and matrix data between functions. To pass a vector to a function it must first be dereferenced to a pointer by using the " @ " operator. The following example will create two variables with vector 2 structures and then add them together.

Vector2a.v2x=3: Vector2b.v2x=7
Vector2a.v2y=5: Vector2b.v2y=5

dbAddVector2(@Vector2Result.v2, @Vector2a.v2, @Vector2b.v2)

Debug Vector2Result.v2x ; 3 + 7 = 10
Debug Vector2Result.v2y ; 5 + 5 = 10"


IanM, the documentation for how to compile a wrapper library is in the PureGDK help file. Download and install the demo from PureGDK.com, you'll need the framework library it includes to compile anyways. You'll also need the PureBasic demo http://purebasic.com and the TailBite library http://tailbite.com. If the PureBasic IDE is open after installing PureGDK or TailBite it will need to be restarted.

You don't need to know how to program in PureBasic! 'GDKLib Builder.exe' creates all of the source code for you. Wrapping a library by hand would be a laborious and an error-prone task anyways. Dark Physics for example builds to over 7,000 lines.

You can get to the PureGDK help file from the PureBasic IDE from Help -> External Help -> PureGDK.chm or by going to your PureBasicHelp directory.

The following libraries from Matrix1Utils are obsolete and don't need to be converted for PureGDK:

Matrix1Util_01 - the whole library
Matrix1Util_03 - the whole library
Matrix1Util_04 - the whole library
Matrix1Util_06 - the whole library
Matrix1Util_07 - (may be obsolete)
Matrix1Util_11 - the whole library
Matrix1Util_13 - the whole library except:
DISPLAY HEIGHT
DISPLAY WIDTH
GET WINDOW CLIENT HEIGHT
GET WINDOW CLIENT WIDTH
GET WINDOW HEIGHT
GET WINDOW WIDTH
Matrix1Util_14 - only WINDOWS USERNAME$
Matrix1Util_16 - the whole library
Matrix1Util_20 - the whole library
Matrix1Util_22 - the whole library
Matrix1Util_29 - the whole library

Please contact me if you have any questions.

http://3dfolio.com
Diggsey
17
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 19th May 2008 22:30
@IanM
I have a new command request for your memory plugin

Could you add a command to check if two chunks of memory are identical?
It is for the rewrite of my DBP OOP compiler to compare structures, and although I can append a function to the users code to do it, the smaller the extra code added, the better

IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 19th May 2008 23:19
A simple memory comparison? Yes I can do that.

Diggsey
17
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Coin
18
Years of Service
User Offline
Joined: 15th Mar 2005
Location: Bexley, UK
Posted: 20th May 2008 17:16
I am a former Amos Basic programmer from the Amiga computer (what an admission!) and sometimes miss the 2D graphics PAINT command. This would flood fill the area bounded by pixels of a given colour with pixels of the same or any other given colour irrespective of what was present before. You had to ensure, of course, that the pixels bounding the area to be flood filled contained no gaps or else the fill would "leak" out to other areas.

A variation on this theme that would also be useful is a fill, or replacement if you like, of connected pixels of one colour with those of another colour - a feature similar to that available in paint programmes. An example of the command could be:

FILL(x,y,RGB(255,255,255),RGB(0,0,255),mode)

in which x and y are the coordinates of any point within the area to be flood filled; the first RGB statement determines the fill colour; the second RGB statement determines either the colour of the bounding pixels, or the colour of the connected pixels to be replaced depending upon whether mode is set to value 0 or 1.

I know that flood fills have been discussed on other boards and solutions have been put forward - but these rely upon the area to be filled being a single colour.

Another command I miss a lot is the one to draw a hollow box. This is extremely easy to work around, of course, but the fill command requires an expert.
IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 20th May 2008 21:29
That's doable - there are a couple of issues I'd need to think through in order to play nicely with the DBPro runtime and the coder, but I should be able to come up with something.

best_game
16
Years of Service
User Offline
Joined: 2nd May 2007
Location:
Posted: 26th May 2008 18:05
please add Limb commands:

LIMB SCREEN
PICK LIMB


BEST GAME BY OMID
Pixel Paint
16
Years of Service
User Offline
Joined: 15th Sep 2007
Location:
Posted: 1st Jun 2008 20:01
Would anyone be able to make a plugin that says what the current DirectX version is? (like DX 9(Sept 2007), ect...)
IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 1st Jun 2008 20:42
IMO, there's not really much point.

The current version of DBPro requires a certain specific minimum version - if you try to run your program on a machine that doesn't have it installed, the program will tell you and fail to run. If it does run then you have the version you need.

So, apart from the 'does it run or not' question that's already answered by the DBPro runtime, what more do you really need to know?

IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 1st Jun 2008 21:21
Here's yet another update, taking the set to 30 plug-ins at just under 1MB for download. However, even with the inclusion of a new plug-in this is a fairly minor release.

This release contains:
Matrix1Util_02 - 1.1.0.3
- Changed all 'Alarm' error messages to read 'Ticker' instead.

Matrix1Util_04 - 1.1.0.3
- Added COMPARE MEMORY function.

Matrix1Util_07 - 1.1.0.1
- Added new curve generation
-- currently only supports Bevier curves, but will be expanded in the future.

Matrix1Util_13 - 1.1.0.5
- Fixed release of a DX interface

Matrix1Util_14 - 1.0.0.2
- Added functions to get windows platform and version information.
- Added function to get number of processors.

Matrix1Util_30 - 1.0.0.1
- New plug-in
-- Fills, filled circle, filled ellipse, outline box - all accelerated.
-- Save frontbuffer and current bitmap to file.

The last change to saving the frontbuffer is a little experimental
- I had to solve some issues when saving to formats that support alpha levels.
- As it saves what you actually see, it *WILL* save the contents of overlapping windows too!

Attachments

Login to view attachments
Mistrel
Retired Moderator
18
Years of Service
User Offline
Joined: 9th Nov 2005
Location:
Posted: 1st Jun 2008 22:38
I hope that you will consider releasing a compatible wrapper library for PureGDK now that it's available in TGC store.

Thank you for another great update.

http://3dfolio.com
Diggsey
17
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 2nd Jun 2008 00:35
Thanks
One thing I noticed in the help, HASH BANK TIGER says 'This function will provide an WHIRLPOOL checksum of the bank specified in hex-string format.'

Pixel Paint
16
Years of Service
User Offline
Joined: 15th Sep 2007
Location:
Posted: 3rd Jun 2008 03:30
@IanM
Quote: "if you try to run your program on a machine that doesn't have it installed, the program will tell you and fail to run. If it does run then you have the version you need."


Ugh... I didn't even think about that. Then instead, is there a way to disable the message? It's really annoying how in non-3D programs that don't need DirectX still get the error message. If there was a way to disable it(like for installer programs made with DBPro), you could at least detect that it needs to be installed before the program comes to any major graphics effects.
IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 3rd Jun 2008 15:40
There's no such thing as a DBPro program that doesn't use DirectX, so there's nothing I can do there.

It's possible to have a small program written in another language to do that and that would run your DBPro program after - I could do that if it's required, and maybe include a few other bits and pieces too.

Coin
18
Years of Service
User Offline
Joined: 15th Mar 2005
Location: Bexley, UK
Posted: 3rd Jun 2008 16:34
Thanks very much for the update - especially the new no. 30 which contains the command for which I asked. However, I seem to have a problem with it; each time I try to compile and run a programme that contains one of its commands I get a "Failed to load DLL (2: Matrix1Util_30.dll)" error message immediately after it has been compiled. This happens despite the fact that Matrix1Util_30.dll does appear in my plugins-user folder along with all the others. (The keywords file is also in the right folder). Since I am the only one to raise this problem so far the fault must lie with me but I cannot see where I've gone wrong.

Since you have created a dedicated 2D plugin is it possible to fix the Line command to draw lines more than one pixel wide?
Pixel Paint
16
Years of Service
User Offline
Joined: 15th Sep 2007
Location:
Posted: 3rd Jun 2008 17:36 Edited at: 3rd Jun 2008 17:44
Quote: "It's possible to have a small program written in another language to do that and that would run your DBPro program after - I could do that if it's required, and maybe include a few other bits and pieces too."


The only non-DOS based language I know (other then web languages) is DBPro.

Edit: Wait, I know QuickBasic, and if that could somehow detect a missing DirectX DLL, then that might work...

But it couldn't detect the minimum version that DBPro needs. Unless there is some way to check the version of the DirectX 9 DLLs, that won't work either.
IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 3rd Jun 2008 19:37
There are two ways to know which version of DX you have installed.

The most obvious is to check for the d3dx9_31.dll in the system32 folder - that will only work if the user running your program has the authority to access that folder.

The second method is that the DX install creates a registry entry containing the currently installed version that anyone can read.

@Coin,
That's an error I'm not getting and haven't seen. That error implies that the DLL isn't initialising correctly, and as the initialisation code does nothing, I can't understand what's happening.

Is anyone else having the same problem?


Quote: "is it possible to fix the Line command to draw lines more than one pixel wide?"

I'll add it to the list and try to fit it into the next release.

Pixel Paint
16
Years of Service
User Offline
Joined: 15th Sep 2007
Location:
Posted: 4th Jun 2008 19:16
OK, so if d3dx9_31.dll isn't there, THATs what makes the error message? Then yes, I will be able to use QBasic. Thanks.
Ed222
16
Years of Service
User Offline
Joined: 3rd Nov 2007
Location: Calgary
Posted: 12th Jun 2008 00:58 Edited at: 12th Jun 2008 00:58
I found a bug disable special keys causes the exe to crash when you exit it with esc or if you use the end command

Attachments

Login to view attachments
IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 12th Jun 2008 15:04
Thanks for reporting it - I'll check it out.

Ed222
16
Years of Service
User Offline
Joined: 3rd Nov 2007
Location: Calgary
Posted: 14th Jun 2008 06:20
I've checked out your set shortcut command today and I've read the help file on that and set shortcut args$ but I still don't understand what arguments are would you please explain?

IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 14th Jun 2008 12:40
In DBPro terms, the arguments are passed to your program and presented to you via the CL$() function. Basically, you use it to pass filenames and configuration options to the program you are starting. If you can understand the DBPro EXECUTE FILE command, you'll understand the shortcut commands.

Diggsey
17
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 22nd Jun 2008 12:22 Edited at: 22nd Jun 2008 12:24
I found a way to get a function pointer using a string containing the function name!
The new DBP compiler writes a .dbm file which contains function names and their line numbers. The function 'GetNumDependencies' is called at compile time of all plugins, and when this happens, the plugin could execute a separate application which waits until the compiler is done, opens the .dbm file which is always in the dbp TEMP directory, and can make a list of the function names ordered by line number, with the index next to each function name, and write it to a .txt file (and if it can, embed this text file into the .exe along with the dlls). When the plugin constructor is called, the plugin can open the text file, and read its contents into a map, with the function name as the key, and the function index as value.
The information about which project is being compiled can all be got by reading the command line and file name of the DBP Compiler while it is running.

It's complicated, but it does not require the user to run a precompiler, and is independant of the IDE.

IanM
Retired Moderator
21
Years of Service
User Offline
Joined: 11th Sep 2002
Location: In my moon base
Posted: 22nd Jun 2008 13:34
That's a hell of a workaround, just because none of the replacement editors are following the rules and are ignoring the Launch.cfg.

However, it raises some interesting possibilities beyond the things you're looking for - I'll take a look into it and see what can be done.

There are going to be some difficulties with compressed exe's and pak files too, so even if I do something with this, it probably won't support output format.

Ed222
16
Years of Service
User Offline
Joined: 3rd Nov 2007
Location: Calgary
Posted: 22nd Jun 2008 20:29 Edited at: 22nd Jun 2008 20:31
I just found another bug reset ticker() command doesn't exist it's actually ticker reset() and the help files get a error when you use f1 on that saying it's not found I fixed it and I can upload the fixes but first I want to get permission from you can I upload the help file fix?

Login to post a reply

Server time is: 2023-12-03 10:35:41
Your offset time is: 2023-12-03 10:35:41