BASH script VLC player

In just 15 lines of script I’ve got a fully working test player running from BASH and using the VLC player. All I need now is just a simple Java program to fetch the data from the server and if there are changes then restart the player. Ah, scripting makes life easy. From Java I can check the exit status of System.exit(status) in the bash script and act accordingly. This will speed development up a hell of a lot.

Currently the Java server is rock solid. And I do need the much needed device editor so that I can assign playlists to devices. Now that I have the player I will write a simple device manager. Probably in Qt first then I will transfer it over to mobile.

EDIT: Change that to 10 lines of script. Now to get on to a simple device manager.

EDIT 2: Initially I setup a UI in Qt, but then decided to setup the same UI in Netbeans using Swing and Java. This is mainly because the server is written in Java.

LibGdx and Overlap2D issue (and HNY!)

Oh yeah…

Happy New Year!

Anyway, just like the classic meme, I carried on from Dec 31st into Jan 1st. I did watch some fireworks on the CCTV and heard them. That was about as much as I could put up with. Definitely a grump but I don’t care.

The issue I’m having at the moment lies with the latest version of LibGdx, which is 1.9.8, and it’s animation class which doesn’t work with the Overlap2D package. That’s kind of a big ‘DAMN!’ thingy. Apparently it works with version 1.9.4 or less. I found the problem also on stackoverflow too.

Another problem is the Overlap2D website has been down for quite some time, a month or more maybe.

The project is hosted on github, but I’m as of yet unfamiliar with building it even though I’ve downloaded the source. I’ve still yet to get around to that.

So… I’m stuck…

I’ve got my scene loaded up and displaying perfectly. As soon as I add an animated sprite to the scene, it doesn’t want to work. I’ll dig deeper later on today maybe.

One thing I do like about LibGdx is, after spending a lot of time with DarkBasic Pro, many writing C++ plugins, it is much faster and smoother. The only thing I need to add is native libraries to cover all CPU’s.

EDIT:

Up until I find a solution, it’s back to Linux. I can do much more with that OS.

Problems with Overlap2D and LibGdx

Linux… Everything so far I’ve done can be done much faster on Linux when it comes to development.

Then came Overlap2D…

It runs on Linux fine for a short while, but when you really start getting into editing a level, all the graphics start to vanish on the display and all it leaves is the white bounding boxes of the level graphics. So far I cannot find a solution.

I’ve installed IntelliJ and a few other bits on Windows 10 and everything loads up fine, but it’s getting a tad late now.

I’ll report back tomorrow when I finally get something working.

I’m wondering if it is something to do with Linux’s Java and a rendering issue. If I get round to it then I might just look into it sometime over the next few days.

In the meantime, I’m going to get Overlap2D working for both Desktop and Android finally.

EDIT: Overlap2D seems to be working on Windows. Although I really do not like developing on Windows, I think it is about time I tried.

LibGdx and Overlap2D download

I had found what looked to be an awesome utility for LibGdx, Overlap2D. The problem is the website is down and for some time all I could find was the github repo for it here. Now that would be alright if I knew how to build it, only a couple of years into Java. I will get round to getting it to build and I will do another post on how to do that.

There are also plenty of other youtube videos on how to use it which without a doubt make it ‘awesome’. Such as youtube link.

However, to get overlap2d running out of the box, and as I’ve said, the main website is down. I did find buried within a forum post a dropbox link.

Ah crud, I’ve closed the link to the forum post. Instead, just for the time being, the dropbox link:

Overlap2D Java executable

Now I can get on with making use of this excellent piece of kit.

EDIT: The github forum link here.

Start menu dissappeared on Linux Mint 18.1

So, as I boot up ready to get some important emails out tonight, I found my start menu had disappeared. The bottom panel was there but no menu.

I did find that I could add start menus from the panel options, something you can’t do in Windows, but still with the three that were available, one didn’t work. And I couldn’t put it back to where it should go, in the bottom left of the panel.

I found some help: Linux Mint forums

All I needed to do was to open a terminal window, CTRL + ALT + T and enter the following:

mate-panel --reset

mintmenu --reset

And all is well again.

Thinking about it though, it might be time to reinstall Linux possibly to Ubuntu Mate. I’ll think about it at the weekend.

Just minor updates

It’s been nuts today and yesterday because the missus had an emergency. Hospital and all.

Apart from more research into various areas of coding and getting my own project back up and running, I’ve been researching. Yep, it’s been chaotic which means no programming zone. I’ve learnt a few things which is always a good thing.

Hopefully over the next couple of weeks I should have reached the 100% completion mark on my project and ready for a thorough test run. The server runs solidly, the player runs solidly but needs finishing. It’s only really now the mobile app and the media manager software that needs finishing. The cryptographic communication works just great which is something I’m happy with. Various parts of this project I will eventually release the source too, but for now it’s under wraps.

