Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Topics - erico

#41
Off Topic / New platforms
2016-Apr-02
I know most of you are skeptical about adding more platforms to GLBasic but, since we had access to the source code, I thought why not try to add one of my preferable ones?

Early today I finally managed to output code to the INTELBRAS TS-40 phone, and it is working flawlessly, even 3d.
Tomorrow I´m going to submit changes to Gernot and Spacefractal so we can properly add it to the already great set of supported platforms.

 
#42
Was this posted before?
Tool to auto create some kind of pixel art sprites for games.
https://github.com/zfedoran/pixel-sprite-generator

And here a description of the algorithm, quite nice idea!
http://web.archive.org/web/20080228054410/http://www.davebollinger.com/works/pixelspaceships/
#43
Hello chaps, maybe you find this interesting:
http://gkanold.wix.com/homeputerium#!basic-tenliners-2016/c450

8-bit 10 liner basic competition, looks like the kind of event directed to squeezes single malt out of a rock. :)
Only for the old computers though, but I know some people around here do play the 8bit basic once in a while.

Here a boulder dash clone by Jim.
http://jimgerrie.blogspot.ca/2016/01/january-2016-retrochallenge-7-new-10.html

I wonder what the same contest rules would create on a modern Basic like ours.
#44
I have been very anxious waiting for this release, it should be up on the page this friday but Loco is uploading the extras, like manuals and so on, I can´t wait!
http://www.locomalito.com/es/curse_of_issyos.php
#45
Main window is not displaying and so aren´t many button images, sometimes it flicks a bit.
I don´t know where is that coming from, usually rebooting the machine fixes it for a while.

I have done a full reinstall + web update and get the same thing.
Anyone seeing it too?
#46
Like the title said, whenever I import an obj into GLB (with the built ddd converter) I get it shaded like 100% luminosity and 0% diffuse (as in a 3d package), so it is always fully lit no matter what and it dosen´t get affected by any light at all.
Am I missing something?

You can test it with the project I uploaded here:
http://www.glbasic.com/forum/index.php?topic=10525.30

It is the GLB3D.zip file.
Just turn off the fog as I used that to give a sense of shading.

PS: Is there a way I can link to that file without having to re-upload it?
#47
From the discussions we had here:
http://www.glbasic.com/forum/index.php?topic=9675.0

At some point, I thought to do a dungeon crawler visualization in 2d to boot.
Just some exercise.

Here the code, and the appended full project+compiled pc version + a screen shot.
Be aware that the way I did is rough coding, but hopefully this will give a head start/example should you strive for the same or similar. :good:

Currently only the first top left player is controllable with:
WASD as north,strife east,south,strife west.
QE as rotation.
RF as up and down.

Can we advance this?
Cheers.

Code (glbasic) Select
// --------------------------------- //
// Project: MATCHY ADV
// Start: Thursday, November 12, 2015
// IDE Version: 14.006


// --- BOOT
SETSCREEN 680,400,0 ;// final resolution
CREATESCREEN 0,0,170,100 ;// player view set to sprite 0
SMOOTHSHADING FALSE

// --- VARIABLES
GLOBAL ft ;// for/next timer/player set (1-4)
GLOBAL world[] ;// world 3d array
DIM world[61][61][61]
GLOBAL fov[] ;// fov 3d array
DIM fov[5][5][5]
GLOBAL wx,wy,wz ;// for/next world scanner
DIM px[5]; DIM py[5]; DIM pz[5] ;// players position
DIM pf[5] ;// players face direction (1-4) 1 north
GLOBAL px[], py[], pz[], pf[]

// --- LOAD ASSETS
SETCURRENTDIR("Media") ;// go to media files
LOADSPRITE "GUIDE BKG.png",1 ;// load background guide
LOADANIM "BLK001.png",2,170,100 ;// load block sprites
LOADANIM "FOG.png",3,170,100 ;// load depth fog


// --- WORLD GENERATION
FOR wx=5 TO 55
FOR wy=5 TO 55
FOR wz=5 TO 55
IF RND(4)=1 THEN world[wx][wy][wz]=1 ;// ramdom plot block
NEXT
NEXT
NEXT

