summaryrefslogtreecommitdiff
path: root/BobStructure.h
blob: d180fef25f015b5dba3fcdee4de3cc37291edf66 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/*
**  Bobi - The Ultimate Amiga Bob Manipulator
**
**  BobStructure.h - MyBob, BobFileHeader, BobData
**
**  COPYRIGHT (C) 1989-1993 BY CHRISTIAN A. WEBER, ZUERICH, SWITZERLAND.
**  ALL RIGHTS RESERVED. NO PART OF THIS SOFTWARE MAY BE COPIED, REPRODUCED,
**  OR TRANSMITTED IN ANY FORM OR BY ANY MEANS, WITHOUT THE PRIOR WRITTEN
**  PERMISSION OF THE AUTHOR. NO WARRANTY. USE AT YOUR OWN RISK.
*/

struct MyBob
{
	PLANEPTR	Planes[8];		/* Alle Planes sind aneinander!! */
	PLANEPTR	Mask;			/* Zeiger auf Masken-Plane */
	WORD		BytesPerRow;	/* Aufgerundetes ((Width+15)/8)&~1 */
	WORD		Width;
	WORD		Height;
	WORD		Depth;
	WORD		Flags;			/* Siehe BOBF_ Definitionen */
	WORD		PlaneSize;		/* BytesPerRow*Height */

	WORD		X0;				/* Nullpunkt X-Koordinate */
	WORD		Y0;				/* Nullpunkt Y-Koordinate */
	WORD		CollX0;			/* X0 des Kollisions-Bereiches */
	WORD		CollY0;			/* Y0 des Kollisions-Bereiches */
	WORD		CollX1;			/* X1 des Kollisions-Bereiches */
	WORD		CollY1;			/* Y1 des Kollisions-Bereiches */

	BYTE		PlanePick;		/* Für welche Planes existieren Daten */
	BYTE		PlaneOnOff;		/* wie bei Image Struktur */
	char		SourceLabel[64];
};

/* Folgende Flags (MyBob.Flags) sind nur für Bobi's Gebrauch */

#define BOBF_AUTOSIZE  1		/* Bob-Größe wird automatisch errechnet */
#define BOBF_AUTOORG   2		/* Bob bekommt neuen Org beim Manipulieren */
#define BOB_PRIVATEMASK 0xff	/* Diese Flags werden nicht generiert */

/* Folgende Flags (MyBob.Flags) sind für Bobol's Gebrauch und werden generiert */

#define BODF_ANIMKEY 256		/* 1. Bob einer Animation */


/*************************************************************************/

struct BobFileHeader
{
	LONG	Magic;				/* Muss BF_MAGIC sein */
	WORD	Version;			/* Versionsnummer des File-Formats */
	WORD	NumBobs;
	WORD	ColorTable[32];
	char	OutputName[127];
	BYTE	DefaultOrg;			/* 0=OL, 1=OM, 2=OR, 3=ML, 4=M, 5=MR, usw. */
	WORD	OutputFlags;		/* Siehe OF_ - Definitionen */
	char	SectionName[64];
	char	DefaultLabel[64];
	WORD	FirstAnimBob;
	WORD	LastAnimBob;
	UWORD	AnimSpeed;
	WORD	AnimFlags;			/* Siehe AF_ - Definitionen */
	WORD	GlobalOptions;		/* Siehe GO_ - in MyFunctions.h */
	WORD	MainX0,MainY0;		/* ORG-Werte, z.B. von SetMainOrgFunc() */
	BYTE	reserved[2];
};

#define BF_MAGIC 0x42424932		/* 'BBI2' */
#define BF_VERSION 111			/* Version des File-Formats */


/* Bit-Definitionen für das OutputFlags-Feld der BobFileHeader-Struktur: */

#define OF_ASSEMBLER 1
#define OF_OBJECT 2
#define OF_RAWDATA 4

#define OF_COLORTABLE 16
#define OF_BOBDATA 32
#define OF_BOBMASK 64

#define OF_GENERATEBOBS 256		/* Bobs generieren */
#define OF_GENERATESPRITES 512	/* Sprites generieren */


/* Bit-Definitionen für das AnimFlags-Feld der BobFileHeader-Struktur: */

#define AF_FORWARD 1			/* Animations-Richtung vorwärts */
#define AF_BACKWARD 2			/* Animations-Richtung rückwärts */
#define AF_BOUNCE 4				/* Modus: Normal/Bounce */


/*************************************************************************/

struct BobData	/* Steht im Source vor jedem Bob */
{
	WORD	Width;		/* Breite in Pixel */
	WORD	Height;		/* Höhe in Linien */
	WORD	X0;			/* X-Offset des Bob-Nullpunkts */
	WORD	Y0;			/* Y-Offset des Bob-Nullpunkts */
	WORD	CollX0;		/* X0 des Kollisions-Bereiches */
	WORD	CollY0;		/* Y0 des Kollisions-Bereiches */
	WORD	CollX1;		/* X1 des Kollisions-Bereiches */
	WORD	CollY1;		/* Y1 des Kollisions-Bereiches */
	BYTE	PlanePick;	/* Für welche Planes sind Daten vorhanden */
	BYTE	PlaneOnOff;	/* Was tun mit den restlichen Planes */
	WORD	Flags;		/* Verschiedene Flags, siehe BODF_ weiter oben */
	WORD	WordSize;	/* Bob-Breite in WORDs +1 */
	WORD	PlaneSize;	/* Anzahl Bytes bis zur nächsten Plane */
	WORD	TotalSize;	/* Komplette Größe des Bobs/Sprites mit Header */
};