mirror of
https://github.com/SaffronCR/msx-rpg.git
synced 2026-02-04 05:36:20 +00:00
117 lines
2.9 KiB
C
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);
|
|
} |