Das Deutsche Casio-Taschenrechner Forum wurde zum 31.12.2013 geschlossen und kann weiterhin als Nachschlagewerk verwendet werden.
Wer mehr erfahren möchte: Ein sehr guter Beitrag von Elias

short-Werte für Farben

Hilfe beim Programmieren mit dem Prizm SDK.

short-Werte für Farben

Beitragvon Paul94 » Mo 4. Apr 2011, 19:57

Hi!

Wie kann ich die Farbwerte (dritter Parameter bei Bdisp_SetPoint_VRAM) erstellen. Gibt es eine möglichkeit, sich z.B. in Paint.NET eine farbe zu malen und den Wert zu bekommen?

Paul
Paul94
 
Beiträge: 219
Registriert: Do 14. Mai 2009, 06:50
Taschenrechner: FX-9860G (OS 2.00.0200)
FX-CG 20

Re: short-Werte für Farben

Beitragvon SimonLothar » Mo 4. Apr 2011, 21:13

Paul94 hat geschrieben:Wie kann ich die Farbwerte (dritter Parameter bei Bdisp_SetPoint_VRAM) erstellen. Gibt es eine möglichkeit, sich z.B. in Paint.NET eine farbe zu malen und den Wert zu bekommen?
Die RGB-Anteile sind beim Prizm 5:6:5 auf das color-shortint verteilt. D. h. Du musst den rot-Farbwert eines anderen Systems auf den Bereich 0..31 herunterrechnen, grün auf 0..63 und blau auf 0.31. Dann alles gem. 5:6:5 verteilen.
Wenn Du also z. B. in einem 16 bit system einen rot-Wert von 16000 (also etwa 50% des möglichen Bereichs) hast, dann hast Du auf dem Prizm einen rot-Wert von etwa 15, also 0x7800 im shortint.
SimonLothar
 
Beiträge: 228
Registriert: Mi 27. Mai 2009, 10:51
Taschenrechner: fx-9860G, fx-9860G slim, fx-9860G SD, fx-9860GII SD, fx-9750GII, fx-7400GII, fx-CG20, fx-9860GII-2 SD, fx-9750GII-2, fx-7400GII-2, fx-CP330+, fx-CP400

Re: short-Werte für Farben

Beitragvon Paul94 » Di 5. Apr 2011, 07:58

Irgendetwas mache ich falsch:

Ich will einen Grauton (zugegeben etwas langweilig bei den vielen Möglichkeiten). Wenn ich dem unsigned short-Wert nun 31695 (01111|011110|0111) müsste das doch ein Grau sein, da ich überall halb so viel wie möglich drin habe.
Ich bekomme aber ein Schwarz ausgegeben. Was mache ich falsch?

Paul
Paul94
 
Beiträge: 219
Registriert: Do 14. Mai 2009, 06:50
Taschenrechner: FX-9860G (OS 2.00.0200)
FX-CG 20

Re: short-Werte für Farben

Beitragvon SimonLothar » Di 5. Apr 2011, 14:56

Paul94 hat geschrieben:Ich will einen Grauton (zugegeben etwas langweilig bei den vielen Möglichkeiten). Wenn ich dem unsigned short-Wert nun 31695 (01111|011110|0111) müsste das doch ein Grau sein, da ich überall halb so viel wie möglich drin habe.
Ich bekomme aber ein Schwarz ausgegeben. Was mache ich falsch?

Ich habe mit 0x7800 + 0x03E0 + 0x000F = 0x7BEF (31727) einen schönen Grauton. Deine Idee ist also richtig.
Allerdings fällt auf, dass der Farbton stark vom Blickwinkel abhängt. Bereits ein wenig von unterhalb betrachtet wird der Grauton schnell schwarz.
SimonLothar
 
Beiträge: 228
Registriert: Mi 27. Mai 2009, 10:51
Taschenrechner: fx-9860G, fx-9860G slim, fx-9860G SD, fx-9860GII SD, fx-9750GII, fx-7400GII, fx-CG20, fx-9860GII-2 SD, fx-9750GII-2, fx-7400GII-2, fx-CP330+, fx-CP400

Re: short-Werte für Farben

Beitragvon Paul94 » Di 5. Apr 2011, 18:57

Ne, bei mir ist und bleibt da ein Schwarz. Allerdings ist mir aufgefallen, dass wenn ich das AddIn mit [MENU] verlassen will, kurz der Graunto erscheint und sich dann das AddIn beendet. Kann das was damit zu tun haben?

Paul
Paul94
 
Beiträge: 219
Registriert: Do 14. Mai 2009, 06:50
Taschenrechner: FX-9860G (OS 2.00.0200)
FX-CG 20

Re: short-Werte für Farben

Beitragvon SimonLothar » Di 5. Apr 2011, 21:22

