Skip navigation
Currently Being Moderated

Documents for "vgl.h" and GDB?

Feb 22, 2012 6:45 PM

I have some interesting foundings when studying the "XXXX.achacks.as" files. It seems that Alchemy v0.5 already has build-in (simple) GL and GDB support.

Some code copied here:

For GL:

Alchemy::NoShell {

public var gvglbmd:BitmapData;
public var gvglbm:Bitmap;
public var gvglpixels:int;

} // Alchemy::NoShell

public function vgl_lock():void
{
  // nop
}

public function vgl_unlock():void
{
  Alchemy::NoShell {

  // blit!
  if(gvglbmd && gvglpixels)
  {
    gstate.ds.position = gvglpixels;
    gvglbmd.setPixels(gvglbmd.rect, gstate.ds);
  }

  } // Alchemy::NoShell
}

public function vgl_end(dummy:int):int
{
  Alchemy::NoShell {

  var pixels:int = gvglpixels;
  gvglpixels = 0;
  return pixels;

  } // Alchemy::NoShell
  return 0;
}

public var vglKeys:Array = [];
public var vglKeyFirst:Boolean = true;
public var vglKeyUEL:*;
// mode...
// 1: VGL_RAWKEYS
// 2: VGL_CODEKEYS
// 3: VGL_XLATEKEYS
public var vglKeyMode:int;

public function vgl_keyinit(mode:int):int
{
  trace("vgl_keymode: " + mode);
  vglKeyMode = mode;
  return 0;
}

public function vgl_keych():int
{
  if(vglKeys.length)
    return vglKeys.shift();
  return 0;
}

