Kompatib.probleme GP2x / PC

Previous topic - Next topic

4pac

Hallo Forumsfreunde!

Ich hab da mal ein Problem, weiß gar net Recht wie ich das betiteln soll.

Ich bin mit der Demo von GLBasic zugange und entwickle ein kleines Tool zum Icons Pixeln für die GP2x. Entwickelt wird unter WinXP, mit 320x240 px als Auflösung für das Projekt. Da läuft das Proggy auch so wie gedacht. Auf der GP2x hingegen funktionieren ein paar Sachen nicht so wie sie sollten.

1. Die mittels SetPixel gezeichnete 1:1 Preview dessen, was man im vergrößerten Arbeitsbereich malt, wird nicht an der im Programm angegebenen Stelle gezeichnet, sondern irgendwie höher und weiter links, und mit starkem flackern (dadurch kaum erkennbar)

2. Das Abbrechen des Programmes durch Drücken der beiden Schultertasten gleichzeitig geht nicht

3. Die Subroutine, die für die Auswahl der Malfarbe gedacht ist, ist nicht über die Select-Taste aufrufbar (ist bisher nur ein Entwurf, die Sub, sollte aber aufrufbar sein). Ich hab aber den Eindruck, das Programm läuft irgendwie in eine Endlosschleife, sobald man die Select-Taste auf der GP2x drückt, denn ab dann läst sich das Programm nicht mehr beenden. Auf dem PC mit der TAB-Taste (der Entsprechung, so wie ich das verstehe), geht das alles korrekt

4. Beim Beenden des Programmes soll das gemalte Icon als BMP-Datei gespeichert werden. Funzt auf dem PC, auf der GP2x aber nicht.

Das macht mich ratlos. Das Tool ist ja eigentlich für die GP2x gedacht (hauptsächlich f100). Was braucht ihr an Infos, um mir dabei helfen zu können? Ich poste erstmal denn gesamten Code hier rein... wie geagt, auf dem PC unter XP läuft das alles korrekt, und nach meinem Basic-Coder-Verständnis ist das soweit auch korrekt gecodet.

Viele Grüße,
4pac

Screenshot:


Code (glbasic) Select
GLOBAL joymouse_x = 20*6 // Startwert, beliebig
GLOBAL joymouse_y = 20*6 // Startwert, beliebig
GLOBAL joyspeed = 1
GLOBAL pixelfield_size = 5
GLOBAL pixelfields_x = 32 // Gesamtzahl Pixelfelder -> Maximalwert 32, begrenzt durch´s Layout
GLOBAL pixelfields_y = 32
GLOBAL pixelnow_x = 0 // zum ansprechen des aktuell bearbeiteten Pixelfeldes
GLOBAL pixelnow_y = 0
GLOBAL malfarbe_r = 255 // zum ansprechen der aktuell verwendeten Malfarbe
GLOBAL malfarbe_g = 255
GLOBAL malfarbe_b = 255

LOADFONT "arial11.bmp", 1
SETFONT 1

DIM pixelfield_r [pixelfields_x][pixelfields_y] // Jedes Pixelfeld hat die Eigenschaften R/G/B (Farbwerte).
DIM pixelfield_g [pixelfields_x][pixelfields_y] // Diese werden über diese 3 Arrays verwaltet
DIM pixelfield_b [pixelfields_x][pixelfields_y] // (=gespeichert und ggf. manipuliert).

FOR x=0 TO pixelfields_x-1
    FOR y=0 TO pixelfields_y-1
        pixelfield_r[x][y] = 255 // Initialisieren: Zu Beginn sind alle
        pixelfield_g[x][y] = 255 // Pixelfelder weiß.
        pixelfield_b[x][y] = 255
    NEXT
NEXT

LOADBMP "gui_layout.bmp"


WHILE KEY(1) = 0 // --- START MAIN LOOP ---

// innerhalb des Mal-Bereiches bewegt sich die Joystick-Maus um die Hälfte langsamer
joyspeed = 2 // außerhalb des Mal-Bereiches
IF joymouse_x < (pixelfield_size+1) * pixelfields_x  AND joymouse_y < (pixelfield_size+1) * pixelfields_y THEN joyspeed = 1 // im Mal-Bereich

pixelnow_x = INTEGER(joymouse_x/(pixelfield_size+1)) // welches Pixelfeld hat gerade das Highlight?
pixelnow_y = INTEGER(joymouse_y/(pixelfield_size+1)) // Hier ist wohl noch der WURM drin...

// Joystick-Abfrage für die GP2x (beim PC sind das die Cursor-Tasten)
LET text$="";
IF KEY(203) ; LET text$="LINKS/LEFT";  IF joymouse_x > 0 THEN joymouse_x = joymouse_x - joyspeed; ENDIF;
IF KEY(205) ; LET text$="RECHTS/RIGHT"; IF joymouse_x < 312 THEN joymouse_x = joymouse_x + joyspeed; ENDIF;
IF KEY(200) ; LET text$="AUF/UP"; IF joymouse_y > 0 THEN joymouse_y = joymouse_y - joyspeed; ENDIF;
IF KEY(208) ; LET text$="AB/DOWN"; IF joymouse_y < 232 THEN  joymouse_y = joymouse_y + joyspeed; ENDIF;




IF joymouse_x < 190 AND joymouse_y < 190;

IF KEY(30) ; // GP2x-Taste A / PC-Taste A  /  aktuelles Pixelfeld GRÜN anmalen :-)))
LET text$="A: GRUEN"
pixelfield_r[pixelnow_x][pixelnow_y] = 0
pixelfield_g[pixelnow_x][pixelnow_y] = 155
pixelfield_b[pixelnow_x][pixelnow_y] = 0
ENDIF

IF KEY(45) ; // GP2x-Taste B / PC-Taste X /  aktuelles Pixelfeld SCHWARZ anmalen :-)))
LET text$="B: SCHWARZ"
pixelfield_r[pixelnow_x][pixelnow_y] = 0
pixelfield_g[pixelnow_x][pixelnow_y] = 0
pixelfield_b[pixelnow_x][pixelnow_y] = 0
ENDIF

IF KEY(58) ; // GP2x-Taste Y / PC-Taste CapsLock  /  aktuelles Pixelfeld WEIß anmalen :-)))
LET text$="Y: WEISS"
pixelfield_r[pixelnow_x][pixelnow_y] = 255
pixelfield_g[pixelnow_x][pixelnow_y] = 255
pixelfield_b[pixelnow_x][pixelnow_y] = 255
ENDIF

IF KEY(31) ; // GP2x-Taste X / PC-Taste S /  aktuelles Pixelfeld ROT anmalen :-)))
LET text$="X: ROT"
pixelfield_r[pixelnow_x][pixelnow_y] = 190
pixelfield_g[pixelnow_x][pixelnow_y] = 0
pixelfield_b[pixelnow_x][pixelnow_y] = 0
ENDIF

ENDIF



PRINT "JOYSTICK:",205,5;
PRINT text$,205,20;

// so landet das rote Highlight-RECT immer genau hinter einem Pixelfeld - im Mal-Bereich
hover_pos_x = joymouse_x
hover_pos_y = joymouse_y
IF MOD(joymouse_x,pixelfield_size+1) <> 0 AND joymouse_x < 192  AND joymouse_y < 192 THEN hover_pos_x = joymouse_x - (MOD(joymouse_x,6))
IF MOD(joymouse_y,pixelfield_size+1) <> 0 AND joymouse_x < 192  AND joymouse_y < 192 THEN hover_pos_y = joymouse_y - (MOD(joymouse_y,6))
DRAWRECT hover_pos_x,hover_pos_y,pixelfield_size+2,pixelfield_size+2,RGB(255,0,0)

// Zeichnen der Pixelfelder (mit je 1 px Grid dazwischen)
FOR column=0 TO (pixelfields_x-1)
FOR row = 0 TO  (pixelfields_y-1)
DRAWRECT 1+(column*(pixelfield_size+1)),1+(row*(pixelfield_size+1)),pixelfield_size,pixelfield_size,RGB(pixelfield_r[column][row],pixelfield_g[column][row],pixelfield_b[column][row])
SETPIXEL 205+column,110+row, RGB(pixelfield_r[column][row],pixelfield_g[column][row],pixelfield_b[column][row])
NEXT
NEXT

PRINT "X/Y: " + joymouse_x + "," + joymouse_y + " / PnowX/Y = " + pixelnow_x + "," + pixelnow_y,10, 225

// PC: LShift+RShift, GP2X: Schultertasten -> EXIT (mit Screenshot)
IF KEY(42) AND KEY(54) ;
LET text$="-> EXIT"; SAVEBMP "screenshot.bmp";
GRABSPRITE 1,212,113,32,32
SAVESPRITE "your_icon.bmp", 1
END;
ENDIF;

// IF KEY(15) THEN GOSUB farbdialog// TAB am PC, SELECT an der GP2x

WHILE KEY(15)
GOSUB farbdialog
WEND

SHOWSCREEN;


WEND // --- END MAIN LOOP ---




SUB farbdialog:

LOADBMP "colorselection_layout.bmp"
substart_farbdialog:

DRAWRECT 0,0,193,193,RGB(0,0,60)
zaehler = 0
r = 220 ; g = 220 ; b = 220
// Zeichnen der Farben-Felder (mit je 1 px Grid dazwischen)
FOR cols=0 TO 15
FOR rows = 0 TO 15
zaehler = zaehler + 1
IF zaehler > 63 AND zaehler < 129 THEN r = r - 1
IF zaehler > 128 AND zaehler < 173 THEN g = g - 1
IF zaehler > 172 THEN b = b - 1
DRAWRECT 1+(cols*(11+1)),1+(rows*(11+1)),11,11,RGB(r,g,b)
NEXT
NEXT

IF KEY(15) = 0 THEN GOTO subend_farbialog
SHOWSCREEN
GOTO substart_farbdialog

subend_farbialog:
LOADBMP "gui_layout.bmp"
RETURN

ENDSUB

Schranz0r

Hi, leider kann ich die Fehler nicht nachvollziehen, da ich keine GP2X habe.

ABER:
Bist aber nicht der BlitzBasic 4Pac der mal so nen haufen tutorials gemacht hatte oder?
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

4pac

Oh Shit, ich wurde erkannt :-)  Ja, korrekt, ich bin der BlitzBasic 4pac :-) Bist du auch ein BB-Überläufer? Wenn ja, unter welchem Namen warst du da zugange? Sind ja ein paar mehr von uns hier unterwegs.

Also, Überläufer ist nicht ganz korrekt. Ich finde nur, man braucht für jeden Job das passende Tool, und die Freiheit nehme ich mir dann als Coder auch einfach :-) GLBasic ist für mich persönlich in erster Linie wegen der GP2x ultra-interessant. Ist schon echt toll, die Möglichkeit, für eine Handheld-Konsole in so einem leicht verständlichen Basic coden zu können. Echt ne ganz große Gechichte. Was darüberhinaus noch aus meiner Zuneigung zu GLBasic wird, wird die Zeit zeigen.

Im Moment finde ich die Idee geil, in der S-Bahn auf dem Weg zum Kunden zu sitzen und Grafiken zu pixeln. Daher dieses Tool. Und, ist mein Versuch, mich an GLB zu gewöhnen (daher noch die Demo-Version)

Schranz0r

Ist ja krass :D

Hmm im BB hab ich net soooo viel gemacht.
War der Schranz0r aufn BB-Forum, hatte vom ersten Tag an die Ar***lochkarte gezogen, wieso auch immer null plan.

War da halt noch Anfänger und habs halt immer dicke ab bekommen... von den tollen Moderatoren da....

Hab aber denke ich doch recht schnell hinbekommen BB zu lernen, und da waren deine Tutorials mitunter derzeit gut hilfreich!

Dann stress mit den Admins gehabt(Jan, Dee, usw)....
und schwups war ich hier :)

Hier sind alle nett zueinander, frag mich nur wieso das im BB net so ist?
Aber Willkommen im Club der Umsteiger ;)
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

4pac

Jaja, das BB-Forum und was aus ihm wurde... *LOL* du hast ne PM (da kann man dann auch mal etwas ausgelassener nörgeln)

Schranz0r

wenn du mir im BB was schreiben willst dann bitte an "Beatenvoy", da mein alter nick wohl weg ist ^^
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Kosta

Hi 4pac,


S.O.P.M hatte sich, über Flackern und Probleme bei der Darstellung einiger Befehle (auf der GP2X), geäussert:

http://www.glbasic.com/forum/viewtopic.php?id=1196&p=1

Letztendlich musste man nur die Optionen (Compiler) erneut auf GP2X stellen. Mehr hierzu:
schau mal obs hilft....

http://www.glbasic.com/forum/viewtopic.php?id=1196&p=1
Intel QuadCore, Geforce8600GT,512MB,4GB Ram, 26" TFT
HP nw8440 Schläppy
GP2X Mk2 (Firmware 3.0)

