Easy upgrade to blitzMax NG?

Started by Midimaster, February 08, 2021, 09:56:21

Previous topic - Next topic

Midimaster

Hi I have a lot of old BlitzMax 1.50 projects and I want to know how complicate it is to upgrade them to blitzMax NG.

My questions are:
1. Do I need to download any additional SDK's to start NG?
2. I have still MinGW 8.0 on the computer to prevent problems with 1.50. Does this cause problems with NG?
3. Can I work with both versios on the same computer?
4. Can I still work on 1.50 without getting problems after installing NG?
5. What are problems to be expected when converting old BMX-code into NG?

Thank you
...back from Egypt

Derron

1. - nope, everything you need is provided in the NG release packages (portable packages)
2. - Hmm, it should not as NG prefers its own MinGW (which it provides) yet exotic OS setups might make NG find the "other one" (yet I doubt that)
3. - yes on the same computer is OK, just do not mix inside a project (compile with vanilla, then open in NG and quick compile there, then in vanilla, then in NG...)
4. - yes
5. - NG is at least "strict", vanilla does not require "strict/superstrict", NG warns you if you pass "loosing details" primitives to functions (function func(p:byte)  -> func(myIntegerVariable)), some other problems might occour too (exotic problems like passing Long variables to Lua in x86 builds)


If you encounter issues - drop a line here (or visit the discord channel for some more "live"-ish help)


bye
Ron

Dabz

#2
I think I read that Brucey has been quiet on that front, so... You could say it's probably in a bit of a "Schrodinger's Cat" setup at the minute, which is fair enough, he's been tinkering with it for years... I'd be dog tired of it me! :D lol

Dabz
Intel Core i5 6400 2.7GHz, NVIDIA GeForce GTX 1070 (8GB), 16Gig DDR4 RAM, 256GB SSD, 1TB HDD, Windows 10 64bit

Midimaster

Quote from: GfK on February 08, 2021, 10:29:59
Is BlitzMaxNG even still active, or just floating about in the sea with the rest of the BRL wreckage?

I thought Brucey himself cares about NG and its future?
...back from Egypt

TomToad

GitHub is still being updated.  Last update was 8 days ago.
------------------------------------------------
8 rabbits equals 1 rabbyte.

Dabz

One does stand corrected... I just remember seeing something that he hasnt been floating around for a while thats all!

Dabz
Intel Core i5 6400 2.7GHz, NVIDIA GeForce GTX 1070 (8GB), 16Gig DDR4 RAM, 256GB SSD, 1TB HDD, Windows 10 64bit

Derron

#6
Quote from: TomToad on February 08, 2021, 11:26:00
GitHub is still being updated.  Last update was 8 days ago.

Last "real" update was on begin of this year (5th january) - yet all the latest commits were rather "small" ones. Brucey got rather quiet (read the only life sign are his commits at github) the last half year ... maybe "low on battery". So let's hope he is just recharging.

Regarding required fixes and issues: there are some issues which need to be ironed out:
- max2d is ... becoming old (think of "metal" on apple...) and needs a complete overhaul (was in plan for over a year now but a promising renderer engine is "on hold" now - see discord channel for information)
- max2d got a pull request by me to at least add render2texture but was not merged for over half a year now
- reflection does not know about structs, overloading, ... there is a branch (by HurryStarfish) taking care of a lot of stuff but it was never merged into master
- reflection contains serious bugs concerning "long" variables in x86 - possibly a small fix required but if not done....  (the branch by HurryStarfish takes care of it already)

Sounds "ohh ohhhh" but they are not sooo overly important for the majority of the users. Max2D still works on Win32, Linux - and for now Macs (and android/switch dev/...). Reflection is not used by so many (I use it to communicate with my LUA-scripted AI, and to do some deferred scripting inside my game  - with decoupled and string based function calls).

Compared to "vanilla" there are more benefits than disadvantages:
- more platforms (android...)
- more updated (fixed modules - I somewhen stopped to care to backport them to maxmods/vanilla)
- more efficient containers (TIntMap, TStringMap, TObjectList, ....)
- newer audio modules (streamed audio with audio.soloud)
- SDL (ever run fullscreen with vanilla on a multi montitor setup?)
- better random.mod (default uses still the vanilla approach - which does not create reliable and reproduceable pseudo random numbers across different computers)
- better DLL creation support (dunno how to do proper "GC"-stuff in blitzmax-vanilla-written DLLs - easy to do with NG)

With NGs "bmk" you can get some advantages on your own: eg you do not need to install MinGW globally, just place it in "MinGWx86" (within blitzmax-vanilla directory) and it will use that. No need to update this "lib"-folder and so on.


bye
Ron

Scaremonger


I recently upgraded some old code to BlitzmaxNG and had a couple of strange issues.

The first was that RemoveLink() has disappeared and I had to change it to link.remove(), not a big challenge!

The second was that I had a load of INCBIN's in a file that I included from another folder and it didn't seem to like it. It didn't throw any errors, just didn't load the resources!. I just relocated some images and the included file and it was fine, if not a bit annoying.

Since that day, I havn't gone back to Vanilla Blitzmax.

Midimaster

thanks a lot!

Quote from: Scaremonger on February 08, 2021, 18:14:52

The second was that I had a load of INCBIN's in a file that I included from another folder and it didn't seem to like it....

This is interesting for me, because I often and heavily use "Incbin::" in combination with Koriolis ZipStream-Modul to pack all my resources, images, sounds etc  into the final Exe.
...back from Egypt

Derron

Quote from: Scaremonger on February 08, 2021, 18:14:52
The first was that RemoveLink() has disappeared and I had to change it to link.remove(), not a big challenge!


If you think it was a useful command, just add it back and do the pull request?

Code (BlitzMax) Select

Rem
bbdoc: Remove an object from a linked list
about: #RemoveLink is more efficient than #ListRemove.
end rem
Function RemoveLink( link:TLink )
link.Remove
End Function


Never used that - so never was aware it is missing :)


Regarding incbin - weren't there some commits for this?

bye
Ron

Scaremonger

@Derron:
Removelink() is more of a convenience function anyway and I prefer using link.remove() now I've seen the error of my ways. Lol

I've not experienced the incbin issue since or it may just have been that one application.

@Midimaster: I would suggest you try it. At worst case you can just go back to vanilla Blitzmax.

Scaremonger

Quote from: Scaremonger on February 08, 2021, 18:14:52

The second was that I had a load of INCBIN's in a file that I included from another folder and it didn't seem to like it. It didn't throw any errors, just didn't load the resources!. I just relocated some images and the included file and it was fine, if not a bit annoying.

I found my bug report on GitHub and Brucey fixed this one.