Paul94 hat geschrieben:Ne, bei mir ist und bleibt da ein Schwarz. Allerdings ist mir aufgefallen, dass wenn ich das AddIn mit [MENU] verlassen will, kurz der Graunto erscheint und sich dann das AddIn beendet. Kann das was damit zu tun haben?Paul
Ja, möglicherweise. Am besten, Du postest mal das betreffende source-Stück.
SimonLothar
 
Beiträge: 228
Registriert: Mi 27. Mai 2009, 10:51
Taschenrechner: fx-9860G, fx-9860G slim, fx-9860G SD, fx-9860GII SD, fx-9750GII, fx-7400GII, fx-CG20, fx-9860GII-2 SD, fx-9750GII-2, fx-7400GII-2, fx-CP330+, fx-CP400

Re: short-Werte für Farben

Beitragvon Paul94 » Mi 6. Apr 2011, 14:57

Hier der Code:
Code: Alles auswählen
void drawBlock(int xPos, int yPos)
   {
      int i, j;
      unsigned short darkgray = 31727;
      
      for (i = 3; i <= 17; i++)
      {
         Bdisp_SetPoint_VRAM(xPos+i, yPos, darkgray);
      }
      for (i = 2; i <= 18; i++)
      {
         Bdisp_SetPoint_VRAM(xPos+i, yPos+1, darkgray);
      }
      for (i = 1; i <= 19; i++)
      {
         Bdisp_SetPoint_VRAM(xPos+i, yPos+2, darkgray);
      }
      for (i = 3; i <= 17; i++)
      {
         Bdisp_SetPoint_VRAM(xPos+i, yPos+20, darkgray);
      }
      for (i = 2; i <= 18; i++)
      {
         Bdisp_SetPoint_VRAM(xPos+i, yPos+19, darkgray);
      }
      for (i = 1; i <= 19; i++)
      {
         Bdisp_SetPoint_VRAM(xPos+i, yPos+18, darkgray);
      }
      
      for (i = 0; i < 3; i++)
      {
         for (j = 3; j <= 17; j++)
         {
            Bdisp_SetPoint_VRAM(xPos+i, yPos+j, darkgray);
         }
      }
      for (i = 18; i <= 20; i++)
      {
         for (j = 3; j <= 17; j++)
         {
            Bdisp_SetPoint_VRAM(xPos+i, yPos+j, darkgray);
         }
      }
      
      for (i = 4; i <= 17; i++)
      {
         Bdisp_SetPoint_VRAM(xPos+i, yPos+i-1, darkgray);
      }
      for (i = 3; i <= 17; i++)
      {
         Bdisp_SetPoint_VRAM(xPos+i, yPos+i, darkgray);
      }
      for (i = 3; i <= 16; i++)
      {
         Bdisp_SetPoint_VRAM(xPos+i, yPos+i+1, darkgray);
      }
      
      for (i = 3; i <= 16; i++)
      {
         Bdisp_SetPoint_VRAM(xPos+i, yPos+17-(i-3)-1, darkgray);
      }
      for (i = 3; i <= 17; i++)
      {
         Bdisp_SetPoint_VRAM(xPos+i, yPos+17-(i-3), darkgray);
      }
      for (i = 4; i <= 17; i++)
      {
         Bdisp_SetPoint_VRAM(xPos+i, yPos+17-(i-3)+1, darkgray);
      }
   }

Das ganze wird dan i-wann mit Bdisp_PutDisp_DD() oder GetKey() ausgegeben.

Gibt es eigentlich einen Syscall der Linien malt, sodass ich auf die Schleifen verzichten kann?

Paul
Paul94
 
Beiträge: 219
Registriert: Do 14. Mai 2009, 06:50
Taschenrechner: FX-9860G (OS 2.00.0200)
FX-CG 20

Re: short-Werte für Farben

Beitragvon SimonLothar » Mi 6. Apr 2011, 16:33

Ich habe Deinen Code ausprobiert.
Der gibt ein echt graues abgerundetes Quadrat mit einem Kreuz innen drin.
Poste mal ein G3A (möglichst nur mit der Problemfunktion) oder das lst-file. Würde mal gern den Assemblercode sehen.

Paul94 hat geschrieben:Gibt es eigentlich einen Syscall der Linien malt, sodass ich auf die Schleifen verzichten kann?Paul
Habe ich noch nicht gefunden. Ich bin sicher, dass es sowas gibt.
SimonLothar
 
Beiträge: 228
Registriert: Mi 27. Mai 2009, 10:51
Taschenrechner: fx-9860G, fx-9860G slim, fx-9860G SD, fx-9860GII SD, fx-9750GII, fx-7400GII, fx-CG20, fx-9860GII-2 SD, fx-9750GII-2, fx-7400GII-2, fx-CP330+, fx-CP400