// --- HARDCODE PLAYER POSITION
px[1]=25 ; py[1]=25 ; pz[1]=55 ;// set player 1 coord
pf[1]=1 ;// set player 1 orientation
px[2]=24 ; py[2]=25 ; pz[2]=55 ;// set player 2 coord
pf[2]=1 ;// set player 2 orientation
px[3]=23 ; py[3]=25 ; pz[3]=55 ;// set player 3 coord
pf[3]=1 ;// set player 3 orientation
px[4]=26 ; py[4]=25 ; pz[4]=55 ;// set player 4 coord
pf[4]=1 ;// set player 4 orientation
FOR wx=22 TO 27 ;// clear players start room
FOR wy=25 TO 27
FOR wz=52 TO 55
world[wx][wy][wz]=0
NEXT
NEXT
NEXT
FOR wx=22 TO 27
FOR wz=52 TO 55
world[wx][24][wz]=1
NEXT
NEXT

// ------------------------------------------------------------------------- MAIN LOOP
WHILE TRUE

// --- DISPLAY
FOR ft=1 TO 4 ;// loop through players
USESCREEN 0 ;// use virtual screen
DRAWSPRITE 1,0,0 ;// draw bkg guide

// --- DUMP FOV ARRAY
IF pf[ft]=1 ;// check orientation north
FOR wx=0 TO 4 ;// dump
FOR wy=0 TO 4
FOR wz=0 TO 4
fov[wx][wy][wz]=world[px[ft]+wx-2][py[ft]+wy-2][pz[ft]-wz]
NEXT
NEXT
NEXT
ENDIF

IF pf[ft]=2 ;// check orientation east
FOR wx=0 TO 4 ;// dump
FOR wy=0 TO 4
FOR wz=0 TO 4
fov[wx][wy][wz]=world[px[ft]+wz][py[ft]+wy-2][pz[ft]+wx-2]
NEXT
NEXT
NEXT
ENDIF
//
IF pf[ft]=3 ;// check orientation south
FOR wx=0 TO 4 ;// dump
FOR wy=0 TO 4
FOR wz=0 TO 4
fov[wx][wy][wz]=world[px[ft]-wx+2][py[ft]+wy-2][pz[ft]+wz]
NEXT
NEXT
NEXT
ENDIF

IF pf[ft]=4 ;// check orientation west
FOR wx=0 TO 4 ;// dump
FOR wy=0 TO 4
FOR wz=0 TO 4
fov[wx][wy][wz]=world[px[ft]-wz][py[ft]+wy-2][pz[ft]-wx+2]
NEXT
NEXT
NEXT
ENDIF

// --- DRAW FOV [layer4]
IF fov[0][4][4]=1 THEN STRETCHANIM 2,0,0,0,170,100
IF fov[1][4][4]=1 THEN STRETCHANIM 2,1,0,0,170,100
IF fov[4][4][4]=1 THEN STRETCHANIM 2,0,170,0,-170,100
IF fov[3][4][4]=1 THEN STRETCHANIM 2,1,170,0,-170,100
IF fov[2][4][4]=1 THEN STRETCHANIM 2,2,0,0,170,100

IF fov[0][3][4]=1 THEN STRETCHANIM 2,3,0,0,170,100
IF fov[1][3][4]=1 THEN STRETCHANIM 2,4,0,0,170,100
IF fov[4][3][4]=1 THEN STRETCHANIM 2,3,170,0,-170,100
IF fov[3][3][4]=1 THEN STRETCHANIM 2,4,170,0,-170,100
IF fov[2][3][4]=1 THEN STRETCHANIM 2,5,0,0,170,100

IF fov[0][0][4]=1 THEN STRETCHANIM 2,0,0,100,170,-100 ;// mirror down
IF fov[1][0][4]=1 THEN STRETCHANIM 2,1,0,100,170,-100
IF fov[4][0][4]=1 THEN STRETCHANIM 2,0,170,100,-170,-100
IF fov[3][0][4]=1 THEN STRETCHANIM 2,1,170,100,-170,-100
IF fov[2][0][4]=1 THEN STRETCHANIM 2,2,0,100,170,-100

IF fov[0][1][4]=1 THEN STRETCHANIM 2,3,0,100,170,-100
IF fov[1][1][4]=1 THEN STRETCHANIM 2,4,0,100,170,-100
IF fov[4][1][4]=1 THEN STRETCHANIM 2,3,170,100,-170,-100
IF fov[3][1][4]=1 THEN STRETCHANIM 2,4,170,100,-170,-100
IF fov[2][1][4]=1 THEN STRETCHANIM 2,5,0,100,170,-100

IF fov[0][2][4]=1 THEN STRETCHANIM 2,6,0,0,170,100 ;// in the midium!!
IF fov[1][2][4]=1 THEN STRETCHANIM 2,7,0,0,170,100
IF fov[4][2][4]=1 THEN STRETCHANIM 2,6,170,0,-170,100
IF fov[3][2][4]=1 THEN STRETCHANIM 2,7,170,0,-170,100
IF fov[2][2][4]=1 THEN STRETCHANIM 2,8,0,0,170,100
DRAWANIM 3,3,0,0 ;// hardfog
// --- DRAW FOV [layer3]
IF fov[0][4][3]=1 THEN STRETCHANIM 2,9,0,0,170,100
IF fov[1][4][3]=1 THEN STRETCHANIM 2,10,0,0,170,100
IF fov[4][4][3]=1 THEN STRETCHANIM 2,9,170,0,-170,100
IF fov[3][4][3]=1 THEN STRETCHANIM 2,10,170,0,-170,100
IF fov[2][4][3]=1 THEN STRETCHANIM 2,11,0,0,170,100

IF fov[0][3][3]=1 THEN STRETCHANIM 2,12,0,0,170,100
IF fov[1][3][3]=1 THEN STRETCHANIM 2,13,0,0,170,100
IF fov[4][3][3]=1 THEN STRETCHANIM 2,12,170,0,-170,100
IF fov[3][3][3]=1 THEN STRETCHANIM 2,13,170,0,-170,100
IF fov[2][3][3]=1 THEN STRETCHANIM 2,14,0,0,170,100

IF fov[0][0][3]=1 THEN STRETCHANIM 2,9,0,100,170,-100 ;// mirror down
IF fov[1][0][3]=1 THEN STRETCHANIM 2,10,0,100,170,-100
IF fov[4][0][3]=1 THEN STRETCHANIM 2,9,170,100,-170,-100
IF fov[3][0][3]=1 THEN STRETCHANIM 2,10,170,100,-170,-100
IF fov[2][0][3]=1 THEN STRETCHANIM 2,11,0,100,170,-100

IF fov[0][1][3]=1 THEN STRETCHANIM 2,12,0,100,170,-100
IF fov[1][1][3]=1 THEN STRETCHANIM 2,13,0,100,170,-100
IF fov[4][1][3]=1 THEN STRETCHANIM 2,12,170,100,-170,-100
IF fov[3][1][3]=1 THEN STRETCHANIM 2,13,170,100,-170,-100
IF fov[2][1][3]=1 THEN STRETCHANIM 2,14,0,100,170,-100

IF fov[0][2][3]=1 THEN STRETCHANIM 2,15,0,0,170,100 ;// in the midium!!
IF fov[1][2][3]=1 THEN STRETCHANIM 2,16,0,0,170,100
IF fov[4][2][3]=1 THEN STRETCHANIM 2,15,170,0,-170,100
IF fov[3][2][3]=1 THEN STRETCHANIM 2,16,170,0,-170,100
IF fov[2][2][3]=1 THEN STRETCHANIM 2,17,0,0,170,100
DRAWANIM 3,2,0,0 ;// midfog
// --- DRAW FOV [layer2]
IF fov[0][4][2]=1 THEN STRETCHANIM 2,18,0,0,170,100
IF fov[1][4][2]=1 THEN STRETCHANIM 2,19,0,0,170,100
IF fov[4][4][2]=1 THEN STRETCHANIM 2,18,170,0,-170,100
IF fov[3][4][2]=1 THEN STRETCHANIM 2,19,170,0,-170,100
IF fov[2][4][2]=1 THEN STRETCHANIM 2,20,0,0,170,100

IF fov[0][3][2]=1 THEN STRETCHANIM 2,21,0,0,170,100
IF fov[1][3][2]=1 THEN STRETCHANIM 2,22,0,0,170,100
IF fov[4][3][2]=1 THEN STRETCHANIM 2,21,170,0,-170,100
IF fov[3][3][2]=1 THEN STRETCHANIM 2,22,170,0,-170,100
IF fov[2][3][2]=1 THEN STRETCHANIM 2,23,0,0,170,100

IF fov[0][0][2]=1 THEN STRETCHANIM 2,18,0,100,170,-100 ;// mirror down
IF fov[1][0][2]=1 THEN STRETCHANIM 2,19,0,100,170,-100
IF fov[4][0][2]=1 THEN STRETCHANIM 2,18,170,100,-170,-100
IF fov[3][0][2]=1 THEN STRETCHANIM 2,19,170,100,-170,-100
IF fov[2][0][2]=1 THEN STRETCHANIM 2,20,0,100,170,-100

IF fov[0][1][2]=1 THEN STRETCHANIM 2,21,0,100,170,-100
IF fov[1][1][2]=1 THEN STRETCHANIM 2,22,0,100,170,-100
IF fov[4][1][2]=1 THEN STRETCHANIM 2,21,170,100,-170,-100
IF fov[3][1][2]=1 THEN STRETCHANIM 2,22,170,100,-170,-100
IF fov[2][1][2]=1 THEN STRETCHANIM 2,23,0,100,170,-100

IF fov[0][2][2]=1 THEN STRETCHANIM 2,24,0,0,170,100 ;// in the midium!!
IF fov[1][2][2]=1 THEN STRETCHANIM 2,25,0,0,170,100
IF fov[4][2][2]=1 THEN STRETCHANIM 2,24,170,0,-170,100
IF fov[3][2][2]=1 THEN STRETCHANIM 2,25,170,0,-170,100
IF fov[2][2][2]=1 THEN STRETCHANIM 2,26,0,0,170,100
DRAWANIM 3,1,0,0 ;// lightfog
// --- DRAW FOV [layer1]
IF fov[0][3][1]=1 THEN STRETCHANIM 2,27,0,0,170,100
IF fov[1][3][1]=1 THEN STRETCHANIM 2,28,0,0,170,100
IF fov[4][3][1]=1 THEN STRETCHANIM 2,27,170,0,-170,100
IF fov[3][3][1]=1 THEN STRETCHANIM 2,28,170,0,-170,100
IF fov[2][3][1]=1 THEN STRETCHANIM 2,29,0,0,170,100

IF fov[0][1][1]=1 THEN STRETCHANIM 2,27,0,100,170,-100 ;// mirror down
IF fov[1][1][1]=1 THEN STRETCHANIM 2,28,0,100,170,-100
IF fov[4][1][1]=1 THEN STRETCHANIM 2,27,170,100,-170,-100
IF fov[3][1][1]=1 THEN STRETCHANIM 2,28,170,100,-170,-100
IF fov[2][1][1]=1 THEN STRETCHANIM 2,29,0,100,170,-100

IF fov[0][2][1]=1 THEN STRETCHANIM 2,30,0,0,170,100 ;// in the midium!!
IF fov[1][2][1]=1 THEN STRETCHANIM 2,31,0,0,170,100
IF fov[4][2][1]=1 THEN STRETCHANIM 2,30,170,0,-170,100
IF fov[3][2][1]=1 THEN STRETCHANIM 2,31,170,0,-170,100
DRAWANIM 3,0,0,0 ;// super lightfog
IF fov[2][2][1]=1 THEN STRETCHANIM 2,32,0,0,170,100

// --- DRAW FOV [layer0]

IF fov[1][3][0]=1 THEN STRETCHANIM 2,33,0,0,170,100
IF fov[3][3][0]=1 THEN STRETCHANIM 2,33,170,0,-170,100
IF fov[2][3][0]=1 THEN STRETCHANIM 2,34,170,0,-170,100

IF fov[1][1][0]=1 THEN STRETCHANIM 2,33,0,100,170,-100 ;// mirror down
IF fov[3][1][0]=1 THEN STRETCHANIM 2,33,170,100,-170,-100
IF fov[2][1][0]=1 THEN STRETCHANIM 2,34,170,100,-170,-100

