BlitzMax Forums/BlitzMax NG/

Dabhand(Posted 2015) [#1]
Hiya... Just so you lot know (Brucey does, lol), I've set up a little website to sort of centralize BlitzMax-NG for people who dont want to go digging in the source, rebuilding etc etc

Hopefully, this will encourage more people to use it, a bit less... faffy!

I've put up a couple of binary links, the Windows one Brucey linked to has been updated and uploaded, it contains TDM GCC 64bit5_1_0-2 in the MinGW32 folder, which, is the one that works alongside wxMax.

As I'm playing with BlitzMax-NG, I'll add more to the site, currently just digging through it myself, pretty much a newbie... But, if I can contribute anything, I'll put it on there... If anyone else wants to add anything, let me know and I'll shove it up, doesnt have to be nothing major, just important info you think people should know!



Dabhand(Posted 2015) [#2]
Updated Windows download with the new fix for compiling Android projects


Brucey(Posted 2015) [#3]
Hold up... I'm not sure you can make the assumption that because it works on yours it will works elsewhere too?

The paths on my version of the ndk/sdk have that architecture suffix.

Dabhand(Posted 2015) [#4]

Hold up... I'm not sure you can make the assumption that because it works on yours it will works elsewhere too?

Well, to be honest, I've downloaded the newest SDK/NDK for it, tested it on my PC and laptop and it works a charm.!429&authkey=!ANULVY5b9b_NKRo&v=3&ithint=photo%2cPNG

So... I'm probably only assuming that the end-user of the binary has the newest NDK/SDK... Which isnt a bad thing, is it? :)

EDIT: Though, I think your right... I never realised there was a separate 64bit version of the NDK... Is that the one you have?

Got to go to work now... Bah... But, it looks like that needs a tidy if it is, so, for now, I'll specify the 32bit NDK version on the download page.



Dabhand(Posted 2015) [#5]
Just an idea bonny lad... But if the extra suffixes are due to the difference between 32bit and 64bit NDK installs... Could we have an option in custom.bmk that will pick that up and bmk will be able to check the file paths appropriately?


degac(Posted 2015) [#6]
Nice idea Dabz
Well, the domain name is not so cool and easy to remember! but I like the final goal (I was thinking to register ... but I'm think I'm late now :D)
Much, much better than an anonymus & sad git-hub page.

Derron(Posted 2015) [#7] would be an option too (similar to

@blitzmax logo on the website (regarding potential copyrights/trademarks)

there is an issue open for "bmx-ng" already:

(I had other suggestions too ... mailed that time to Brucey) but this one is open for "enhancement" by the community. So feel free to play around with it. Maybe we get some useful thing out of it.

Regarding "builds" with various MinGW: you should not call them "official" but do it similar to - it is eg. a "dabhand build". So people could use it ... and have some advantages (less setup steps) but there is no guarantee to work flawless.


Dabhand(Posted 2015) [#8]

@blitzmax logo on the website (regarding potential copyrights/trademarks)

That looks lovely that does! :)

I just quickly knocked out that NG bit and tagged it on the official logo, but I will look into yours mind... Me likes! :)

it is eg. a "dabhand build". So people could use it ... and have some advantages (less setup steps) but there is no guarantee to work flawless.

lol... Me being a builder.. Thats pretty ironic! :D


Stu_ovine(Posted 2015) [#9]
Finally got it loaded on a PI, IDE runs but I cant compile anything ?

FASM version GCC Version 4.6, G++ version 4.6 (from about MaxIDE) but when I compile just stays at [ 0%] Compiling ?

Am I missing something ?


Brucey(Posted 2015) [#10]
You could try dropping to the terminal, and going to BlitzMax/bin , then the following commands:
./bcc -v

./bmk -v

what's your Pi/OS version?

Stu_ovine(Posted 2015) [#11]
Thanks for the reply, the problem I was having was on the QEMU version which I think is a bit old (2012)

In the mean time I have it running on a real PI and its compiling fine.

Its just as quick to use the real Pi as the emulator. I'll re-test with the QEMU version when I get chance


Brucey(Posted 2015) [#12]
the problem I was having was on the QEMU version

Ahhh :-)

Derron(Posted 2015) [#13]
Give me a mirror and I could show you one who have had the same problem (Brucey possibly remembers) :-)


Stu_ovine(Posted 2015) [#14]
Loving it, well done on a great job !!!!!!

JaviCervera(Posted 2015) [#15]
Nice! It would be great to see that things are moving again on the Blitz front. A little criticism tho: I think that is a very unfriendly domain name.

Dabhand(Posted 2015) [#16]

I think that is a very unfriendly domain name.

Well, criticism received and understood, but, it is what it is really... bmx-ng is the project name on Github, so, the domain name reflects that!

You could type:-

or google... bmx-ng github

Either or all the ways, you still have to type "bmx-ng" to find it on the interwebs! :P


RustyKristi(Posted 2015) [#17]
I agree with Dabhand and he got it right, is the right fit though a more clearer domain name like or would also be better. :-)

Derron(Posted 2015) [#18]
... this does only work, if you use the name "BlitzMax". "BMX" is some kind of abbreviation and people knowing "BlitzMax", know what is meant - without pronouncing a potential "trademark" (registered or not ...)


Dabhand(Posted 2015) [#19]
Updated the downloads list on the site, which uses the official downloads from git, also updated the android tutorial to suit the newest release (Mostly, the addition of using Apache-Ant)

Cheers for fixing Android building Brucey... Nice one! :)


Brucey(Posted 2015) [#20]
Cheers for fixing Android building

Android 19 is no longer a requirement.
The latest build fixes that by detecting the version you have installed and using that - modifying (Note, you will need to remove the old android-project-xxxxx folder to get the correctly updated templates)
You can override automatic detection by using the custom option "", with an appropriate value. (The value will need to match one of the versions you have installed).

So 4 & 5 in your tutorial are probably not required.

However, if it doesn't work as per my comments above, please let me know, and I'll fix it.
User effort to set things up should really be kept to a minimum.

Brucey(Posted 2015) [#21]
I think that is a very unfriendly domain name.

Everyone always seems to have a fascination about what things are called.

How about, <edit> Hah, seems to be some kind of Japanese skin cream... meh.

I think a name is the least of everyone's worry :-p

markcw(Posted 2015) [#22]
This is cool, thanks Dabz! This will make it really easy for me when I get my android phone.

What would be great is a tutorial on how to build the NG binaries ourselves.

LT(Posted 2015) [#23]
I think a name is the least of everyone's worry
Depends on whether or not you'd like to see wide adoption. Silly marketing trick, I know, but it matters. :p

EDIT: That said, seems appropriate.

Brucey(Posted 2015) [#24]
What would be great is a tutorial on how to build the NG binaries ourselves.

I'm sure you've been building BlitzMax apps for a while now ;-)

Recipe for success

Ingredients :
1 cup of BlitzMax
A table-spoonful of bcc source.
A pinch of bmk source.
2 slices of brl and pub mod sources.

Take your copy of BlitzMax, and compile up bcc and bmk.
Into your newly created bowl of NG, fold in a bin, mod and lib dir.
Pour your brl and pub mods into mod.
Copy your bcc binary into bin.
Copy your bmk binary, core.bmk and make.bmk into bin.
Serve hot :-p

(all sources from )

Dabhand(Posted 2015) [#25]



Derron(Posted 2015) [#26]
You could compile bcc with bcc-ng ("self hosted") too ... so you could grab your "package" of choice from bmx-ng/releases, unzip that and then do the rest as if you use "vanilla bmx".


Dabhand(Posted 2015) [#27]
Yeah, I did that on me phone, updated it a touch with bmx-ng'ing! :)

Just to note, if anyone has anything they want to add to the tutorials section on there, just let me know and I'll bang it on! ;)


markcw(Posted 2015) [#28]
Ok thanks. While I appreciate your sense of humour Brucey, I think this one is a bit clearer (from Bug Reports board)...

AdamStrange: Is there a nice a simple step by step guide for installing NG?

There probably wants to be...

For now, this should get you started :

Create a folder with the following folders :

From , download bcc and bmk into src/, and pub.mod and brl.mod into mod/
Unzip and rename appropriately.

Using your official BlitzMax, build src/bcc and src/bmk. (console, not GUI)
You'll have a nicer experience if you build bmk with threading enabled.

Copy bcc and bmk binaries, along with core.bmk and make.bmk (from src/bmk) into bin/.

Open a terminal into bin/

A quick version will tell you if the binaries are good :
$ ./bcc -v
bcc[ng] Release Version 0.62

$ ./bmk -v
bmk 3.06 mt-macos-x86 / clang 602.0.53 (cpu x4)

And then you can build :
./bmk makemods -a

Now you have a default (as far as modules are concerned), working NG.

Dabhand(Posted 2015) [#29]
Nice one munch... Give me a good auld 1,2,3 guide and I'll throw it up there!


PhotonTom(Posted 2015) [#30]
Having a nosey about the site and I have a few corrections for you to make :)

1. Page title is a bit odd. "BMX-NGAbout | BMX-NG" - should probably just be "About | BMX-NG"
2. Donate button on About page is broken (for me at least)
3. Why is SoCoder a quick link, is it even Bmax related?
4. Probably be better if Log in button is hidden. (Its pointless for it to be first link users see)
5. The community should come up with a cooler looking logo
6. Needs more tutorials ;) (On a more serious note we could really do with updating the documentation of Bmax as a whole

Dabhand(Posted 2015) [#31]
1) Bugger, thats the theme screwing it... Made a note to change it
2) Bugger, sorted(ish), just directed to his website where the proper buttons are.
3) Because it's a place I go, and like, and the nice people over there test stuff like this, so it's only fair really... Oh, and on top of the simple fact that whole site stemmed from a BlitzBasic community that had it's heart ripped out by a not to be named company countless years ago, so yeah... It's on there and staying! ;)
4) Me being lazy, but I've swapped the widgets so the useful ones are higher up!
5) Agreed
6) Yep, defo, would be nice to see a iOS one mind, though, I havent got a Mac, but if there's one there it might be a bit of a puller

Oh, and was just going to say... I've packaged up a linux 32bit version and uploaded, with a list of dependancies it seems to like... I may have the odd one wrong (Like, not needed, but theres no harm)... Planning on a 64bit one next when I get a minute...

Changed a little thing in there, the HTML guff when rebuilding docs... Gtkhtml doesnt like some stuff in the original ones and crashes maxide, ripped 'em out, no biggy, you can still get to the original docs via a link, and it still rebuilds and displays the documentation for the modules etc etc


Dabhand(Posted 2015) [#32]
Just realized, there's quite a collection going off there on the downloads page! :D



Derron(Posted 2015) [#33]
@ 5)
Look up post #7 and #8 in this thread. Discussion about that given logo could be done in the github-issue itself.

Maybe it would be nice to add that BMX-NG is "open source / zlib/libpng-licenced".
It's better if you add such things - may it be for SEO or just for people "stumbling over it".


Devlin(Posted 2015) [#34]
Is there a tutorial to get the Web/js target working? Or it it still "in progress"?

Brucey(Posted 2015) [#35]
The emscripten target is currently broken, relating to issues with the GC on that platform.

Panno(Posted 2015) [#36]
I have a Question about BMX-NG for the RPI.

Is it possible to work with the Gpio pins under Bmx?

Also i have a problem with killing the running prozess from the ide , it isnt working.
And is Sound not supportet? Cant get working it.

All other code works like a Charme and one of my Dreams come to Reality.

Thx Brucey

Derron(Posted 2015) [#37]
"sound not supported"

-> I think if it is not working, it for now is just "broken"

But I cannot remember that Brucey blamed a sound issue but it might be, that he did not include SDLaudio for now, as you do not have the possibility to "mix" things (...dunno, there was something with SDLaudio not being the best solution for us).

@Killing from the IDE
I am pretty sure, Brucey is tackling that problem the next time ;-)


Brucey(Posted 2015) [#38]
And is Sound not supportet? Cant get working it.

Your best option is to use SetAudioDriver("FreeAudio SDL") before you use any sound-related functionality (like loading, etc).
The import is SDL.SDLFreeAudio.

You can of course try pulse or whatever FreeAudio drivers, but the SDL module is known to work here.

therevills(Posted 2016) [#39]
Just downloaded BlitzMax_win32_0. from and tried to compile a super simple piece of code:


Graphics 800,600

While Not AppTerminate()
		DrawText ("TESTING", 10, 10)

But it fails:
Building untitled1
[ 97%] Processing:untitled1.bmx
[ 98%] Compiling:untitled1.bmx.gui.debug.win32.x86.c
[100%] Linking:untitled1.debug.exe
C:/Users/therevills/Downloads/BlitzMax_win32_0.70.3.09/BlitzMax/mod/pub.mod/win32.mod/win32.debug.win32.x86.a(com.bmx.debug.win32.x86.o): In function `pub_win32_com_IIDFromString':
C:/Users/therevills/Downloads/BlitzMax_win32_0.70.3.09/BlitzMax/mod/pub.mod/win32.mod/.bmx/com.bmx.debug.win32.x86.c:3046: undefined reference to `_imp__IIDFromString@8'
C:/Users/therevills/Downloads/BlitzMax_win32_0.70.3.09/BlitzMax/mod/pub.mod/win32.mod/win32.debug.win32.x86.a(com.bmx.debug.win32.x86.o): In function `pub_win32_com_StringFromIID':
C:/Users/therevills/Downloads/BlitzMax_win32_0.70.3.09/BlitzMax/mod/pub.mod/win32.mod/.bmx/com.bmx.debug.win32.x86.c:3092: undefined reference to `_imp__StringFromIID@8'
Build Error: Failed to link C:/Users/therevills/Downloads/BlitzMax_win32_0.70.3.09/BlitzMax/tmp/untitled1.debug.exe
Process complete

Platform: Win32
Architecture: x86
Build Options: Debug Build, Build GUI App, Quick Scan

Any ideas?

Dabhand(Posted 2016) [#40]
Same here... I usually bloody try them before copying the link from GIT as well! :( Me bad

You can always pick up the previous version:-

I'm also building a new package from the sources... Bit of a pain because I honestly think my laptop I have at my girlfriends is about to die a death! :D Give me 5 mins (Or 60 year the way this thing is starting to run, lol)

tada... New win32 bundle: BlitzMaxNG_win32_Unoffical_0_71.7z

Tested and it works! :)


Hezkore(Posted 2016) [#41]
I'm trying to download BMX-NG but just get a OneDrive message saying it can't be scanned for viruses and a close button.
Nothing is ever downloaded...

Dabhand(Posted 2016) [#42]
Two ticks...

Dabhand(Posted 2016) [#43]

Sorry about that... I just did that for quickness since I was on a "on-the-way-out" laptop, stupid one drive!


Brucey(Posted 2016) [#44]
I should probably try to release more often.. but there's a bit of work involved... :-)

Dabhand(Posted 2016) [#45]

I should probably try to release more often.. but there's a bit of work involved... :-)

I'm already on it:-

Automates installing a new complete bmx-ng package, there's a ReadMe in there so I dont have to explain! :D

The source is here (, nowt posh, does the job, its vanilla BlitzMax, so, if someone fancies a pop at other platforms I'll shoot the builds onto



Brucey(Posted 2016) [#46]
Ah yes, a bit like my install/build scripts in the bmx-ng repo.

The nice thing about the install scripts is that they generate all the c source, which you can then deploy somewhere (that doesn't already have BlitzMax installed), run the generated build scripts, and it will compile everything up (bmk, bcc, etc), and present you with a compiled, ready to use BlitzMax.

Still needs a bit of work, but hopefully it will be deployable on a "continuous integration" platform for automatic testing, etc.

Dabhand(Posted 2016) [#47]
Ah, I never seen them! :/

Bugger! :D


therevills(Posted 2016) [#48]
Thanks Dabz for the updated zip, makes its super easy :)

therevills(Posted 2016) [#49]
Just threw it Chef Solitaire USA which uses MaxGUI as the editor and when it compiles I get:

Do I need a different version of MaxGUI?

If I remove the Editor (and the dependencies of MaxGUI) I get this:

Dabhand(Posted 2016) [#50]
Did you get MaxGUI from here:-

If not, download that (Best to do it through GIT), if yes, erm, dunno! :D


Derron(Posted 2016) [#51]
The most current maxgui.mod is always at:

This does not need "GIT" ...and it also avoids downloading the whole history of the repository (each change's changes is stored in the repo, so a copy of the repo contains _every_ commit ever logged into the repo).

This is why you only should clone a repo if you intend to collaborate (saves traffic, saves hdd space).

C:/Users/therevills/Downloads/BlitzMaxNG_win32_Unoffical_0_71/ChefSolitaire/.bmx/ChefSolitaire.bmx.gui.release.win32.x86.o:(code+0x26): undefined reference to `__bb_blitz_blitz'

Did you do a "quick compile"? Do a complete rebuild of your project and check if it happens again.
If you want to make sure everything is on a good foundation, also rebuild all modules first (bmk makemods -a).


Dabhand(Posted 2016) [#52]
Ah... Learn something new everyday... Wonder where I got that from then... Good to know! :)


therevills(Posted 2016) [#53]
I'm using MaxGUI which was bundled in the official BMX installation. I'll try the github version today.

Did you do a "quick compile"? Do a complete rebuild of your project and check if it happens again.

Both - complete build first time with the same error and then quick compile again with the same error.

If you want to make sure everything is on a good foundation, also rebuild all modules first (bmk makemods -a).

I'll try it today when I get home from work :)

Thanks guys - hope it works :)

therevills(Posted 2016) [#54]
Okay I've rebuilt the mods and moved over the github version of MaxGui.

Now I get:

fullaccess.cpp is this code:

Any clues?

Brucey(Posted 2016) [#55]
It's a known "feature" of SECURITY_DESCRIPTOR :-) ( )

One fix might be to change :


therevills(Posted 2016) [#56]
Thanks Brucey, I'll have another go tonight (btw this does work with the official bmx build).

Brucey(Posted 2016) [#57]
btw this does work with the official bmx build

It's a C++ compiler error. Perhaps related to the version of MinGW that NG is using.

col(Posted 2016) [#58]
ignore me

therevills(Posted 2016) [#59]
Next one:

Building ChefSolitaire
[  0%] Compiling:fullaccess.cpp
[ 99%] Processing:ChefSolitaire.bmx
Compile Error: Unable to convert from Byte Ptr to Int.
Build Error: failed to compile C:/Users/therevills/Downloads/BlitzMaxNG_win32_Unoffical_0_71/ChefSolitaire/ChefSolitaire.bmx
Process complete

Pointing at:

Global DwmapiDLL:Int = LoadLibraryA("dwmapi.dll") ' <--------- HERE
Global FlushAero()
If DwmapiDLL
	FlushAero = GetProcAddress(DwmapiDLL, "DwmFlush")

Henri(Posted 2016) [#60]

LoadLibrary returns a memory address which in NG must be declared as Byte Ptr in order to work in 64-bit enviroment.


Brucey(Posted 2016) [#61]
Yes, LoadLibraryA() returns a pointer. Int isn't a pointer :-)

therevills(Posted 2016) [#62]
Okay, I'll try again tonight :)

Will I have to change the If statement too? (Havent worked with Byte Ptr before).

Is there a place which specifies the differences between the official BlitzMax and NG?

Derron(Posted 2016) [#63]
Not that I know of, but I suggested this some days ago. For now I know this for sure:

- use at least "strict"
- functions/methods without return type are returning "void"
- functions/methods returning "void" need the same type in extended types (so no typeA.func:int() and typeBextendsA.func())
- Byte Ptr and INT are no longer "the same" in certain areas
- NG offers some more data types (UInt and ULong)
- offers more "more or less working" targets (raspi, android...)
- needs MinGW as it does no longer work together with FASM[.exe]

@if statement
Just give it a whirl and you will see, I think it should work the same as before as the "byte ptr" could become null (evaluated as "false/true") too.


Brucey(Posted 2016) [#64]
functions/methods without return type are returning "void"

Only in SuperStrict mode. In Strict it's the same...

Byte Ptr and INT are no longer "the same" in certain areas

On 64-bit architectures pointers are 8 bytes. An Int is always 4 bytes. It all depends what you want to target.

Derron(Posted 2016) [#65]
Oh, I think I am coding "SuperStrict" for years now, so apologize my wrong assumption.

Now that you are aware of the "request" you might think of filling in some bits and bytes in a "migration.txt"-file :-)


therevills(Posted 2016) [#66]
Next :)
Compile Error: Unable to convert from Void to Int.

On this line:
If SHGetSpecialFolderLocation(0,folder_id,BankBuf(idl)) = 0		

Which is from here:
Extern "win32"
   Function SHGetSpecialFolderLocation(hwndOwner%, nFolder%, pIdl:Byte Ptr)

Sorry about keeping asking these...

Brucey(Posted 2016) [#67]
If your extern is in SuperStrict code, you'll need to add :Int return type in the declaration.

NG's SuperStrict really is "super" strict. If you don't specify a return type, it assumes you really don't want one, and generates code appropriately.

.. and hwndOwner is a pointer ;-)

You will have another issue with this particular extern case later (when it finally starts to compile the generated code) but we can discuss that later...

therevills(Posted 2016) [#68]
D3D7Max2DDriver isnt available in NG?

It nearly compiled after I went thru which error...

but now I get a whole bunch of C++ errors:

Brucey(Posted 2016) [#69]
Well, you are certainly getting your money's worth with the Windows APIs :-)

Some notes...

You appear to be externing all these yourself? Doesn't Pub.Win32 already expose a lot of these APIs already?

The errors with functions that look like 'CreateMutexA@12' (with the @ included in the function name) are because your extern probably looks something like :
Function blah(some args)="blah@12"

Because the legacy compiler is generating assembler and knows nothing about the libraries it is interfacing with, one needs to "help" it when referring to certain kinds of Windows functions. So you need to "mangle" the names to match those that are actually in the library.
NG doesn't require this because it will compile the function names correctly at build time.

The next issue is a "feature" of the way NG generates C headers for compiling everything.
When you declare a function as extern, it will add this declaration to a header using the types your specified. Unfortunately for Windows APIs, they usually already declared (via windows.h).
And so you see a list of "conflicting types for 'function'" errors.

To get around this issue, I came up with a new filetype that you can include which lists the externs, their correct arg types, and whether you actually want to generate the declaration in the header.
The file should be called FileNameWithExtern.x (where the name of the file matches the one where you have the extern).

Then you add the list of offending functions to the file.
For example, for the error
generated code :
extern BBINT __stdcall  ReleaseDC(BBINT bbt_hwnd,BBINT bbt_hdc);
actual code:

you would add to the file
int ReleaseDC(HWND ,HDC )!

Note the exclamation on the end. It tells the compiler not to generate this in our own header.
And note that the argument names are not included, only their types.

In this particular example, your extern will need changed anyway, since HWND and HDC are both pointers.

Ideally all these Windows APIs would already be set up in Pub.Win32 so you didn't need to add them yourself, in which case this particular set of issues wouldn't be.. an issue.
NG's Pub.Win32 does have a lot of these already added (whilst I was working on the MaxGUI port).

Finally, your TScore.New() method is not generating correctly. x = <something> doesn't seem to be working.
That's probably an issue with the compiler. If you can provide me with a small replicable example I can sort that out.

therevills(Posted 2016) [#70]
Thanks Brucey.

With the TScore issue, it is actually an issue with the coder (I'm switching between Monkey and BlitzMax a lot), I was trying to use new as a "proper" ctor:

With the Extern issue, I'm using the GAF framework which has an awful lot of externs in there:

You are correct with the "@" symbol, so are you saying to removing the "@" symbol from all these? Also where would I add the exclamation point code?

Brucey(Posted 2016) [#71]
If you want to target 64-bit at some point, nearly all those externs will need to be fixed - changing pointer ints to Byte Ptr.
Many of these should be implemented in Pub.Win32 now on NG, although the code that uses them may also need to be "fixed"... since they are likely to be expecting Ints everywhere.

For removing the @ symbol, it can simply be a case of commenting out the assignment :
Function GetLastError%() ' = "GetLastError@0"

or removing it altogether.

You could try commenting out the extern section and importing pub.win32 and see how many are missing. I'd expect there to be less missing than otherwise, which would mean less effort to get it working :-)

I was trying to use new as a "proper" ctor

Probably still a bug. It should catch args in New() and raise an error ;-)

Also where would I add the exclamation point code?

Say you have a file "externs.bmx" with some externs in it.
Create a file called "externs.x" (same name!) in the same dir as the file. Add your lines there.
(see NG's pub.win32 folder for many examples)

Generally, a typical app would be much easier to get working with NG - in most cases it should *just* work without any significant changes required. But as you've seen, some low-level stuff needs to be cleaned up a bit.

therevills(Posted 2016) [#72]
With the New(params), it does compile fine with the official BMX which is odd - it does complain if you do this to use it though :)

Thanks again Brucey - I'm going to give it a break for now, need to get on with other coding.

Dabhand(Posted 2016) [#73]
Just to note, uploaded win32 version 0.77 of bmx-ng, it now includes a new build of MaxIDE from bruceys git repo (Which has all the extra build options on)

I must say, this release feels... I dunno... Pretty neat! :D

That is all!


Pingus(Posted 2016) [#74]
Thanks Dab,
Your builds are always welcome as I am unable to do it myself.
Tomorrow I'll get a new phone (no intel proc that time), maybe that time I'll be able to make something running on Android with bmax, that would be great :) !

seriouslee(Posted 2016) [#75]
Thanks, Dab. Downloaded the latest from your site which fixed a couple of small issues I had with my built from source install: inability to compile 32 bit apps (Windows 10 using TDM GCC 64) and maxIde's sidebar region width "holds"! So I think I'll be using your builds in the future.

Thanks again!

BlitzSupport(Posted 2016) [#76]
Hi Dabhand,

I was hoping to use frisky (which I've just discovered) to update my copy of bmx-ng, but it just gives this error -- after setting my paths correctly, of course:

Derron(Posted 2016) [#77]
As you see, it does not parse/scrapes the URLs correctly from a source file ... which then leads to the problem you see.

I do not know the content of "config/config.txt" - but there it seems to fetch the git-urls from.


BlitzSupport(Posted 2016) [#78]
Oh, see what you mean now!

I'll try having a look at the source.

I tried something similar myself, but got stuck on building standard BlitzMax programmiatically -- it would build from command line but not from a batch file, never could figure it out, as the 'current dir' was the same both ways... :/

Dabhand(Posted 2016) [#79]
Hiya... Just saw this... Sorry for late reply, been busy, like, mega busy at work...

I've just tried it and, yeah, she still works here... Here's my config file:-

GITPATH=C:\Program Files\Git\bin

So, not sure whats went on there!?!


BlitzSupport(Posted 2016) [#80]
Partially working now! I'd put the full path to git.exe, not just the folder. That builds/copies, but it still fails at the end with:

Going into C:\Users\James\Desktop\Frisky_win32_v1_0\BNGDumps\1462935418\bcc, I can see that bcc.exe hasn't been built.

Think this is where it's failing:

(Note: Building not complete!)

If I try to build bcc.bmk manually, I get the following error in stringbuffer_core.bmx:

Building bcc
[ 48%] Processing:stringbuffer_core.bmx
Compile Error: Duplicate identifier 'new'.
Build Error: failed to compile C:/Users/James/Desktop/Frisky_win32_v1_0/BNGDumps/1462935418/bcc/stringbuffer_core.bmx
Process complete

MaxIDE highlights this line (********************) in stringbuffer_core.bmx:

Type TStringBuffer

	' the char buffer
	Field buffer:Byte Ptr
	Global initialCapacity:Int = 16
	Method New()
		buffer = bmx_stringbuffer_new(initialCapacity)
	End Method
	Method New(initialCapacity:Int)
		buffer = bmx_stringbuffer_new(initialCapacity) ' ********************
	End Method

Close, but I don't get why stringbuffer won't build :/

Dabhand(Posted 2016) [#81]

Close, but I don't get why stringbuffer won't build :/

Just to note... The version of BlitzMax I am using with Frisky is vanilla (v1.50)...

My BlitzMax paths are

C:/BlitzMax <--- Original
C:/BlitzMaxNG <--- Bruceys

So, if your using NG, swap the path in the config file and let the original version of BM have a spin!


BlitzSupport(Posted 2016) [#82]
Exactly the same result! :(

Started from scratch, too. I'll have to put some effort into it at some point, in order to try and figure out what's going on. I have a feeling that despite setting BMX150 as path, it could be using one of the other installs... perhaps defaulting to a bmx-ng that's failing to build that module?

Dabhand(Posted 2016) [#83]
Could be!?!

Have you tried putting BlitzMax on C:, I've noticed you have it on B:


Dabhand(Posted 2016) [#84]
Oh... Oh, just thought... MinGW, which one is it... That may have something to do with it!


Dabhand(Posted 2016) [#85]
On my setup...

C:\Users\Dabz>g++ --version
g++ (tdm-1) 4.7.1


BlitzSupport(Posted 2016) [#86]
Hmm, I'm:

C:\Windows\System32>g++ --version
g++ (tdm-1) 5.1.0

Thing is, my main Blitz (B:\Blitz, as you say) is NG, and works fine with everything else -- it should really run from anywhere, as there's nothing path-dependent, other than file associations.

My MinGW should be the 64-bit version, which builds for 32/64 no problem from the NG-IDE.

I'll maybe get to play around over the next few days, hopefully, see if I can dig into it...

(Are you able to build bcc with bmx-ng, then, Dabz?)

RustyKristi(Posted 2016) [#87]
Hey Dabhand,

Quick request, do you still have the source for this custom bmk.exe file you posted a while back?

Dabhand(Posted 2016) [#88]

(Are you able to build bcc with bmx-ng, then, Dabz?)

Yep, just tried it with Frisky, alls good, builds the package fine!

C:\BlitzMax_NG\bin>bcc -v
bcc[ng] Release Version 0.77

C:\BlitzMax_NG\bin>bmk -v
bmk 3.11 win32-x86 / gcc 050100 (cpu x3)

Quick request, do you still have the source for this custom bmk.exe file you posted a while back?

Alas, no I havent I'm afraid, after Brucey drove down from Scotland and give me a chinese burn, I decided to just stick with the official code he releases on Git, for the simple reason, he's right in saying fudging code is no good.


Dabhand(Posted 2016) [#89]

To be honest, I would really try g++ (tdm-1) 4.7.1 and point the path in Frisky's config file to the original BlitzMax installation to see if that will graft, it's something to knock off the checklist...


markcw(Posted 2016) [#90]
There's a small error in stringbuffer_core.bmx, you need a "?not bmxng" line:
Type TStringBuffer

	' the char buffer
	Field buffer:Byte Ptr
	Global initialCapacity:Int = 16
?Not bmxng
	Method New()
		buffer = bmx_stringbuffer_new(initialCapacity)
	End Method
	Method New(initialCapacity:Int)
		buffer = bmx_stringbuffer_new(initialCapacity) ' ********************
	End Method

RustyKristi(Posted 2016) [#91]
that's ok Dabhand. thanks again.

Brucey(Posted 2016) [#92]
There's a small error in stringbuffer_core.bmx

Well, not really. There's certainly a version-dependency issue.

What you need to do is build the latest bcc with the legacy compiler, then you can compile it again with your newly compiled bcc and it should build fine.

Your change introduces a runtime issue in Create() for short strings.
So I don't recommend your patch :-)

Perhaps there needs to be version-specific compiler flags.... like bmxng_0_78 or some such, where it only compiles that in if version is at least the flagged version (i.e the flag will exist for version and beyond).

markcw(Posted 2016) [#93]
Good to know, thanks Brucey.

My opinion: if recompiling bcc is all that needs to be done I don't think version-specific compiler flags would be needed.

col(Posted 2016) [#94]
I'd just like to point out...

It's probably advisable, that when doing any updates - especially bcc that could output different code to previous versions, always do a full 'rebuild all modules'... other wise the dependency resolver only builds files/modules that have changed and you could have modules built by 2 different versions, causing all kinds of compilation issues.

Brucey(Posted 2016) [#95]
especially bcc that could output different code to previous versions

Any version bump of bcc usually requires a full rebuild of modules/projects.

Brucey(Posted 2016) [#96]
More double-posting from me :-p

JoshK(Posted 2016) [#97]
I'm getting started with it. I plan on writing a whole GUI from scratch along with the move to NG, so it's going to be a big job.

Taron(Posted 2016) [#98]
I'm excited and already happily using NG, compiling x64 successfully. I'm still figuring out how to come by a proper IDE to work with it, since the maxIDE is practically a notepad with a limp. Anyway, Brucey RULEZ! 8D

RustyKristi(Posted 2016) [#99]

The updated MaxIDE works well with NG in case you have not tried it yet.

Taron(Posted 2016) [#100]
Not sure, if I'm not using it? I will have to find it first, I'm afraid. Thanks for the tip, I'll look around. 8)

RustyKristi(Posted 2016) [#101]
Great, yes you can't go wrong with new MaxIDE particularly when Brucey is constantly updating it.. ;-)

latest commit 14 hours ago from Derron PR..

JoshK(Posted 2016) [#102]
I'm starting to integrate the GUI into MaxGUI as a new driver, so it is possible to just sidestep Win32 / Cocoa / GTK and use this with BMXNG

ImaginaryHuman(Posted 2017) [#103]
Would like to try this, but too difficult to get this thing installed. Hasn't someone made an OS X installer that actually works yet? I install it, I get a 'cant determine installation folder' error when I try to open the editor. Do I *REALLY* have to dip into the flicking TERMINAL to make this work? Are we in the stone ages? ;-)

Derron(Posted 2017) [#104]
Maybe Brucey will create a macos-release too. It would become available at

So if you use github - "watch" that "bmx-ng"-repo and get informed of changes/updates.


FireballStarfish(Posted 2017) [#105] has an OSX release. You could start with that one and then update it using the current sources from github.

ImaginaryHuman(Posted 2017) [#106]
thats what I tried, hence the error. i don't thin users should have to go to a programmers repository to download something like this, its not user friendly.

Derron(Posted 2017) [#107] is _not_ the official home of Bmx-NG.
(maybe this is why the downloads are not current on that website)

So the "programmers repository" is the official way to retrieve most-current releases.

Like said: if Brucey becomes aware of your issues, he might be creating a new release-pack for MacOS.

Thought BlitzPlotter tried to write an "GUI-based installer" for BMX-NG but seems he did not finish it yet - maybe there is someone else who wants to tinker over the weekend to create a cross-platform-installer (hello MaxGUI and hello cURL :-)).

@ "Unable to determine BlitzMax installation directory"
Do you try to run it directly within the download folder? What happens if you move the folder to a different location?

That error happens if "BlitzMaxPath()" returns something invalid.

If the error (notification) was "Unable to determine BlitzMax version.~n~nPlease reinstall BlitzMax to repair this problem." then it was not able to run the "bcc"-application (process) - which sounds as if the OS prohibited it.
Or again "BlitzMaxPath()" returned something invalid - as it runs "BlitzMaxPath()+/bin/+bcc".

This function is defined in "brl.mod/maxutil.mod/maxutil.bmx" - and it can be fooled in running the wrong "bcc" if you set a "BMXPATH" environment variable (eg. to your vanilla installation).


ImaginaryHuman(Posted 2017) [#108]
Thanks for the info but alas none of it is helpful. Fact is, there should be an installer that simply works and doesn't require me messing with any of this stuff. Is that too much to ask for, for a complicated piece of software like this, in this day and age?

Derron(Posted 2017) [#109]
Yes _imho_ this is "too much to ask for" - at least until a "v1.0" is reached.

Dunno why an installer is needed at all? If BMX-NG is portable then you just unzip and run the Editor.
On Linux you need to provide RPM, DEB, ... depending on the distros. So Brucey should offer them all to satisfy individual users? I think this is something which could be done by the helpers not able to work on the compiler. I am not owning a Mac - nor do I want to install BMX-NG (I just have it on a USB-Stick ... portable). But you - and surely others - could try to help Brucey by packaging whatever is needed - and how it is needed.

I assume you do have more knowledge of BlitzMax + (Mac)OS than others here (just begun with BlitzMax or using other OS) so maybe you can become the one creating a little installer for Mac.

How do you package the most current "vanilla Blitzmax" (talking about the one on github):

So does this work for you already - if so, a similar thing could be build (there is already a "builder" for linux - creating "ready to zip"-packages for the platforms).

@ not helpful hints
is there an environment variable ("BMXPATH") set? If so: does it point to a valid path?
The problem with "BlitzMaxPath()" is that it just blindly returns whatever is set to this path, there is no check done if that path exists / is valid.

I am not sure but it might be that it also does not work with "symlink"-ed paths. At least some of these path-functions in the brl.mod-modules have trouble with symlinks (I had my /mod-folder full of symlinked-in-git-repositories of brl.mod pub.mod bah.mod ... - which just did not work in all cases).

Brucey(Posted 2017) [#110]
I'll get an OS X release done over the weekend.

ImaginaryHuman(Posted 2017) [#111]
Is there also any place where it is described what Max NG 'is' or how it works or what its capabilities are?

xlsior(Posted 2017) [#112]
Is there also any place where it is described what Max NG 'is'

Blitzmax on steroids, with many more compilation targets: x86, x64, Raspberry Pi, android (ARM), web.

FireballStarfish(Posted 2017) [#113]
It's two things:
Firstly, it's an alternative BlitzMax compiler created by Brucey that compiles to C code as an intermediate step and thus allows compiling for much more targets, as xlsior said (plus greater execution speed).
At the same time, it's an upgrade to the language itself, adding new features such as parameterized constructors, overloading, visibility modifiers, unsigned number types and more. There currently isn't really any documentation or clean list of these features however, so you're gonna have to browse the forums for information. Brucey typically creates a thread when he adds a major feature, with some explantation.

Derron(Posted 2017) [#114]
Maybe one should consider opening the wiki on ...or to maintain some "official" documents/pages.

So the new features could team up with corresponding examples.


LT(Posted 2017) [#115]
Thought was supposed to be an official repository. Seems to me that one and ONLY one location would be ideal.

xlsior(Posted 2017) [#116]
Thought was supposed to be an official repository. Seems to me that one and ONLY one location would be ideal.

Since Brucey is the creator/maintainer of NG, his github repository is about as official as it gets...

LT(Posted 2017) [#117]
his github repository is about as official as it gets...
Well yes, but I think one location with official documentation, samples, etc. would be nice. As Derron said, it's perhaps too much for something that isn't v1.0, but that site was a good start. 'Sorry to see it hasn't kept up.

Derron(Posted 2017) [#118]
I thought about but it is already way too much.
Github integration of the cms would be nice...but no need.
Collaborative help/doxumentation editing would benefit from it (you could do it right on a github-repo... No need for useraccounts in the cms.

But as stated it needs people to write docs/help. I know my English is far from perfect so any text written by me will shed some not-so-bright light on the project.

Regardless of this especially the differences to vanilla need to get pointed out by someone like Brucey. (Including possible limitations of the new features)


degac(Posted 2017) [#119]
Well, BMX-NG is right.
It has an easy to understand land page (maybe I will 'fuse' Home and About page in just one thing to explain the differences between Vanilla & NG).

I would update the download section (maybe once a month) to have a download-and-install BMX-NG package.

Of course it lacks a documentation about the 'new' features of NG.
I doubt that the inline documentation is updated for the new features, and this should be the only 'documentation' needed (overloading, internal things etc - needed only for advanced users at the end!)

LT(Posted 2017) [#120]
Including possible limitations of the new features
This. I've been wondering if there are features that don't work across all platforms. Can I use MemCopy, for example, on Android and iOS? That's an original (vanilla) feature, but the question is relevant because of NG's new platform targets.

ImaginaryHuman(Posted 2017) [#121]
I still just get an 'unable to determine blitzmax installation directory'. it says in the instructions all you need to do is extract and run maxide, but alas not. I'm not doing anything weird, it just doesn't work.

Derron(Posted 2017) [#122]
Like said this is an issue in brl.mod/*
Have a look at #107 and report back if you have some environment variables set which might confuse the recognition.

From a "cmd"-commandline-window:
echo %BMXPATH%
and if it echos something differing to "%BMXPATH%" then there was a variable set - which might trick the according brl-function to not search the blitzmax-path but just use this one defined there.

If it just printed "%BMXPATH%" then culprit is somewhere else. Also important: if that function was not able to find the blitzmax-path at all, then an error would be thrown too.

Ok, so when is "unable to determine..." thrown it was done by MaxIDE ("Initialize()") and is just telling: Instead of letting BlitzMaxPath() throw something, I will do.
So "BlitzMaxPath()" was failing and MaxIDE is telling.
If it was "Unable to determine BlitzMax version" (instead of "installation") then it either was not able o execute $path+"/bin/bcc[.exe]" or the called binary did not return a proper result (empty string).
So on your installation it might have a problem to run an external executable - or the executable is in a folder which is restricted (no execution allowed).

In that case (which seems not to be the one):
What happens if you run (from a "cmd"-prompt):
c:\yourBlitzMaxPath\bin\bcc.exe -v
does it execute the file?

To check whether the BlitzMax-Path was set correctly:
- run MaxIDE
- click "about"
- read the "BlitzMax Path" entry (is it correct?)
Of course this is only possible once it does no longer throw the version error.

You might use this code (the one from maxutil.mod) to check where it "fails":

Function BlitzMaxPath$()
	Global bmxpath$
	If bmxpath Return bmxpath
	Local p$=getenv_("BMXPATH")
	If p
		Return p
		Local t$=p+"/bin/bmk"
		If FileType(t)=FILETYPE_FILE
			putenv_ "BMXPATH="+p
			Return p
		Local q$=ExtractDir( p )
		If q=p Throw "Unable to locate BlitzMax path"
End Function

(eg. you could add some prints to see if getenv_ already returns something - and so on). This should be run from within your "vanilla" installation (if that worked)

So conclusion:
With the given information I assume the BlitzMax-path is not recognized correctly (I assume an outdated/wrong environment variable).


ImaginaryHuman(Posted 2017) [#123]
mm no. a) i am on mac not windows, and b) i should not have to fix this.

ImaginaryHuman(Posted 2017) [#124]
all i did was download the zip file for mac from the website, unzip it, click on maxide. that's all. it apparently is supposed to 'just work'. it does not. it's got nothing to do with environmental variables that I have never touched, or me having to poke around with command line crap which should've been outlawed 20 years ago. I would like for it to 'just work' - you know, like human friendly software.

Derron(Posted 2017) [#125]
Did you have vanilla blitzmax installed before? If so: is it still installed?

It is possibly not a fault of bmxng but maxide not being able to find binaries (which is why I told you to check that function I wrote about above) or your mac os does not allow execution of these binaries (try to execute bcc and bmk from a commandline).
Btw my linux has environment variables too.. so I assume a mac has something similar. Imho the maxutil.mod-function should not be relied on. It does not play well will a multi-blitzmax-installation you could have this variable and every installation uses that.

Nonetheless I will stop reolying here as you seem to not really be interested in solving it. Just writing that something does not work...without showing any further interest (like developers/programmers should) does not motivate me to spend time on that subject. I gave some clues what might fail...and you do not even bother to check them out (extending research on your own). I also think that the original imaginaryhuman is no longer using his account. His history of posts describes a one who is tinkering with computers..which seems not to be the case now. A pity.

PS: for the majority it seems to work by unpacking and running. So rumbling around instead of trying to assist in something every FOSS project likes...


BlitzSupport(Posted 2017) [#126]
@ImaginaryHuman: Nobody's saying you should have to fix it, but I think if you're not even willing to try and troubleshoot problems you're having with a volunteer-run project, then maybe it's just not for you -- at this time anyway. Derron has gone into great detail above to try and help narrow down the cause.

ImaginaryHuman(Posted 2017) [#127]
I appreciate the efforts and all. But here's the thing. If this was a paid product, and someone told me to unzip the file and click on maxide to start programming, and it came up with a failure message that completely prevented me from using the software at all, that's going to be a major headache for the end user plus likely a refund. I understand this is not a paid software n'all.. though it could be... but still, basic human friendliness. I should not have to 'do the steps necessary' to fix this. I should not have to dip into code, know what GitHub is, open a command window, type in archaic text commands, or hack around with files. I understand some 'programmer type' people love this kind of technical mess, but I don't and many people probably won't either. I'm sorry, I know it's a lot to 'expect' from a free project, but if the thing doesn't run like it's supposed to, that's not really my fault and I shouldn't be having to try to 'fix' it.

ImaginaryHuman(Posted 2017) [#128]

Cocopino(Posted 2017) [#129]

if the thing doesn't run like it's supposed to, that's not really my fault and I shouldn't be having to try to 'fix' it.

Hmm... I've been really hesitant to try out NG because I assumed it would be a real hassle to get working. But once I did, in my case, it worked more or less "out-of-the-box" (as in, I could compile programs immediately) and was completely portable (e.g. I just copied my BlitzmaxNG folder to a new computer and I could write and compile programs from there without any additional installations)...

Point being, your problems might not be everyone's.
All you've done is saying "it doesn't work" - but you're a programmer right? Isn't that the exact thing your customers say that is most bothersome of all...? Not even providing a single error message...?

ImaginaryHuman(Posted February) [#130]
Windows version appears to work okay, on a different computer. As per the instructions, un7zipped it, clicked the icon, it works. build docs and modules, compiled. etc. That's even with a pre-existing installatio(s) of older versions of Max installed on the machine and no changes made to any environmental variables or anything.

Then... there's OSX .... mmm nope. I already stated what the error is. In my opinion if it does not run the way it was intended to, then something needs to be fixed, and I'm not the one to fix it. I don't mean to sound ungrateful. I don't think I'm being unreasonable either. It would be nice if it would just work like it's supposed to.

xlsior(Posted February) [#131]
In my opinion if it does not run the way it was intended to, then something needs to be fixed, and I'm not the one to fix it. I don't mean to sound ungrateful. I don't think I'm being unreasonable either. It would be nice if it would just work like it's supposed to

But since it doesn't need fixing for others, it would be helpful if you can assist with the troubleshooting as asked above so it can be determined what the cause of your problem is so it CAN BE FIXED for you and others as well.

ImaginaryHuman(Posted February) [#132]
Except that... I have no idea what the problem is because I didn't write the software. I have no idea what Max relies on or what files or variables or whatever could interfere with it. I've not had any problems with previous versions of max being installed simultaneously. Sooooooo, sorry, I have no insight into it.

Meanwhile.... I get this error trying to built otus.lzma (lzma compression module).. I removed all previous .bmx folders and .a .o .i etc files...

Building Modules
[ 45%] Processing:lzma.bmx
[ 52%] Compiling:lzma.bmx.debug.win32.x64.c
[ 57%] Archiving:lzma.debug.win32.x64.a
C:/Users/admin/Documents/Docs/Other/BlitzMaxNG0.77/MinGW32/bin/ar.exe: creating C:/Users/admin/Documents/Docs/Other/BlitzMaxNG0.77/mod/otus.mod/lzma.mod/lzma.debug.win32.x64.a
C:/Users/admin/Documents/Docs/Other/BlitzMaxNG0.77/MinGW32/bin/ar.exe: C:/Users/admin/Documents/Docs/Other/BlitzMaxNG0.77/mod/otus.mod/lzma.mod/.bmx/LzmaEnc.c.debug.win32.x64.o: No such file or directory
Build Error: Failed to create archive C:/Users/admin/Documents/Docs/Other/BlitzMaxNG0.77/mod/otus.mod/lzma.mod/lzma.debug.win32.x64.a

Brucey(Posted February) [#133]
If you can send me the lzma module (email in profile), I can have a look at it - I couldn't find the original on otus' website.

ImaginaryHuman(Posted February) [#134]

ImaginaryHuman(Posted February) [#135]
I've been trying to figure out what's going on but no luck so far. I am trying to recompile the maxide itself and managed to get to 99% then this error:

[ 99%] Processing:maxide.bmx
Compile Error: Can't find interface for module 'brl.timerdefault'
Build Error: failed to compile (65280)

I basically downloaded the zip from maxng website and then the maxide folder from GitHub. bmk tool does run from the terminal, gets to 99% then conks out.

ImaginaryHuman(Posted February) [#136]
I'm not getting anywhere with this. ... anyone have a WORKING ng folder with all the required files in it, that you can share? for OS X?

ImaginaryHuman(Posted February) [#137]
When I run the above blitzmaxpath() function in my current Max 1.51 (not ng), it just tells me the path of the blitzmax folder for this current version. Because then when I rename this folder to something else, and re-run the ice, this outputs the new folder name. I thought maybe I could rename the BlitzMaxNG folder to the same name but it doesn't seem to be stored in an environmental variable, but just as a reference to the current folder MaxIDE was run from. I confirmed this also by building a simple gui app to display the path in a window, moved the app to the NG folder, and ran it.. reported the name of the NG folder. So I don't know what's going on in the NG maxide that's any different to this behavior. Since the function actually does return a text string to the current folder, i don't know why an exception is getting thrown.

The only environmental variable I see relating to blitz is "PWD=/applications/blitzmaxng/bin"

There is no other blitz-related variable set.

Tried also downloading the latest individual files from GitHub and trying to put together a working system on my own, could not get it to compile brl.blitz module.

Gave up.