flat assembler
Message board for the users of flat assembler.

Index > 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
ProphetOfDoom 07 Oct 2017, 18:15
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
ProphetOfDoom 07 Oct 2017, 18:27
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
ProphetOfDoom 07 Oct 2017, 18:44
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: 671
vivik 07 Oct 2017, 19:21
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
ProphetOfDoom 07 Oct 2017, 19:48
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: 671
vivik 07 Oct 2017, 21:24
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: 671
vivik 08 Oct 2017, 06:39
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 Started: 0000000000400000 C:\Users\User\Downloads\DonJuan\a.exe

Breakpoint at 0000000000401000 (entry breakpoint) set!
DLL Loaded: 00000000777F0000 C:\Windows\System32\ntdll.dll
DLL Loaded: 00000000776D0000 C:\Windows\System32\kernel32.dll
DLL Loaded: 0000000000160000 C:\Windows\System32\KernelBase.dll

DLL Loaded: 000000006C540000 C:\Users\User\Downloads\DonJuan\libkoshka.core.dll
DLL Loaded: 0000000000420000 C:\Windows\System32\msvcrt.dll
DLL Loaded: 00000000775D0000 C:\Windows\System32\user32.dll
DLL Loaded: 00000000004C0000 C:\Windows\System32\gdi32.dll
DLL Loaded: 0000000000020000 C:\Windows\System32\lpk.dll
DLL Loaded: 0000000000530000 C:\Windows\System32\usp10.dll

DLL Loaded: 00000000685C0000 C:\Users\User\Downloads\DonJuan\libglib-2.0-0.dll
DLL Loaded: 0000000000600000 C:\Windows\System32\advapi32.dll
DLL Loaded: 00000000001D0000 C:\Windows\System32\sechost.dll
DLL Loaded: 00000000006E0000 C:\Windows\System32\rpcrt4.dll
DLL Loaded: 0000000000810000 C:\Windows\System32\ole32.dll

DLL Loaded: 0000000064940000 D:\Haskell\8.2.1\mingw\bin\libwinpthread-1.dll
DLL Loaded: 0000000000A20000 C:\Windows\System32\shell32.dll
DLL Loaded: 00000000017B0000 C:\Windows\System32\shlwapi.dll
DLL Loaded: 00000000003A0000 C:\Windows\System32\ws2_32.dll
DLL Loaded: 00000000001F0000 C:\Windows\System32\nsi.dll

DLL Loaded: 0000000061CC0000 C:\Users\User\Downloads\DonJuan\libintl-8.dll
DLL Loaded: 0000000066000000 C:\Users\User\Downloads\DonJuan\libiconv-2.dll
DLL Loaded: 0000000069140000 C:\Users\User\Downloads\DonJuan\libpcre-1.dll

DLL Loaded: 000000006A040000 C:\Users\User\Downloads\DonJuan\libkoshka.mm.dll

DLL Loaded: 000000006FC40000 D:\Haskell\8.2.1\mingw\bin\libstdc++-6.dll

DLL Loaded: 0000000061440000 D:\Haskell\8.2.1\mingw\bin\libgcc_s_seh-1.dll
DLL Loaded: 000000006ED80000 C:\Users\User\Downloads\DonJuan\glew32.dll
DLL Loaded: 0000000001830000 C:\Windows\System32\opengl32.dll
DLL Loaded: 0000000000200000 C:\Windows\System32\glu32.dll
DLL Loaded: 0000000001950000 C:\Windows\System32\ddraw.dll
DLL Loaded: 00000000003F0000 C:\Windows\System32\dciman32.dll
DLL Loaded: 0000000001A50000 C:\Windows\System32\setupapi.dll
DLL Loaded: 0000000001C30000 C:\Windows\System32\cfgmgr32.dll
DLL Loaded: 0000000001C70000 C:\Windows\System32\oleaut32.dll
DLL Loaded: 0000000001D50000 C:\Windows\System32\devobj.dll
DLL Loaded: 0000000001D70000 C:\Windows\System32\dwmapi.dll

DLL Loaded: 000000006C740000 C:\Users\User\Downloads\DonJuan\SDL2.dll
DLL Loaded: 0000000001D90000 C:\Windows\System32\imm32.dll
DLL Loaded: 0000000001DC0000 C:\Windows\System32\msctf.dll
DLL Loaded: 0000000001ED0000 C:\Windows\System32\version.dll
DLL Loaded: 0000000001EE0000 C:\Windows\System32\winmm.dll

DLL Loaded: 000000006A880000 C:\Users\User\Downloads\DonJuan\SDL2_image.dll

DLL Loaded: 000000006B800000 C:\Users\User\Downloads\DonJuan\libjpeg-8.dll

DLL Loaded: 0000000068B40000 C:\Users\User\Downloads\DonJuan\libpng16-16.dll

DLL Loaded: 0000000062E80000 C:\Users\User\Downloads\DonJuan\zlib1.dll

DLL Loaded: 0000000068EC0000 C:\Users\User\Downloads\DonJuan\libtiff-5.dll

DLL Loaded: 0000000063CC0000 C:\Users\User\Downloads\DonJuan\liblzma-5.dll

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

DLL Loaded: 000000006FB00000 C:\Users\User\Downloads\DonJuan\libSDL2_mixer-2-0-0.dll

DLL Loaded: 000000006E1C0000 C:\Users\User\Downloads\DonJuan\libmad-0.dll

DLL Loaded: 0000000071000000 C:\Users\User\Downloads\DonJuan\SDL2_ttf.dll

DLL Loaded: 00000000693C0000 C:\Users\User\Downloads\DonJuan\libfreetype-6.dll

DLL Loaded: 00000000626C0000 C:\Users\User\Downloads\DonJuan\libbz2-1.dll

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

DLL Loaded: 0000000070540000 C:\Users\User\Downloads\DonJuan\libgraphite2.dll

System breakpoint reached! (this is the entry point, finally)    


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: 671
vivik 08 Oct 2017, 06:44
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
ProphetOfDoom 08 Oct 2017, 13:39
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: 671
vivik 09 Oct 2017, 08:52
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
ProphetOfDoom 09 Oct 2017, 16:55
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
ProphetOfDoom 09 Oct 2017, 20:50
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: 20289
Location: In your JS exploiting you and your system
revolution 09 Oct 2017, 20:54
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
ProphetOfDoom 09 Oct 2017, 21:35
"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: 20289
Location: In your JS exploiting you and your system
revolution 10 Oct 2017, 05:16
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: 671
vivik 10 Oct 2017, 07:53
>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
ProphetOfDoom 10 Oct 2017, 12:58
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: 671
vivik 16 Oct 2017, 12:18
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: 671
vivik 07 Nov 2017, 12:38
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


Copyright © 1999-2024, Tomasz Grysztar. Also on GitHub, YouTube.

Website powered by rwasa.