IF fov[1][2][0]=1 THEN STRETCHANIM 2,35,0,0,170,100 ;// in the midium!!
IF fov[3][2][0]=1 THEN STRETCHANIM 2,35,170,0,-170,100






PRINT "X="+px[ft],2,2 ;// player info
PRINT "Y="+py[ft],2,10
PRINT "Z="+pz[ft],2,18
PRINT "F="+pf[ft],2,26
// PRINT "2BA="+world[px[1]][py[1]][pz[1]-2],2,34
// PRINT "FOV="+fov[2][2][2],2,42



// ---
USESCREEN -1 ;// use backbuffer
IF ft=1 THEN ZOOMSPRITE 0,84,50,2,2 ;// scale output pl1
IF ft=2 THEN ZOOMSPRITE 0,424,50,2,2 ;// scale output pl2
IF ft=3 THEN ZOOMSPRITE 0,84,250,2,2 ;// scale output pl3
IF ft=4 THEN ZOOMSPRITE 0,424,250,2,2 ;// scale output pl4
IF ft=4 THEN DRAWRECT 338,0,3,400,RGB(126,126,126) ;// hud
IF ft=4 THEN DRAWRECT 0,198,680,3,RGB(126,126,126) ;// hud
NEXT
// --- CONTROLS
IF KEY(17)=1 ;// advance
IF pf[1]=1 THEN pz[1]=pz[1]-1
IF pf[1]=2 THEN px[1]=px[1]+1
IF pf[1]=3 THEN pz[1]=pz[1]+1
IF pf[1]=4 THEN px[1]=px[1]-1
SLEEP 200
ENDIF
IF KEY(31)=1 ;// retreat
IF pf[1]=1 THEN pz[1]=pz[1]+1
IF pf[1]=2 THEN px[1]=px[1]-1
IF pf[1]=3 THEN pz[1]=pz[1]-1
IF pf[1]=4 THEN px[1]=px[1]+1
SLEEP 200
ENDIF
IF KEY(32)=1 ;// strife right
IF pf[1]=1 THEN px[1]=px[1]+1
IF pf[1]=2 THEN pz[1]=pz[1]+1
IF pf[1]=3 THEN px[1]=px[1]-1
IF pf[1]=4 THEN pz[1]=pz[1]-1
SLEEP 200
ENDIF
IF KEY(30)=1 ;// strife left
IF pf[1]=1 THEN px[1]=px[1]-1
IF pf[1]=2 THEN pz[1]=pz[1]-1
IF pf[1]=3 THEN px[1]=px[1]+1
IF pf[1]=4 THEN pz[1]=pz[1]+1
SLEEP 200
ENDIF
IF KEY(18)=1 ;// rotate right
pf[1]=pf[1]+1
IF pf[1]=5 THEN pf[1]=1
SLEEP 200
ENDIF
IF KEY(16)=1 ;// rotate left
pf[1]=pf[1]-1
IF pf[1]=0 THEN pf[1]=4
SLEEP 200
ENDIF
IF KEY(19)=1 ;// up
py[1]=py[1]+1
SLEEP 200
ENDIF
IF KEY(33)=1 ;// down
py[1]=py[1]-1
SLEEP 200
ENDIF
// --- POSITION LIMITS
IF px[1]<5 THEN px[1]=5
IF px[1]>55 THEN px[1]=55
IF py[1]<5 THEN py[1]=5
IF py[1]>55 THEN py[1]=55
IF pz[1]<5 THEN pz[1]=5
IF pz[1]>55 THEN pz[1]=55

// --- DEBUG HUD

SHOWSCREEN
WEND
// ------------------------------------------------------------------------- MAIN LOOP [END]
#48
I just tested v14 compilation on mac and I get the following attached error.
Tried on the v12 too and here it dosen´t compile at all, I get an error on the GLB console, the usual contact the forum.
Is anyone getting these too?
#49
They generate no files on my end, anyone getting the same?
Is there something I should do before it works?

