Files
msx-rpg/fusion-c/examples/ReadMouseTo.c
2019-12-06 19:02:17 +01:00

117 lines
2.9 KiB
C

//
// Fusion-C
// Mouse Control. Version 2
// ASM Help by GDX
//
#include "fusion-c/header/msx_fusion.h"
#include "fusion-c/header/vdp_sprites.h"
#include "fusion-c/header/vdp_graph2.h"
#include <stdio.h>
static MOUSE_DATA md;
/* Set Sprite mouse Pointer */
static const unsigned char pointer_pattern[]={0x00,0x80,0x40,0x40,0x20,0x20,0x10,0x12,
0x09,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x40,0x00,0x00,0x00,0x00,0x00,
0x80,0x40,0x30,0x3C,0x1F,0x1F,0x0E,0x0D,
0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,
0x80,0x40,0x20,0x00,0x00,0x00,0x00,0x00,
0x40,0x30,0x0C,0x03,0x00,0x00,0x01,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x80,
0x40,0x20,0x00,0x00,0x00,0x00,0x00,0x00};
/* --- Slot 0 */
/* mask 0 */
static const unsigned char pattern[]={0x1F,0x10,0x00,0x03,0x00,0x03,0x0B,0x0F,
0x03,0x0C,0x1E,0x11,0x0E,0x01,0x0F,0x1F,
0x20,0x20,0xC0,0x00,0x40,0x40,0x60,0xE0,
0xC0,0x00,0xC0,0xC0,0x80,0x00,0x00,0xE0,
0x00,0x07,0x1E,0x3C,0x3C,0x30,0x40,0x7F,
0x1F,0x3F,0x3F,0x3F,0x3F,0x10,0x1F,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,
0xE0,0xC0,0xE0,0xE0,0xC0,0x00,0x80,0x00,
0x00,0x2F,0x3F,0x7C,0x7F,0x7C,0xF4,0x00,
0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,
0x00,0xD0,0x20,0xC0,0xA0,0xA0,0x90,0x00,
0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00};
static const unsigned char color1[]={0x01,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0A,
0x0A,0x06,0x06,0x06,0x0A,0x0B,0x06,0x01};
static const unsigned char color2[]={0x00,0x46,0x46,0x46,0x46,0x46,0x46,0x41,
0x41,0x41,0x41,0x41,0x41,0x46,0x41,0x00};
static const unsigned char color3[]={0x00,0x41,0x41,0x41,0x41,0x41,0x41,0x00,
0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x00};
void main(void)
{
int mx,my,i;
unsigned int MouseOffset;
char a,b;
a=0;
b=0;
Screen(5);
SpriteReset();
Sprite16();
for (i = 0; i < 96; ++i) // Read sprite patterns and set them in Video Ram
{
Vpoke(0x7800+i,pointer_pattern[i]); // 0x7800 is the memory adress of Sprite shapes
}
SC5SpriteColors(0,color1); // Set Sprites colors
SC5SpriteColors(1,color2);
SC5SpriteColors(2,color3);
mx=125;
my=50;
PutSprite (0,0,mx,my,0);
PutSprite (1,4,mx,my,0);
PutSprite (2,8,mx,my,0);
while (Inkey()!=27) // Escape to Quit
{
// MouseOffset=MouseRead(MousePort1);
MouseReadTo(1,&md);
// a=MouseOffset >> 8;
// b=MouseOffset & 0xFF;
mx=mx-(md.dx);
my=my-(md.dy);
PutSprite (0,0,mx,my,0);
PutSprite (1,4,mx,my,0);
PutSprite (2,8,mx,my,0);
if (md.lbutton==0) // If left Click Draw a Whitee pixel
PsetXY(mx,my,15);
if (md.rbutton==0) // If Right Click Draw a red pixel
PsetXY(mx,my,134);
}
Screen(0);
Exit(0);
}