The next step is to get some bash scripts done to automate some of the management things I keep doing manually at the moment. Especially when it comes to making backups. One little script could do the lot.

Until next time.

Random update Dec 11th 2017

Well, the update of the ancient Android Studio project worked perfectly and it builds much faster and optimises better. Well made up with that. Even with a few problems with the network in work (someone had switched the router off and not told me), I finally got everything back up and running.

Tonight I have had running umpteen programs including Chrome and Android Studio (twice), as well as a 2 Gb Android emulator with ram to spare. Chuffed with this 12 Gb in my laptop now.

I’ve started an openGL ES project to test out some stuff. I will keep coming back to it because I want to not just play around with shaders, but also bench marking C++ and assembler. I know I’ll be doing this test with both ARM and x86_64. If I can run some math over bitmaps in assembler the old school way then I should be able to produce some decent effects. Especially some of the stuff I used to write on the Amiga in assembler.

Plans, plans… Fingers crossed I can stick to a night time routine and start getting some stuff done to showcase. At the moment I get home from work and get my weights and exercises done. Then I have my tea and watch an hour worth of TV. And then I try and chill out on my laptop. This chill out time trying to get some coding done can be difficult at times with the background noise of conversations that completely throw me off. I might look into getting some noise cancelling headphones.

Converting an ancient Android Studio project

Well, it’s unlikely this is going to be appreciated, but these last three days I took it up on myself, as a big challenge to convert a very old project in Android Studio and get it working with the latest gradle and CMake things. The project involves the inclusion of the ffmpeg API.

I actually tried this out in work a couple of weeks ago and failed. This time though, I created a new project from the start. The first day was getting all the source files included and getting the directories working in Android Studio. A little bit of googling and I got it.

The next two days were the big headache days. And I’m still unsure whether it is done, but at least it runs on my phone and my tablet.

Two days worth of googling with little to no help and a lot of trial and error, I managed to get the bloody thing to build. This project I had worked on in work for the last year or so. And Android Studio had gone through it’s multitude of changes and upgrades I couldn’t keep up at the time.

Anyway… It’s bed time. I’m up for work in the morning at 6am. Goosed…

Linux Thunar file manager

With all the faffing about lately with assembler at home, I remembered how easy things were when I had my Amiga 1200. On the Amiga, I used to use Directory Opus which allowed me to customise such things as compiling assembler and C files.

Image result for amiga directory opus

All those empty boxes could be custom build commands, archiving, running my own scipts, etc. Even the ones that are in the screen shot could be removed and changed for something else which I did at the time. Creating software using Directory Opus was a doddle.

I needed something exactly like those old days now. Actually I should’ve looked for this a long time ago.

I found Thunar file manager. I’ve just tested it out with a simple GCC compiling a C program and making an executable. How simple it was makes this awesome.

Image result for thunar file manager custom commands

I’m hoping I can add my custom commands to keyboard shortcuts and also group them. Apart from that it looks just like any other file manager. All I need to do is to right click or do a keyboard shortcut and any of my custom actions can be done instantly. This will make life so much easier from now on.

eg… Compile a C/C++ program and create an executable:

x86_64 assembler first steps function parameters

Okay, so far I’ve figured that there are six registers used for the first 6 parameters used in a function call. The below c program sets up the function which also uses RAX as the return value:

#include 
#include 

int asmparams(int, int, int, int, int, int);

int main(void) {
	int ret = asmparams(1, 2, 3, 4, 5, 6);
	printf("return:%d\n", ret);

	return EXIT_SUCCESS;
}

This now expects my assembler function to take 6 arguments and a return value. Below is how those first 6 arguments are used in 64 bit Unix function calls to assembler.

		section	.text

global	asmparams:function

extern	printf

printnum:
		push    rbp                             ; stack frame? x64

		push	rsi
		push	rdx
		push	rcx
		push	r8
		push	r9

        mov     rsi,rax
        mov     rdi,pf_msg 
        xor     rax,rax     
        call    printf  

        pop		r9
        pop		r8
        pop		rcx
        pop		rdx
        pop		rsi

        pop     rbp                             ; stack frame

        ret

asmparams:
		mov		rax, rdi
		call	printnum

		mov		rax, rsi
		call	printnum

		mov		rax, rdx
		call	printnum

		mov		rax, rcx
		call 	printnum

		mov		rax, r8
		call	printnum

		mov		rax, r9
		call	printnum

		mov		rax, -1		; return value
		ret

		section	.data

pf_msg	db		"%08x",10,0

When I’ve got some time to explore how the ‘Prologue’ and ‘Epilogue’, or beginning and ending of a function, I post about that. At least now parameters can be passed to assembler functions.

Things have changed a lot since the 680×0 days. Then you could use a single push/pop instruction to push/pop multiple registers.