First time HTML5 compiling said something about getting ready and that it could take a long time (coffee?)
But it didn´t last long at all.

I can post both logs, they are very huge.
#50
DRAWRECT stutters when in animation, don´t know if this is new as I never tried that command on a Caanoo till now.

About the rest, I have more or less this to display stuff on my code
Code (glbasic) Select
CREATESCREEN 1,200,428,240 ;// Virtual Screen

// --- STANDARD SETS
IF comp=0 THEN SETSCREEN 320,240,0 ;// Caanoo
IF comp=0 THEN DRAWSPRITE 200,-54,0                         ;// Caanoo


What I get on screen is the game without those -54 on the drawsprite, they are like 0.
I appended a crap pic.

Of course all works fine as expected on the PC
#51
GLBasic - en / Static
2015-Aug-10
We have STATIC command inside GLB, I wonder out of curiosity if it can be used as this nice article states:
http://hackaday.com/2015/08/04/embed-with-elliot-the-static-keyword-you-dont-fully-understand/#more-164040
#52
Hello chaps and moderators, maybe you guys can sort this out?
I just got the following email from Panno Grabowski:

Quotehi erico ,

unfortunately i cant login anymoore , i try also a new account but i get no email from gernot.
please help me and make thread in the forum so i can come back.

mfg plasma
Von meinem iPad gesendet

Is there anything that can be done about it?
#53
Hey chaps,

check this game out:
http://www.beadybox.com/falafel/

Really special stuff, clever mechanics, incremental gameplay, a la metroid but not much of backtracking. If you would like the likes of La Mulana or Cave Story, this is for you.
The effects are super great, half sprites, half a particle system to erase stuff randomly, it gives a unique look to each one.

Music is superb, check the ~24 musics on the game folder. Done by Reed Richards.
All in mod format so you can see its 4 channel construction and the samples of chip tune.
#13 and 17 are alwesome.

have fun

#54
Off Topic / Desura
2015-Jun-05
Hello chaps,

I´ve heard about late payments from Desura to devs since a while ago.
Latest news report their owner filed bankrupcy.
Here:
http://www.rockpapershotgun.com/2015/06/05/desura-bankruptcy-bad-juju-games/#more-293199

We do have a few friends here selling their games over that store,
It would be interesting to hear what they have to say, did you run into any trouble?

Well, that is bad, I always thought good about Desura from the start.

Do we only have itch.io and humble bundle store left besides Steam?
#55
I noticed a couple days off on the forum,
I sent msg to Ian, Space an Gernot.

Gernot´s email bounced back, is all ok?

I see some news post as 14th april, did we loose something?
#56
Hi chaps!

I just recompiled glbasic source and added support for the gamebuino.
Gamebuino here:
http://gamebuino.com/

It was all really easy, and now we can deploy our game to this marvelous 2kb monochrome handheld! :good:
Here is the already-usual-proof-pic!

#57
Off Topic / Story of Mel
2015-Mar-16
Saw this at the pandora boards, thought to share with us, I like it a lot.
http://www.catb.org/jargon/html/story-of-mel.html
Great read for coders.

And Yeah, I´m sure coding is a form of art. :good:
#58
You might now already but finally FINALLY Sanchez released a Castlevania game for the zx spectrum 128.
It was supposed to be a version but it turned out to be a complete game.
Music is by the awesome Darkman007.

The game is really great, you guys should check it out.
http://spectralinterlude.com/
#59
Hello, here a snippet that deals control on keyboard/joy/pad/touch.
The important part is the touch control as it gives a more human way to operate it.

I´m reading 2 mouses here considering primarily the last touch but not forgetting the one before that is kept pressed.

Unfortunantly this is not a full example but a code taken from my game, so it dosen´t work out of the box, you have to interpret it. :good:
Code (glbasic) Select
// --------------------------------- //
// Project: HT_AVOCADO_MAYHEM
// Start: Friday, May 23, 2014
// Source: HI

SUB HI:

// ------------------------------------------------------------------------------------------------------------------- HUMAN INTERFACES