GLBASIC Blog:
http://www.glbasic.com/forum/index.php?blog=51.0

Kitty Hello

-OK. Setpixel flackert - aber nur leicht bei mir. Probier mal GRABSPRITE, STRETCHSPRITE statt dessen. (Das mini-image grabben)

2. Beenden geht bei mir. Screenshot+Icon sind da. (PNG sollte auch gehen)

3. Die Select-Taste:
    IF KEY(15)
        WHILE KEY(15); WEND
        GOSUB Farbwahl
    ENDIF
    -> Warte bis die Taste losgelassen wird. (Auch im Farbwahl-dialog, dann, OK).

4pac

Bei mir flackert SetPixel auf der GP2x ganz doll. Und mindestens genauso übel ist, dass die x/y-Position von SetPixel ganz und gar nicht stimmt. Die Preview des Icons wird locker 100 px höher und 50 px weiter links ab vom Schuss dargestellt. Mit Grabsprite wäre mir auch nicht richtig geholfen, denn beim abgreifen des BackBuffers wird auch das 1 px dünne Grid zwischen den Pixelfeldern mitgegrabt, und das soll in der Prewiew nicht passieren - würde dann durch das Runterskalieren mit Stretchsprite wahrscheinlich einfach nur noch wie Fliegendreck im gepixelten Bild aussehen.

Beenden klappt auch definitiv nicht bei mir (mit den beiden Schultertasten).

Auf dem PC klappen diese Sachen alle korrekt. Was kann denn das sein??

Ich hab die Firmware-Version 2.0.0 auf der GP2x. Kann es damit zusammenhängen?

Frohes Fest wünscht
4pac

D2O

HI Du Nordlicht,
werds im laufe des Tages mal auf meinem GP2X Testen, habe dort FW. 3 drauf
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Kitty Hello

Hast Du das aktuelle Update? Hast Du die Project-Options für GP2X gesetzt?
Kannst Du einen Screenshot (Digicam) von Deinem Pixelproblem machen?
Ich seh mal, ob man das mit den pixeln nicht anders machen kann...

D2O

Hi 4Pac,
das ganze läuft auf meinem Kleinen Tadellos.
Habe auch kein Flackern und beenden geht auch.

@Gernot:

Habe das Projekt auf GP2X gesetzt und mit "shift+F8" Compiliert, dann kommt folgende Meldung:

Quote---------------------------
GLBasic
---------------------------
Bitte Platformoptionen setzen für: OS-X_UNI
---------------------------
OK  
---------------------------
Aber die gpe wird einwandfrei erstellt!??
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Kitty Hello

Jo. Musst für OSX setzten. Ist doofer Fehler, weil Du ja gar net für OSX machst... Muss ich mal ändern.

4pac

Quote from: GernotFrischHast Du das aktuelle Update? Hast Du die Project-Options für GP2X gesetzt?
Kannst Du einen Screenshot (Digicam) von Deinem Pixelproblem machen?
Ich seh mal, ob man das mit den pixeln nicht anders machen kann...
Ich hatte auch schon daran gedacht, einen Screenhot vom GP2x mit der Digicam zu machen. Aber das flackert soo stark und ist dadurch so kaum zu sehen, das mit SetPixel gemalte, auf dem Bild würde man gar nichts sehen, so dass man sich fragen würde, hä? Wo werden denn da Pixel gesetzt, ich seh keine. Man erkennt es auf der GP2x echt nur mit ganz gut hinsehen, und weil man ja weiß was fehlt, und ganz nah ran geht mit den Augen. Man würde wenn man nicht wüsste wonach man sucht denken, das ist irgendwie eine Screen-Störung.

Das mit dem Update probiere ich mal. Die Project Options hatte ich korrekt gesetzt. Danke für die Tipps, Gernot!

Fabio, vielen Dank für´s testen!!!

Viele Grüße,
4pac

4pac

Quote from: GernotFrisch3. Die Select-Taste:
    IF KEY(15)
        WHILE KEY(15); WEND
        GOSUB Farbwahl
    ENDIF
    -> Warte bis die Taste losgelassen wird. (Auch im Farbwahl-dialog, dann, OK).
Die finde ich gut, Gernot. Hab ich gleich ausprobiert. Die ist wie OnRelease. Braucht man aber auch für GLB, habe ich festgestellt.