public function vgl_init(width:int, height:int, pixels:int):int
{
  Alchemy::NoShell {

  var stage:Stage = gsprite.stage;

trace("vgl_init: " + width + " / " + height + " : " + pixels);
  if(vglKeyFirst)
  {
    // windows VK_ (keyCode) => scan code
    var vk2scan:Array = [
      0, 0, 0, 70, 0, 0, 0, 0, 14, 15, 0, 0, 76, 28, 0, 0, 
      42, 29, 56, 0, 58, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 
      57, 73, 81, 79, 71, 75, 72, 77, 80, 0, 0, 0, 84, 82, 83, 99, 
      11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, 0, 
...

 

and for GDB:

...
Alchemy::NoShell
public class GDBMIDebugger
{
Alchemy::NoDebugger {
  public function GDBMIDEbugger(dbge:Debuggee) {}
}
Alchemy::Debugger {
  var sock:Socket;
  var debuggee:Debuggee;

  public function GDBMIDebugger(dbge:Debuggee)
  {
    sock = new Socket();
    debuggee = dbge;

    sock.addEventListener(flash.events.Event.CONNECT, sockConnect);
    sock.addEventListener(flash.events.ProgressEvent.SOCKET_DATA, sockData);
    sock.addEventListener(flash.events.IOErrorEvent.IO_ERROR, sockError);
    sock.addEventListener(flash.events.SecurityErrorEvent.SECURITY_ERROR,
      sockError);

    debuggee.suspend();
    try
    {
      sock.connect("localhost", 5678);
    }
    catch(e:*)
    {
      sockError(e);
    }
  }
...

 

Also, in "alchemy\avm2-libc\include\" folder, you can find a header file "vgl.h", full file copied below:

 

#ifndef _VGL_H_
#define _VGL_H_

#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <machine/cpufunc.h>

typedef unsigned char byte;
typedef struct {
  byte     Type;
  int      Xsize, Ysize;
  int      VXsize, VYsize;
  int   Xorigin, Yorigin;
  byte     *Bitmap;
  int    PixelBytes;
} VGLBitmap;

#define VGLBITMAP_INITIALIZER(t, x, y, bits)    \
    { (t), (x), (y), (x), (y), 0, 0, (bits) }

/*
 * Defined Type's
 */
#define MEMBUF        0
#define VIDBUF4        1
#define VIDBUF8        2
#define VIDBUF8X    3
#define VIDBUF8S    4
#define VIDBUF4S    5
#define VIDBUF16    6        /* Direct Color linear buffer */
#define VIDBUF24    7        /* Direct Color linear buffer */
#define VIDBUF32    8        /* Direct Color linear buffer */
#define VIDBUF16S    9        /* Direct Color segmented buffer */
#define VIDBUF24S    10        /* Direct Color segmented buffer */
#define VIDBUF32S    11        /* Direct Color segmented buffer */
#define NOBUF        255

typedef struct VGLText {
  byte    Width, Height;
  byte    *BitmapArray;
} VGLText;

typedef struct VGLObject {
  int          Id;
  int          Type;
  int          Status;
  int          Xpos, Ypos;
  int          Xhot, Yhot;
  VGLBitmap     *Image;
  VGLBitmap     *Mask;
  int        (*CallBackFunction)();
} VGLObject;

#define MOUSE_IMG_SIZE        16
#define VGL_MOUSEHIDE        0
#define VGL_MOUSESHOW        1
#define VGL_MOUSEFREEZE        0
#define VGL_MOUSEUNFREEZE    1
#define VGL_DIR_RIGHT        0
#define VGL_DIR_UP        1
#define VGL_DIR_LEFT        2
#define VGL_DIR_DOWN        3
#define VGL_RAWKEYS        1
#define VGL_CODEKEYS        2
#define VGL_XLATEKEYS        3

extern video_adapter_info_t    VGLAdpInfo;
extern video_info_t        VGLModeInfo;
extern VGLBitmap         *VGLDisplay;
extern byte             *VGLBuf;

/*
 * Prototypes
 */
/* bitmap.c */
int __VGLBitmapCopy(VGLBitmap *src, int srcx, int srcy, VGLBitmap *dst, int dstx, int dsty, int width, int hight);
int VGLBitmapCopy(VGLBitmap *src, int srcx, int srcy, VGLBitmap *dst, int dstx, int dsty, int width, int hight);
VGLBitmap *VGLBitmapCreate(int type, int xsize, int ysize, byte *bits);
void VGLBitmapDestroy(VGLBitmap *object);
int VGLBitmapAllocateBits(VGLBitmap *object);
/* keyboard.c */
int VGLKeyboardInit(int mode);
void VGLKeyboardEnd(void);
int VGLKeyboardGetCh(void);
/* main.c */
void VGLEnd(void);
int VGLInit(int mode);
void VGLCheckSwitch(void);
int VGLSetVScreenSize(VGLBitmap *object, int VXsize, int VYsize);
int VGLPanScreen(VGLBitmap *object, int x, int y);
int VGLSetSegment(unsigned int offset);
/* mouse.c */
void VGLMousePointerShow(void);
void VGLMousePointerHide(void);
void VGLMouseMode(int mode);
void VGLMouseAction(int dummy);
void VGLMouseSetImage(VGLBitmap *AndMask, VGLBitmap *OrMask);
void VGLMouseSetStdImage(void);
int VGLMouseInit(int mode);
int VGLMouseStatus(int *x, int *y, char *buttons);
int VGLMouseFreeze(int x, int y, int width, int hight, byte color);
void VGLMouseUnFreeze(void);
/* simple.c */
void VGLSetXY(VGLBitmap *object, int x, int y, u_long color);
u_long VGLGetXY(VGLBitmap *object, int x, int y);
void VGLLine(VGLBitmap *object, int x1, int y1, int x2, int y2, u_long color);
void VGLBox(VGLBitmap *object, int x1, int y1, int x2, int y2, u_long color);
void VGLFilledBox(VGLBitmap *object, int x1, int y1, int x2, int y2, u_long color);
void VGLEllipse(VGLBitmap *object, int xc, int yc, int a, int b, u_long color);
void VGLFilledEllipse(VGLBitmap *object, int xc, int yc, int a, int b, u_long color);
void VGLClear(VGLBitmap *object, u_long color);
void VGLRestorePalette(void);
void VGLSavePalette(void);
void VGLSetPalette(byte *red, byte *green, byte *blue);
void VGLSetPaletteIndex(byte color, byte red, byte green, byte blue);
void VGLSetBorder(byte color);
void VGLBlankDisplay(int blank);
/* text.c */
int VGLTextSetFontFile(char *filename);
void VGLBitmapPutChar(VGLBitmap *Object, int x, int y, byte ch, byte fgcol, byte bgcol, int fill, int dir);
void VGLBitmapString(VGLBitmap *Object, int x, int y, char *str, byte fgcol, byte bgcol, int fill, int dir);

#endif /* !_VGL_H_ */

 

So is there any document for them, or anyone has ever figured out how to use the VGL apis in alchmey?

 

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points