Re: short-Werte für Farben

Beitragvon Paul94 » Mi 6. Apr 2011, 17:13

So, hier der Quellcode:
Code: Alles auswählen
extern "C" {

#include "keyboard.hpp"
#include "keyboard_syscalls.h"
#include "display_syscalls.h"
#include "display_tools.h"
#include "app_syscalls.h"
#include "convert_syscalls.h"
#include "system_syscalls.h"
#include "heap_syscalls.h"
#include "RTC_syscalls.h"
#include "STD_syscalls.h"
#include "convert_tools.h"
#include "mcs_syscalls.h"
#include "memview2.hpp"
#include "fxCG_display.h"
#include "misc_tools.h"

void drawBlock(int xPos, int yPos)
{
   int i, j;
   unsigned short darkgray = 31727;

   
   for (i = 3; i <= 17; i++)
   {
      Bdisp_SetPoint_VRAM(xPos+i, yPos, darkgray);
   }
   for (i = 2; i <= 18; i++)
   {
      Bdisp_SetPoint_VRAM(xPos+i, yPos+1, darkgray);
   }
   for (i = 1; i <= 19; i++)
   {
      Bdisp_SetPoint_VRAM(xPos+i, yPos+2, darkgray);
   }
   for (i = 3; i <= 17; i++)
   {
      Bdisp_SetPoint_VRAM(xPos+i, yPos+20, darkgray);
   }
   for (i = 2; i <= 18; i++)
   {
      Bdisp_SetPoint_VRAM(xPos+i, yPos+19, darkgray);
   }
   for (i = 1; i <= 19; i++)
   {
      Bdisp_SetPoint_VRAM(xPos+i, yPos+18, darkgray);
   }
   
   for (i = 0; i < 3; i++)
   {
      for (j = 3; j <= 17; j++)
      {
         Bdisp_SetPoint_VRAM(xPos+i, yPos+j, darkgray);
      }
   }
   for (i = 18; i <= 20; i++)
   {
      for (j = 3; j <= 17; j++)
      {
         Bdisp_SetPoint_VRAM(xPos+i, yPos+j, darkgray);
      }
   }
   
   for (i = 4; i <= 17; i++)
   {
      Bdisp_SetPoint_VRAM(xPos+i, yPos+i-1, darkgray);
   }
   for (i = 3; i <= 17; i++)
   {
      Bdisp_SetPoint_VRAM(xPos+i, yPos+i, darkgray);
   }
   for (i = 3; i <= 16; i++)
   {
      Bdisp_SetPoint_VRAM(xPos+i, yPos+i+1, darkgray);
   }
   
   for (i = 3; i <= 16; i++)
   {
      Bdisp_SetPoint_VRAM(xPos+i, yPos+17-(i-3)-1, darkgray);
   }
   for (i = 3; i <= 17; i++)
   {
      Bdisp_SetPoint_VRAM(xPos+i, yPos+17-(i-3), darkgray);
   }
   for (i = 4; i <= 17; i++)
   {
      Bdisp_SetPoint_VRAM(xPos+i, yPos+17-(i-3)+1, darkgray);
   }
}

//
void G3A_main( void ){
   int key;
   
   drawBlock(100,100);
   
   while (1)
   {
      GetKey(&key);
   }
}

#pragma section _BR_Size
unsigned long BR_Size;
#pragma section


hier die lst-file: http://www.eagle.bplaced.net/TEST.LST
hier ist die G3A-file: http://www.eagle.bplaced.net/TEST.G3A
G3A als zip: http://www.eagle.bplaced.net/TEST.zip
Paul94
 
Beiträge: 219
Registriert: Do 14. Mai 2009, 06:50
Taschenrechner: FX-9860G (OS 2.00.0200)
FX-CG 20

Re: short-Werte für Farben

Beitragvon SimonLothar » Do 7. Apr 2011, 16:56

Ich habe Dein TEST.G3A ausprobiert und die Figur ist tatsächlich schwarz. Bei Betätigung der MENU-Taste wechselt die Farbe auf das gewünschte grau, so wie Du schon berichtet hast.
Es sieht fast so aus, als wenn man den Farbmodus erst irgenwie einschalten muss. Werd ich mich mal schrittweise rantasten.
SimonLothar
 
Beiträge: 228
Registriert: Mi 27. Mai 2009, 10:51
Taschenrechner: fx-9860G, fx-9860G slim, fx-9860G SD, fx-9860GII SD, fx-9750GII, fx-7400GII, fx-CG20, fx-9860GII-2 SD, fx-9750GII-2, fx-7400GII-2, fx-CP330+, fx-CP400

Nächste

Zurück zu Prizm SDK (Alle fx-CG Modelle)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron