flat assembler
Message board for the users of flat assembler.
 Home   FAQ   Search   Register 
 Profile   Log in to check your private messages   Log in 
flat assembler > High Level Languages > Idlewild-Lang (2D game programming language)

Goto page Previous  1, 2
Author
Thread Post new topic Reply to topic
ProphetOfDoom



Joined: 08 Aug 2008
Posts: 120
Location: UK
BTW I was in no way calling you a newb... Far from it. Sorry if it sounded like that. Most people wouldn't encounter this problem because they would be installing from binaries (and filling their system32 folder with DLLs as you pointed out). Remember to stick the DLLs from the binary package in the folder with the Donjuan source code.
Post 07 Oct 2017, 18:15
View user's profile Send private message Reply with quote
ProphetOfDoom



Joined: 08 Aug 2008
Posts: 120
Location: UK
Wow thanks for your little install tutorial vivik. Only just noticed it. You're a real hacker. Let's just hope you can get it working now.
Post 07 Oct 2017, 18:27
View user's profile Send private message Reply with quote
ProphetOfDoom



Joined: 08 Aug 2008
Posts: 120
Location: UK
It just occurred to me that you'll probably encounter a similar problem at the link stage and the solution is similarly to put golink.exe in the Idlewild-Lang folder.
Post 07 Oct 2017, 18:44
View user's profile Send private message Reply with quote
vivik



Joined: 29 Oct 2016
Posts: 190
Okay, now I'm getting this:

idlewild-lang.exe: fd:4: hGetContents: invalid argument (invalid byte sequence)

Looks like it actually generated "a.exe". Asks for a lot of dlls, I'll figure it out tomorrow.
Post 07 Oct 2017, 19:21
View user's profile Send private message Reply with quote
ProphetOfDoom



Joined: 08 Aug 2008
Posts: 120
Location: UK
Hi,
Thanks for persevering. I can't reproduce the error here but some Googling suggests it's to do with encoding. I'm wondering, if you used "git clone" to checkout the game demo, maybe it converted all the newlines in the source file to Windows format? I think git can be configured to do that automatically and I don't recall ever writing any code to deal with Windows line endings. The program just assumes Unix. It's just a thought. If you've got an a.exe then I think all you need to do is copy the .dlls from this zip file into an appropriate place:

https://github.com/clockworkdevstudio/Idlewild-Lang/releases/tag/v0.0.3-Windows

(Either the folder containing donjuan.bb or system32)
Post 07 Oct 2017, 19:48
View user's profile Send private message Reply with quote
vivik



Joined: 29 Oct 2016
Posts: 190
donjuan.bb has 0a line ending, donjuan.asm has 0d0a line ending.
Post 07 Oct 2017, 21:24
View user's profile Send private message Reply with quote
vivik



Joined: 29 Oct 2016
Posts: 190
Got a.exe running. Here is the list of dependencies, in no particular order:


Code:
libkoshka.core.dll
libkoshka.mm.dll
glew32.dll
libbz2-1.dll
libfreetype-6.dll
libglib-2.0-0.dll
libgraphite2.dll
libharfbuzz-0.dll
libiconv-2.dll
libintl-8.dll
libjpeg-8.dll
liblzma-5.dll
libmad-0.dll
libpcre-1.dll
libpng16-16.dll
libSDL2_mixer-2-0-0.dll
libtiff-5.dll
libwebp-7.dll
SDL2.dll
SDL2_image.dll
SDL2_ttf.dll
zlib1.dll
libwinpthread-1.dll
libstdc++-6.dll
libgcc_s_seh-1.dll



And here is x64dbg log (ollydbg wannabe for 64 bit programs):


Code:
Process Started0000000000400000 C:\Users\User\Downloads\DonJuan\a.exe