IF control=1 OR control=3
j0=GETJOYX(0)
IF j0>0.991 THEN j0=1 ;// Set to 1 on pad
IF j0<-0.991 THEN j0=-1
IF j0>0.25 OR j0<-0.25 ;// Set analog
ppx=INTEGER(j0*10.0)/10.0*2.4
ELSE
ppx=0
ENDIF
IF GETJOYBUTTON(0,0)>0 ;// BUTTON caanoo 0
but=1
ELSE
but=0
ENDIF
ENDIF
IF control=2
j0=GETJOYX(1)
IF j0<=-0.05 OR j0>=0.05
ppx=INTEGER(j0*100.0)/100.0*10

IF ppx>=2.4 THEN ppx=2.4
IF ppx<=-2.4 THEN ppx=-2.4
ELSE
ppx=0
ENDIF
IF GETJOYBUTTON(0,0)>0 ;// BUTTON caanoo 0
but=1
ELSE
but=0
ENDIF
ENDIF
IF control=4 ;// KEYBOARD
j0=0
IF KEY(205)=1 THEN j0=1.25
IF KEY(203)=1 THEN j0=-1.25
IF KEY(205)=1 AND KEY(203)=1 THEN j0=0
IF j0>0.2 OR j0<-0.2
ppx=INTEGER(j0*10.0)/10.0*2
ELSE
ppx=0
ENDIF
IF KEY(200)=1 ;// BUTTON key up
but=1
ELSE
but=0
ENDIF
ENDIF
IF control=5
j0=GETJOYX(0)
IF j0<=-0.001 OR j0>=0.001
ppx=INTEGER(j0*100.0)/100.0*10

IF ppx>=2.4 THEN ppx=2.4
IF ppx<=-2.4 THEN ppx=-2.4
ELSE
ppx=0
ENDIF

j1=GETJOYY(0) ;//jump strange?
IF j1>-.65
but=1
ELSE
but=0
ENDIF
ENDIF

//--- TOUCH SCREEN CONTROL - ANDROIDS
IF control=6

SETACTIVEMOUSE 0 ;// READ MOUSE A
MOUSESTATE mouax,mouay,mouaa,mouab

SETACTIVEMOUSE 1 ;// READ MOUSE B
MOUSESTATE moubx,mouby,mouba,moubb

;//--- TOUCH DETECT
IF comp=4 OR comp=10
IF mouaa=1 AND mouba=0 OR mouaa=1 AND mouba=1 AND moun=0 ;// FIRST MOUSE ---
IF mouax<tcxa AND mouay>tcy THEN j0=-1.25 ;// walk left
IF mouax>tcxb AND mouay>tcy THEN j0=1.25 ;// walk right

IF mouay<=tcy ;// jump
but=1
IF mouax<tcxa THEN j0=-1.25
IF mouax>tcxb THEN j0=1.25
ELSE
but=0
ENDIF

IF mouaa=1 AND mouba=0 THEN moun=1 ;// manten MOUN quando duplo apertado
IF mouaa=1 AND mouba=1 AND moun=0 THEN moun=0

ENDIF

IF mouba=1 AND mouaa=0 OR mouba=1 AND mouaa=1 AND moun=1 ;// SECOND MOUSE ---
IF moubx<tcxa AND mouby>tcy AND mouba=1 THEN j0=-1.25 ;// walk left
IF moubx>tcxb AND mouby>tcy AND mouba=1 THEN j0=1.25 ;// walk right

IF mouby<=tcy AND mouba=1 ;// jump
but=1
IF moubx<tcxa AND mouba=1 THEN j0=-1.25
IF moubx>tcxb AND mouba=1 THEN j0=1.25
ELSE
but=0
ENDIF

IF mouba=1 AND mouaa=0 THEN moun=0 ;// manten MOUN quando duplo apertado
IF mouba=1 AND mouaa=1 AND moun=1 THEN moun=1

ENDIF

IF mouaa=1 OR mouba=1
IF j0>0.2 OR j0<-0.2 ;// define speed
ppx=INTEGER(j0*10.0)/10.0*2
ELSE
ppx=0 ; j0=0
ENDIF
ELSE
ppx=0 ; j0=0
ENDIF
ENDIF
ENDIF
// ------------------------------------------------------------------------------------------------------------------- HUMAN INTERFACES [END]

ENDSUB