Breakpoint at 0000000000401000 (entry breakpointset!
DLL Loaded00000000777F0000 C:\Windows\System32\ntdll.dll
DLL Loaded00000000776D0000 C:\Windows\System32\kernel32.dll
DLL Loaded0000000000160000 C:\Windows\System32\KernelBase.dll

DLL Loaded000000006C540000 C:\Users\User\Downloads\DonJuan\libkoshka.core.dll
DLL Loaded0000000000420000 C:\Windows\System32\msvcrt.dll
DLL Loaded00000000775D0000 C:\Windows\System32\user32.dll
DLL Loaded00000000004C0000 C:\Windows\System32\gdi32.dll
DLL Loaded0000000000020000 C:\Windows\System32\lpk.dll
DLL Loaded0000000000530000 C:\Windows\System32\usp10.dll

DLL Loaded00000000685C0000 C:\Users\User\Downloads\DonJuan\libglib-2.0-0.dll
DLL Loaded0000000000600000 C:\Windows\System32\advapi32.dll
DLL Loaded00000000001D0000 C:\Windows\System32\sechost.dll
DLL Loaded00000000006E0000 C:\Windows\System32\rpcrt4.dll
DLL Loaded0000000000810000 C:\Windows\System32\ole32.dll

DLL Loaded0000000064940000 D:\Haskell\8.2.1\mingw\bin\libwinpthread-1.dll
DLL Loaded0000000000A20000 C:\Windows\System32\shell32.dll
DLL Loaded00000000017B0000 C:\Windows\System32\shlwapi.dll
DLL Loaded00000000003A0000 C:\Windows\System32\ws2_32.dll
DLL Loaded00000000001F0000 C:\Windows\System32\nsi.dll

DLL Loaded0000000061CC0000 C:\Users\User\Downloads\DonJuan\libintl-8.dll
DLL Loaded0000000066000000 C:\Users\User\Downloads\DonJuan\libiconv-2.dll
DLL Loaded0000000069140000 C:\Users\User\Downloads\DonJuan\libpcre-1.dll

DLL Loaded000000006A040000 C:\Users\User\Downloads\DonJuan\libkoshka.mm.dll

DLL Loaded000000006FC40000 D:\Haskell\8.2.1\mingw\bin\libstdc++-6.dll

DLL Loaded0000000061440000 D:\Haskell\8.2.1\mingw\bin\libgcc_s_seh-1.dll
DLL Loaded000000006ED80000 C:\Users\User\Downloads\DonJuan\glew32.dll
DLL Loaded0000000001830000 C:\Windows\System32\opengl32.dll
DLL Loaded0000000000200000 C:\Windows\System32\glu32.dll
DLL Loaded0000000001950000 C:\Windows\System32\ddraw.dll
DLL Loaded00000000003F0000 C:\Windows\System32\dciman32.dll
DLL Loaded0000000001A50000 C:\Windows\System32\setupapi.dll
DLL Loaded0000000001C30000 C:\Windows\System32\cfgmgr32.dll
DLL Loaded0000000001C70000 C:\Windows\System32\oleaut32.dll
DLL Loaded0000000001D50000 C:\Windows\System32\devobj.dll
DLL Loaded0000000001D70000 C:\Windows\System32\dwmapi.dll

DLL Loaded000000006C740000 C:\Users\User\Downloads\DonJuan\SDL2.dll
DLL Loaded0000000001D90000 C:\Windows\System32\imm32.dll
DLL Loaded0000000001DC0000 C:\Windows\System32\msctf.dll
DLL Loaded0000000001ED0000 C:\Windows\System32\version.dll
DLL Loaded0000000001EE0000 C:\Windows\System32\winmm.dll

DLL Loaded000000006A880000 C:\Users\User\Downloads\DonJuan\SDL2_image.dll

DLL Loaded000000006B800000 C:\Users\User\Downloads\DonJuan\libjpeg-8.dll

DLL Loaded0000000068B40000 C:\Users\User\Downloads\DonJuan\libpng16-16.dll

DLL Loaded0000000062E80000 C:\Users\User\Downloads\DonJuan\zlib1.dll

DLL Loaded0000000068EC0000 C:\Users\User\Downloads\DonJuan\libtiff-5.dll

DLL Loaded0000000063CC0000 C:\Users\User\Downloads\DonJuan\liblzma-5.dll

DLL Loaded0000000061940000 C:\Users\User\Downloads\DonJuan\libwebp-7.dll

DLL Loaded000000006FB00000 C:\Users\User\Downloads\DonJuan\libSDL2_mixer-2-0-0.dll

DLL Loaded000000006E1C0000 C:\Users\User\Downloads\DonJuan\libmad-0.dll

DLL Loaded0000000071000000 C:\Users\User\Downloads\DonJuan\SDL2_ttf.dll

DLL Loaded00000000693C0000 C:\Users\User\Downloads\DonJuan\libfreetype-6.dll

DLL Loaded00000000626C0000 C:\Users\User\Downloads\DonJuan\libbz2-1.dll

DLL Loaded0000000061600000 C:\Users\User\Downloads\DonJuan\libharfbuzz-0.dll

DLL Loaded0000000070540000 C:\Users\User\Downloads\DonJuan\libgraphite2.dll

System breakpoint reached! (this is the entry pointfinally)



strange that it loads ddraw, this is for 2d graphics, without 3d "acceleration"
don't know most of these dlls, probably drivers or something
omitted all "TLS Callbacks" from the log

Those 3:


Code:
libwinpthread-1.dll
libstdc++-6.dll
libgcc_s_seh-1.dll



are by mingw (mingw-w64 actually) itself. For some reason every exe made with mingw requires those. It's possible to drop those by generating "freestanding" exe, but making your own language is simplier. I'm not sure why those annoy me so much, probably because I don't know why I need those.


Last edited by vivik on 08 Oct 2017, 06:49; edited 1 time in total
Post 08 Oct 2017, 06:39
View user's profile Send private message Reply with quote
vivik



Joined: 29 Oct 2016
Posts: 190
Okay, now questions about the language itself. What do % and # mean in those?


Code:
Type Entity
    Field id%
    Field health%
    Field x#,y#
    Field sector.Sector
    Field angle#
    Field time%
    Field anim_time%
    Field frame%
    Field updated%
    Field unique_id%
End Type





Code:
Global AXIS_REMAINDER_X = GRAPHICS_WIDTH Mod Int(32 * SCALE#)

Post 08 Oct 2017, 06:44
View user's profile Send private message Reply with quote
ProphetOfDoom



Joined: 08 Aug 2008
Posts: 120
Location: UK

vivik wrote:
Okay, now questions about the language itself. What do % and # mean in those?


Code:
Type Entity
    Field id%
    Field health%
    Field x#,y#
    Field sector.Sector
    Field angle#
    Field time%
    Field anim_time%
    Field frame%
    Field updated%
    Field unique_id%
End Type





Code:
Global AXIS_REMAINDER_X = GRAPHICS_WIDTH Mod Int(32 * SCALE#)




Hi vivik,
Thanks so much for your efforts. It seems I have published a lame duck of a language since not many people are going to have stuff like the POSIX threads library lying around on their system. I will update the binary packages soon with the real dependencies.
The type tags are simple: % means a 64 bit integer and can be omitted as it is the default. # means a 64 bit float, and $ means a string. A type tag with a dot followed by an identifier is a pointer to an object created with the New operator.
Thanks again!
Post 08 Oct 2017, 13:39
View user's profile Send private message Reply with quote
vivik



Joined: 29 Oct 2016
Posts: 190
I read the wikipedia article about Blitz BASIC, looks like it passed lot of iterations, and it's authors even released new language (Monkey). What do you think about those, about this evolution? I'm also curious how adding OOP to that language looked like, I'm still not sure if I should support it. How Blitz BASIC looked like before and after OOP, before and after multi-threading?

There also seems to be an ide for Blitz BASIC (Protean IDE), and a lot of related tools seem to be opensourced at around 2014-2015 (BlitzPlus Blitz3D BlitzMax). What do you think about those? I'm not familiar with those at all, how them and Idlewild correlate? What's the difference?
Post 09 Oct 2017, 08:52
View user's profile Send private message Reply with quote
ProphetOfDoom



Joined: 08 Aug 2008
Posts: 120
Location: UK
Blitz BASIC Help
Hi vivik,
My language has most in common with the original Blitz BASIC 2D for Windows that was released in 2000. I just uploaded the original Blitz BASIC help files to my github page as they don't seem to be available on the Web any more; here's the link:

https://github.com/clockworkdevstudio/Idlewild-Lang/releases/tag/BBDocs

I'll answer your other questions in a bit... I'm finding it hard to think just now as I'm taking some strong painkillers for an ankle injury LOL.
Post 09 Oct 2017, 16:55
View user's profile Send private message Reply with quote
ProphetOfDoom



Joined: 08 Aug 2008
Posts: 120
Location: UK
Hi,
I think an OOP language needs a team behind it, well something like C++ anyway. It's just not practical otherwise. Maybe one person could create something a bit like Objective C if they worked full-time for a few years. Writing a compiler is a marathon.
I haven't "bought" (hate that word when applied to software) any of Blitz Research's newer products so I can't really say if they're any good. But I don't like C++ (too complicated, too easy to introduce errors) so I don't think I would like BlitzMax or Monkey either.
I'm just doing my own thing, coding for fun and hopefully I'll end up with a useful product and get head-hunted by Apple or someone. Very Happy I realise there's little if any money in compilers these days as the most fully-featured ones (GCC, CLang) are "open-source" so they've undercut all the proprietary BASICs.
I'm probably going to write my own IDE - Protean IDE looks like abandonware that's tied to old versions of Windows. Sad
Post 09 Oct 2017, 20:50
View user's profile Send private message Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 15302
Location: Bigweld Industries

ProphetOfDoom wrote:
I realise there's little if any money in compilers these days as the most fully-featured ones (GCC, CLang) are "open-source" so they've undercut all the proprietary BASICs.

Hehe, yeah. There's no money in software at all these days. It's all about the data. Make sure your compiler can collect "telemetry", and start making the big bucks by giving the compiler away for free and selling all the collected data. Twisted Evil
Post 09 Oct 2017, 20:54
View user's profile Send private message Visit poster's website Reply with quote
ProphetOfDoom



Joined: 08 Aug 2008
Posts: 120
Location: UK
"Telemetry" even sounds like a crime. Compare "larceny", "buggery" etc.. Lool
Post 09 Oct 2017, 21:35
View user's profile Send private message Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 15302
Location: Bigweld Industries

ProphetOfDoom wrote:
"Telemetry" even sounds like a crime.

IMO it should be classed as a crime.
Post 10 Oct 2017, 05:16
View user's profile Send private message Visit poster's website Reply with quote
vivik



Joined: 29 Oct 2016
Posts: 190
>giving the compiler away for free and selling all the collected data

examples? I know that unity does that, every game made with it. Steam actually shares this info, it's somewhat useful.
Post 10 Oct 2017, 07:53
View user's profile Send private message Reply with quote
ProphetOfDoom



Joined: 08 Aug 2008
Posts: 120
Location: UK
It seems like I spoke too soon when I said there's no money in compilers. If there's a lot of legacy code around, developers can still cash in. Look at this list of organisations using "PowerBasic" (and it's Windows only!!!"):

https://www.powerbasic.com/who.php
Post 10 Oct 2017, 12:58
View user's profile Send private message Reply with quote
vivik



Joined: 29 Oct 2016
Posts: 190
By the way, I'm dumb and it's possible to get rid of those dll by linking them in statically. It will also remove some unused code too, I think. It's not ideal though, compilers can exclude functions that are never called, but they can't really determine if some code is ever executed or not. There may be license issues too.
Post 16 Oct 2017, 12:18
View user's profile Send private message Reply with quote
vivik



Joined: 29 Oct 2016
Posts: 190
Wish it could generate 32bit asm. It's probably outdated by now though. I probably care about old (if 10 years is old) computers more than I should.
Post 07 Nov 2017, 12:38
View user's profile Send private message Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  
Goto page Previous  1, 2

< Last Thread | Next Thread >

Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001-2005 phpBB Group.

Main index   Download   Documentation   Examples   Message board
Copyright © 2004-2016, Tomasz Grysztar.