mirror of
https://github.com/cc65/cc65.git
synced 2024-12-23 04:30:10 +00:00
Fix eol
git-svn-id: svn://svn.cc65.org/cc65/trunk@5855 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
d701efef12
commit
2266532724
211
include/_mikey.h
211
include/_mikey.h
@ -1,105 +1,106 @@
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* _mikey.h */
|
||||
/* */
|
||||
/* Atari Lynx, Mikey chip register hardware structures */
|
||||
/* */
|
||||
/* */
|
||||
/* This software is provided 'as-is', without any expressed or implied */
|
||||
/* warranty. In no event will the authors be held liable for any damages */
|
||||
/* arising from the use of this software. */
|
||||
/* */
|
||||
/* Permission is granted to anyone to use this software for any purpose, */
|
||||
/* including commercial applications, and to alter it and redistribute it */
|
||||
/* freely, subject to the following restrictions: */
|
||||
/* */
|
||||
/* 1. The origin of this software must not be misrepresented; you must not */
|
||||
/* claim that you wrote the original software. If you use this software */
|
||||
/* in a product, an acknowledgment in the product documentation would be */
|
||||
/* appreciated but is not required. */
|
||||
/* 2. Altered source versions must be plainly marked as such, and must not */
|
||||
/* be misrepresented as being the original software. */
|
||||
/* 3. This notice may not be removed or altered from any source */
|
||||
/* distribution. */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#ifndef __MIKEY_H
|
||||
#define __MIKEY_H
|
||||
|
||||
/* timer structure */
|
||||
typedef struct _mikey_timer {
|
||||
unsigned char reload;
|
||||
unsigned char control;
|
||||
unsigned char count;
|
||||
unsigned char control2;
|
||||
} _mikey_timer;
|
||||
|
||||
typedef struct _mikey_all_timers {
|
||||
struct _mikey_timer timer[8];
|
||||
} _mikey_all_timers;
|
||||
|
||||
/* audio channel structure */
|
||||
typedef struct _mikey_audio {
|
||||
unsigned char volume;
|
||||
unsigned char feedback;
|
||||
unsigned char dac;
|
||||
unsigned char shiftlo;
|
||||
unsigned char reload;
|
||||
unsigned char control;
|
||||
unsigned char count;
|
||||
unsigned char other;
|
||||
} _mikey_audio;
|
||||
|
||||
/* Define a structure with the mikey register offsets */
|
||||
struct __mikey {
|
||||
struct _mikey_timer timer0; // 0xFD00
|
||||
struct _mikey_timer timer1; // 0xFD04
|
||||
struct _mikey_timer timer2; // 0xFD08
|
||||
struct _mikey_timer timer3; // 0xFD0C
|
||||
struct _mikey_timer timer4; // 0xFD10
|
||||
struct _mikey_timer timer5; // 0xFD14
|
||||
struct _mikey_timer timer6; // 0xFD18
|
||||
struct _mikey_timer timer7; // 0xFD1C
|
||||
struct _mikey_audio channel_a; // 0xFD20
|
||||
struct _mikey_audio channel_b; // 0xFD28
|
||||
struct _mikey_audio channel_c; // 0xFD30
|
||||
struct _mikey_audio channel_d; // 0xFD38
|
||||
unsigned char attena; // 0xFD40 ?? not yet allocated?
|
||||
unsigned char attenb; // 0xFD41 |
|
||||
unsigned char attenc; // 0xFD42 |
|
||||
unsigned char attend; // 0xFD43 |
|
||||
unsigned char panning; // 0xFD44 |
|
||||
unsigned char unused0[11]; // 0xFD45 - 0xFD4F not used
|
||||
unsigned char mstereo; // 0xFD50 stereo control bits
|
||||
unsigned char unused1[47]; // 0xFD51 - 0xFD7F not used
|
||||
unsigned char intrst; // 0xFD80 interrupt poll 0
|
||||
unsigned char intset; // 0xFD81 interrupt poll 1
|
||||
unsigned char unused2[2]; // 0xFD82 - 0xFD83 not used
|
||||
unsigned char magrdy0; // 0xFD84 mag tape channel0 ready bit
|
||||
unsigned char magrdy1; // 0xFD85 mag tape channel1 ready bit
|
||||
unsigned char audin; // 0xFD86 audio in
|
||||
unsigned char sysctl1; // 0xFD87 control bits
|
||||
unsigned char mikeyrev; // 0xFD88 mikey hardware rev
|
||||
unsigned char mikeysrev; // 0xFD89 mikey software rev
|
||||
unsigned char iodir; // 0xFD8A parallel i/o data dir
|
||||
unsigned char iodat; // 0xFD8B parallel data
|
||||
unsigned char serctl; // 0xFD8C serial control register
|
||||
unsigned char serdat; // 0xFD8D serial data
|
||||
unsigned char unused3[2]; // 0xFD8E - 0xFD8F not used
|
||||
unsigned char sdoneack; // 0xFD90 suzy done acknowledge
|
||||
unsigned char cpusleep; // 0xFD91 cpu bus request disable
|
||||
unsigned char dispctl; // 0xFD92 video bus request enable, viddma
|
||||
unsigned char pkbkup; // 0xFD93 magic 'P' count
|
||||
unsigned char *scrbase; // 0xFD94 start address of video display
|
||||
unsigned char unused4[6]; // 0xFD96 - 0xFD9B not used
|
||||
unsigned char mtest0; // 0xFD9C
|
||||
unsigned char mtest1; // 0xFD9D
|
||||
unsigned char mtest2; // 0xFD9E
|
||||
unsigned char unused5; // 0xFD9F not used
|
||||
unsigned char palette[32]; // 0xFDA0 - 0xFDBF palette 32 bytes
|
||||
// 0xFDC0 - 0xFDFF not used
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* _mikey.h */
|
||||
/* */
|
||||
/* Atari Lynx, Mikey chip register hardware structures */
|
||||
/* */
|
||||
/* */
|
||||
/* This software is provided 'as-is', without any expressed or implied */
|
||||
/* warranty. In no event will the authors be held liable for any damages */
|
||||
/* arising from the use of this software. */
|
||||
/* */
|
||||
/* Permission is granted to anyone to use this software for any purpose, */
|
||||
/* including commercial applications, and to alter it and redistribute it */
|
||||
/* freely, subject to the following restrictions: */
|
||||
/* */
|
||||
/* 1. The origin of this software must not be misrepresented; you must not */
|
||||
/* claim that you wrote the original software. If you use this software */
|
||||
/* in a product, an acknowledgment in the product documentation would be */
|
||||
/* appreciated but is not required. */
|
||||
/* 2. Altered source versions must be plainly marked as such, and must not */
|
||||
/* be misrepresented as being the original software. */
|
||||
/* 3. This notice may not be removed or altered from any source */
|
||||
/* distribution. */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#ifndef __MIKEY_H
|
||||
#define __MIKEY_H
|
||||
|
||||
/* timer structure */
|
||||
typedef struct _mikey_timer {
|
||||
unsigned char reload;
|
||||
unsigned char control;
|
||||
unsigned char count;
|
||||
unsigned char control2;
|
||||
} _mikey_timer;
|
||||
|
||||
typedef struct _mikey_all_timers {
|
||||
struct _mikey_timer timer[8];
|
||||
} _mikey_all_timers;
|
||||
|
||||
/* audio channel structure */
|
||||
typedef struct _mikey_audio {
|
||||
unsigned char volume;
|
||||
unsigned char feedback;
|
||||
unsigned char dac;
|
||||
unsigned char shiftlo;
|
||||
unsigned char reload;
|
||||
unsigned char control;
|
||||
unsigned char count;
|
||||
unsigned char other;
|
||||
} _mikey_audio;
|
||||
|
||||
/* Define a structure with the mikey register offsets */
|
||||
struct __mikey {
|
||||
struct _mikey_timer timer0; // 0xFD00
|
||||
struct _mikey_timer timer1; // 0xFD04
|
||||
struct _mikey_timer timer2; // 0xFD08
|
||||
struct _mikey_timer timer3; // 0xFD0C
|
||||
struct _mikey_timer timer4; // 0xFD10
|
||||
struct _mikey_timer timer5; // 0xFD14
|
||||
struct _mikey_timer timer6; // 0xFD18
|
||||
struct _mikey_timer timer7; // 0xFD1C
|
||||
struct _mikey_audio channel_a; // 0xFD20
|
||||
struct _mikey_audio channel_b; // 0xFD28
|
||||
struct _mikey_audio channel_c; // 0xFD30
|
||||
struct _mikey_audio channel_d; // 0xFD38
|
||||
unsigned char attena; // 0xFD40 ?? not yet allocated?
|
||||
unsigned char attenb; // 0xFD41 |
|
||||
unsigned char attenc; // 0xFD42 |
|
||||
unsigned char attend; // 0xFD43 |
|
||||
unsigned char panning; // 0xFD44 |
|
||||
unsigned char unused0[11]; // 0xFD45 - 0xFD4F not used
|
||||
unsigned char mstereo; // 0xFD50 stereo control bits
|
||||
unsigned char unused1[47]; // 0xFD51 - 0xFD7F not used
|
||||
unsigned char intrst; // 0xFD80 interrupt poll 0
|
||||
unsigned char intset; // 0xFD81 interrupt poll 1
|
||||
unsigned char unused2[2]; // 0xFD82 - 0xFD83 not used
|
||||
unsigned char magrdy0; // 0xFD84 mag tape channel0 ready bit
|
||||
unsigned char magrdy1; // 0xFD85 mag tape channel1 ready bit
|
||||
unsigned char audin; // 0xFD86 audio in
|
||||
unsigned char sysctl1; // 0xFD87 control bits
|
||||
unsigned char mikeyrev; // 0xFD88 mikey hardware rev
|
||||
unsigned char mikeysrev; // 0xFD89 mikey software rev
|
||||
unsigned char iodir; // 0xFD8A parallel i/o data dir
|
||||
unsigned char iodat; // 0xFD8B parallel data
|
||||
unsigned char serctl; // 0xFD8C serial control register
|
||||
unsigned char serdat; // 0xFD8D serial data
|
||||
unsigned char unused3[2]; // 0xFD8E - 0xFD8F not used
|
||||
unsigned char sdoneack; // 0xFD90 suzy done acknowledge
|
||||
unsigned char cpusleep; // 0xFD91 cpu bus request disable
|
||||
unsigned char dispctl; // 0xFD92 video bus request enable, viddma
|
||||
unsigned char pkbkup; // 0xFD93 magic 'P' count
|
||||
unsigned char *scrbase; // 0xFD94 start address of video display
|
||||
unsigned char unused4[6]; // 0xFD96 - 0xFD9B not used
|
||||
unsigned char mtest0; // 0xFD9C
|
||||
unsigned char mtest1; // 0xFD9D
|
||||
unsigned char mtest2; // 0xFD9E
|
||||
unsigned char unused5; // 0xFD9F not used
|
||||
unsigned char palette[32]; // 0xFDA0 - 0xFDBF palette 32 bytes
|
||||
// 0xFDC0 - 0xFDFF not used
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
605
include/_suzy.h
605
include/_suzy.h
@ -1,302 +1,303 @@
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* _suzy.h */
|
||||
/* */
|
||||
/* Atari Lynx, Suzy chip register hardware structures */
|
||||
/* */
|
||||
/* */
|
||||
/* This software is provided 'as-is', without any expressed or implied */
|
||||
/* warranty. In no event will the authors be held liable for any damages */
|
||||
/* arising from the use of this software. */
|
||||
/* */
|
||||
/* Permission is granted to anyone to use this software for any purpose, */
|
||||
/* including commercial applications, and to alter it and redistribute it */
|
||||
/* freely, subject to the following restrictions: */
|
||||
/* */
|
||||
/* 1. The origin of this software must not be misrepresented; you must not */
|
||||
/* claim that you wrote the original software. If you use this software */
|
||||
/* in a product, an acknowledgment in the product documentation would be */
|
||||
/* appreciated but is not required. */
|
||||
/* 2. Altered source versions must be plainly marked as such, and must not */
|
||||
/* be misrepresented as being the original software. */
|
||||
/* 3. This notice may not be removed or altered from any source */
|
||||
/* distribution. */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
#ifndef __SUZY_H
|
||||
#define __SUZY_H
|
||||
|
||||
/* Joypad $FCB0 */
|
||||
#define JOY_RIGHT 0x10
|
||||
#define JOY_LEFT 0x20
|
||||
#define JOY_DOWN 0x40
|
||||
#define JOY_UP 0x80
|
||||
#define BUTTON_OPTION1 0x08
|
||||
#define BUTTON_OPTION2 0x04
|
||||
#define BUTTON_INNER 0x02
|
||||
#define BUTTON_OUTER 0x01
|
||||
|
||||
/* Switches $FCB1 */
|
||||
#define BUTTON_PAUSE 0x01
|
||||
|
||||
|
||||
/* Hardware Math */
|
||||
#define FACTOR_A *(unsigned int *) 0xFC54
|
||||
#define FACTOR_B *(unsigned int *) 0xFC52
|
||||
#define PRODUCT0 *(unsigned int *) 0xFC60
|
||||
#define PRODUCT1 *(unsigned int *) 0xFC62
|
||||
#define PRODUCT *(long *) 0xFC60
|
||||
|
||||
#define DIVIDEND0 *(unsigned int *) 0xFC60
|
||||
#define DIVIDEND1 *(unsigned int *) 0xFC62
|
||||
#define DIVIDEND *(long *) 0xFC60
|
||||
#define DIVISOR *(unsigned int *) 0xFC56
|
||||
#define QUOTIENT0 *(unsigned int *) 0xFC52
|
||||
#define QUOTIENT1 *(unsigned int *) 0xFC54
|
||||
#define QUOTIENT *(long *) 0xFC52
|
||||
#define REMAINDER0 *(unsigned int *) 0xFC6C
|
||||
#define REMAINDER1 *(unsigned int *) 0xFC6E
|
||||
#define REMAINDER *(long *) 0xFC6C
|
||||
|
||||
|
||||
/* Sprite control block (SCB) defines */
|
||||
|
||||
/* SPRCTL0 $FC80 */
|
||||
#define BPP_4 0xC0
|
||||
#define BPP_3 0x80
|
||||
#define BPP_2 0x40
|
||||
#define BPP_1 0x00
|
||||
#define HFLIP 0x20
|
||||
#define VFLIP 0x10
|
||||
#define TYPE_SHADOW 0x07
|
||||
#define TYPE_XOR 0x06
|
||||
#define TYPE_NONCOLL 0x05
|
||||
#define TYPE_NORMAL 0x04
|
||||
#define TYPE_BOUNDARY 0x03
|
||||
#define TYPE_BSHADOW 0x02
|
||||
#define TYPE_BACKNONCOLL 0x01
|
||||
#define TYPE_BACKGROUND 0x00
|
||||
|
||||
/* SPRCTL1 $FC81 */
|
||||
#define LITERAL 0x80
|
||||
#define PACKED 0x00
|
||||
#define ALGO3 0x40
|
||||
#define RENONE 0x00
|
||||
#define REHV 0x10
|
||||
#define REHVS 0x20
|
||||
#define REHVST 0x30
|
||||
#define REUSEPAL 0x08
|
||||
#define SKIP 0x04
|
||||
#define DRAWUP 0x02
|
||||
#define DRAWLEFT 0x01
|
||||
|
||||
typedef struct SCB_REHVST_PAL { // SCB with all attributes
|
||||
unsigned char sprctl0;
|
||||
unsigned char sprctl1;
|
||||
unsigned char sprcoll;
|
||||
char *next;
|
||||
char *data;
|
||||
unsigned int hpos;
|
||||
unsigned int vpos;
|
||||
unsigned int hsize;
|
||||
unsigned int vsize;
|
||||
unsigned int stretch;
|
||||
unsigned int tilt;
|
||||
unsigned char penpal[8];
|
||||
} SCB_REHVST_PAL;
|
||||
|
||||
typedef struct SCB_REHVST { // SCB without pallette
|
||||
unsigned char sprctl0;
|
||||
unsigned char sprctl1;
|
||||
unsigned char sprcoll;
|
||||
char *next;
|
||||
char *data;
|
||||
unsigned int hpos;
|
||||
unsigned int vpos;
|
||||
unsigned int hsize;
|
||||
unsigned int vsize;
|
||||
unsigned int stretch;
|
||||
unsigned int tilt;
|
||||
} SCB_REHVST;
|
||||
|
||||
typedef struct SCB_REHV { // SCB without stretch/tilt
|
||||
unsigned char sprctl0;
|
||||
unsigned char sprctl1;
|
||||
unsigned char sprcoll;
|
||||
char *next;
|
||||
char *data;
|
||||
unsigned int hpos;
|
||||
unsigned int vpos;
|
||||
unsigned int hsize;
|
||||
unsigned int vsize;
|
||||
} SCB_REHV;
|
||||
|
||||
typedef struct SCB_REHV_PAL { // SCB without str/tilt, w/ penpal
|
||||
unsigned char sprctl0;
|
||||
unsigned char sprctl1;
|
||||
unsigned char sprcoll;
|
||||
char *next;
|
||||
char *data;
|
||||
unsigned int hpos;
|
||||
unsigned int vpos;
|
||||
unsigned int hsize;
|
||||
unsigned int vsize;
|
||||
unsigned char penpal[8];
|
||||
} SCB_REHV_PAL;
|
||||
|
||||
typedef struct SCB_REHVS { // SCB w/o tilt & penpal
|
||||
unsigned char sprctl0;
|
||||
unsigned char sprctl1;
|
||||
unsigned char sprcoll;
|
||||
char *next;
|
||||
char *data;
|
||||
unsigned int hpos;
|
||||
unsigned int vpos;
|
||||
unsigned int hsize;
|
||||
unsigned int vsize;
|
||||
unsigned int stretch;
|
||||
} SCB_REHVS;
|
||||
|
||||
typedef struct SCB_REHVS_PAL { // SCB w/o tilt w/penpal
|
||||
unsigned char sprctl0;
|
||||
unsigned char sprctl1;
|
||||
unsigned char sprcoll;
|
||||
char *next;
|
||||
char *data;
|
||||
unsigned int hpos;
|
||||
unsigned int vpos;
|
||||
unsigned int hsize;
|
||||
unsigned int vsize;
|
||||
unsigned int stretch;
|
||||
unsigned char penpal[8];
|
||||
} SCB_REHVS_PAL;
|
||||
|
||||
typedef struct SCB_RENONE { // SCB w/o size/stretch/tilt/pal
|
||||
unsigned char sprctl0;
|
||||
unsigned char sprctl1;
|
||||
unsigned char sprcoll;
|
||||
char *next;
|
||||
char *data;
|
||||
unsigned int hpos;
|
||||
unsigned int vpos;
|
||||
} SCB_RENONE;
|
||||
|
||||
typedef struct SCB_RENONE_PAL { // SCB w/o size/str/tilt w/penpal
|
||||
unsigned char sprctl0;
|
||||
unsigned char sprctl1;
|
||||
unsigned char sprcoll;
|
||||
char *next;
|
||||
char *data;
|
||||
unsigned int hpos;
|
||||
unsigned int vpos;
|
||||
unsigned char penpal[8];
|
||||
} SCB_RENONE_PAL;
|
||||
|
||||
|
||||
/* Misc system defines */
|
||||
|
||||
/* SPRGO $FC91 */
|
||||
#define EVER_ON 0x04
|
||||
#define SPRITE_GO 0x01
|
||||
|
||||
/* SPRSYS (write) $FC92 */
|
||||
#define SIGNMATH 0x80
|
||||
#define ACCUMULATE 0x40
|
||||
#define NO_COLLIDE 0x20
|
||||
#define VSTRETCH 0x10
|
||||
#define LEFTHAND 0x08
|
||||
#define CLR_UNSAFE 0x04
|
||||
#define SPRITESTOP 0x02
|
||||
|
||||
/* SPRSYS (read) $FC92 */
|
||||
#define MATHWORKING 0x80
|
||||
#define MATHWARNING 0x40
|
||||
#define MATHCARRY 0x20
|
||||
#define VSTRETCHING 0x10
|
||||
#define LEFTHANDED 0x08
|
||||
#define UNSAFE_ACCESS 0x04
|
||||
#define SPRITETOSTOP 0x02
|
||||
#define SPRITEWORKING 0x01
|
||||
|
||||
/* MAPCTL $FFF9 */
|
||||
#define HIGHSPEED 0x80
|
||||
#define VECTORSPACE 0x08
|
||||
#define ROMSPACE 0x04
|
||||
#define MIKEYSPACE 0x02
|
||||
#define SUZYSPACE 0x01
|
||||
|
||||
|
||||
/* Suzy Hardware Registers */
|
||||
struct __suzy {
|
||||
unsigned int tmpadr; // 0xFC00 Temporary address
|
||||
unsigned int tiltacc; // 0xFC02 Tilt accumulator
|
||||
unsigned int hoff; // 0xFC04 Offset to H edge of screen
|
||||
unsigned int voff; // 0xFC06 Offset to V edge of screen
|
||||
unsigned char *sprbase; // 0xFC08 Base address of sprite
|
||||
unsigned char *colbase; // 0xFC0A Base address of collision buffer
|
||||
unsigned char *vidadr; // 0xFC0C Current vid buffer address
|
||||
unsigned char *coladr; // 0xFC0E Current col buffer address
|
||||
unsigned char *scbnext; // 0xFC10 Address of next SCB
|
||||
unsigned char *sprdline; // 0xFC12 start of sprite data line address
|
||||
unsigned char *hposstrt; // 0xFC14 start hpos
|
||||
unsigned char *vposstrt; // 0xFC16 start vpos
|
||||
unsigned char *sprhsize; // 0xFC18 sprite h size
|
||||
unsigned char *sprvsize; // 0xFC1A sprite v size
|
||||
unsigned int stretchl; // 0xFC1C H size adder
|
||||
unsigned int tilt; // 0xFC1E H pos adder
|
||||
unsigned int sprdoff; // 0xFC20 offset to next sprite data line
|
||||
unsigned int sprvpos; // 0xFC22 current vpos
|
||||
unsigned int colloff; // 0xFC24 offset to collision depository
|
||||
unsigned int vsizeacc; // 0xFC26 vertical size accumulator
|
||||
unsigned int hsizeoff; // 0xFC28 horizontal size offset
|
||||
unsigned int vsizeoff; // 0xFC2A vertical size offset
|
||||
unsigned char *scbaddr; // 0xFC2C address of current SCB
|
||||
unsigned char *procaddr; // 0xFC2E address of current spr data proc
|
||||
unsigned char unused0[32]; // 0xFC30 - 0xFC4F reserved/unused
|
||||
unsigned char unused1[2]; // 0xFC50 - 0xFC51 do not use
|
||||
unsigned char mathd; // 0xFC52
|
||||
unsigned char mathc; // 0xFC53
|
||||
unsigned char mathb; // 0xFC54
|
||||
unsigned char matha; // 0xFC55
|
||||
unsigned char mathp; // 0xFC56
|
||||
unsigned char mathn; // 0xFC57
|
||||
unsigned char unused2[8]; // 0xFC58 - 0xFC5F do not use
|
||||
unsigned char mathh; // 0xFC60
|
||||
unsigned char mathg; // 0xFC61
|
||||
unsigned char mathf; // 0xFC62
|
||||
unsigned char mathe; // 0xFC63
|
||||
unsigned char unused3[8]; // 0xFC64 - 0xFC6B do not use
|
||||
unsigned char mathm; // 0xFC6C
|
||||
unsigned char mathl; // 0xFC6D
|
||||
unsigned char mathk; // 0xFC6E
|
||||
unsigned char mathj; // 0xFC6F
|
||||
unsigned char unused4[16]; // 0xFC70 - 0xFC7F do not use
|
||||
unsigned char sprctl0; // 0xFC80 sprite control bits 0
|
||||
unsigned char sprctl1; // 0xFC81 sprite control bits 1
|
||||
unsigned char sprcoll; // 0xFC82 sprite collision number
|
||||
unsigned char sprinit; // 0xFC83 sprite initialization bits
|
||||
unsigned char unused5[4]; // 0xFC84 - 0xFC87 unused
|
||||
unsigned char suzyhrev; // 0xFC88 suzy hardware rev
|
||||
unsigned char suzysrev; // 0xFC89 suzy software rev
|
||||
unsigned char unused6[6]; // 0xFC8A - 0xFC8F unused
|
||||
unsigned char suzybusen; // 0xFC90 suzy bus enable
|
||||
unsigned char sprgo; // 0xFC91 sprite process start bit
|
||||
unsigned char sprsys; // 0xFC92 sprite system control bits
|
||||
unsigned char unused7[29]; // 0xFC93 - 0xFCAF unused
|
||||
unsigned char joystick; // 0xFCB0 joystick and buttons
|
||||
unsigned char switches; // 0xFCB1 other switches
|
||||
unsigned char cart0; // 0xFCB2 cart0 r/w
|
||||
unsigned char cart1; // 0xFCB3 cart1 r/w
|
||||
unsigned char unused8[8]; // 0xFCB4 - 0xFCBF unused
|
||||
unsigned char leds; // 0xFCC0 leds
|
||||
unsigned char unused9; // 0xFCC1 unused
|
||||
unsigned char parstat; // 0xFCC2 parallel port status
|
||||
unsigned char pardata; // 0xFCC3 parallel port data
|
||||
unsigned char howie; // 0xFCC4 howie (?)
|
||||
// 0xFCC5 - 0xFCFF unused
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* _suzy.h */
|
||||
/* */
|
||||
/* Atari Lynx, Suzy chip register hardware structures */
|
||||
/* */
|
||||
/* */
|
||||
/* This software is provided 'as-is', without any expressed or implied */
|
||||
/* warranty. In no event will the authors be held liable for any damages */
|
||||
/* arising from the use of this software. */
|
||||
/* */
|
||||
/* Permission is granted to anyone to use this software for any purpose, */
|
||||
/* including commercial applications, and to alter it and redistribute it */
|
||||
/* freely, subject to the following restrictions: */
|
||||
/* */
|
||||
/* 1. The origin of this software must not be misrepresented; you must not */
|
||||
/* claim that you wrote the original software. If you use this software */
|
||||
/* in a product, an acknowledgment in the product documentation would be */
|
||||
/* appreciated but is not required. */
|
||||
/* 2. Altered source versions must be plainly marked as such, and must not */
|
||||
/* be misrepresented as being the original software. */
|
||||
/* 3. This notice may not be removed or altered from any source */
|
||||
/* distribution. */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
#ifndef __SUZY_H
|
||||
#define __SUZY_H
|
||||
|
||||
/* Joypad $FCB0 */
|
||||
#define JOY_RIGHT 0x10
|
||||
#define JOY_LEFT 0x20
|
||||
#define JOY_DOWN 0x40
|
||||
#define JOY_UP 0x80
|
||||
#define BUTTON_OPTION1 0x08
|
||||
#define BUTTON_OPTION2 0x04
|
||||
#define BUTTON_INNER 0x02
|
||||
#define BUTTON_OUTER 0x01
|
||||
|
||||
/* Switches $FCB1 */
|
||||
#define BUTTON_PAUSE 0x01
|
||||
|
||||
|
||||
/* Hardware Math */
|
||||
#define FACTOR_A *(unsigned int *) 0xFC54
|
||||
#define FACTOR_B *(unsigned int *) 0xFC52
|
||||
#define PRODUCT0 *(unsigned int *) 0xFC60
|
||||
#define PRODUCT1 *(unsigned int *) 0xFC62
|
||||
#define PRODUCT *(long *) 0xFC60
|
||||
|
||||
#define DIVIDEND0 *(unsigned int *) 0xFC60
|
||||
#define DIVIDEND1 *(unsigned int *) 0xFC62
|
||||
#define DIVIDEND *(long *) 0xFC60
|
||||
#define DIVISOR *(unsigned int *) 0xFC56
|
||||
#define QUOTIENT0 *(unsigned int *) 0xFC52
|
||||
#define QUOTIENT1 *(unsigned int *) 0xFC54
|
||||
#define QUOTIENT *(long *) 0xFC52
|
||||
#define REMAINDER0 *(unsigned int *) 0xFC6C
|
||||
#define REMAINDER1 *(unsigned int *) 0xFC6E
|
||||
#define REMAINDER *(long *) 0xFC6C
|
||||
|
||||
|
||||
/* Sprite control block (SCB) defines */
|
||||
|
||||
/* SPRCTL0 $FC80 */
|
||||
#define BPP_4 0xC0
|
||||
#define BPP_3 0x80
|
||||
#define BPP_2 0x40
|
||||
#define BPP_1 0x00
|
||||
#define HFLIP 0x20
|
||||
#define VFLIP 0x10
|
||||
#define TYPE_SHADOW 0x07
|
||||
#define TYPE_XOR 0x06
|
||||
#define TYPE_NONCOLL 0x05
|
||||
#define TYPE_NORMAL 0x04
|
||||
#define TYPE_BOUNDARY 0x03
|
||||
#define TYPE_BSHADOW 0x02
|
||||
#define TYPE_BACKNONCOLL 0x01
|
||||
#define TYPE_BACKGROUND 0x00
|
||||
|
||||
/* SPRCTL1 $FC81 */
|
||||
#define LITERAL 0x80
|
||||
#define PACKED 0x00
|
||||
#define ALGO3 0x40
|
||||
#define RENONE 0x00
|
||||
#define REHV 0x10
|
||||
#define REHVS 0x20
|
||||
#define REHVST 0x30
|
||||
#define REUSEPAL 0x08
|
||||
#define SKIP 0x04
|
||||
#define DRAWUP 0x02
|
||||
#define DRAWLEFT 0x01
|
||||
|
||||
typedef struct SCB_REHVST_PAL { // SCB with all attributes
|
||||
unsigned char sprctl0;
|
||||
unsigned char sprctl1;
|
||||
unsigned char sprcoll;
|
||||
char *next;
|
||||
char *data;
|
||||
unsigned int hpos;
|
||||
unsigned int vpos;
|
||||
unsigned int hsize;
|
||||
unsigned int vsize;
|
||||
unsigned int stretch;
|
||||
unsigned int tilt;
|
||||
unsigned char penpal[8];
|
||||
} SCB_REHVST_PAL;
|
||||
|
||||
typedef struct SCB_REHVST { // SCB without pallette
|
||||
unsigned char sprctl0;
|
||||
unsigned char sprctl1;
|
||||
unsigned char sprcoll;
|
||||
char *next;
|
||||
char *data;
|
||||
unsigned int hpos;
|
||||
unsigned int vpos;
|
||||
unsigned int hsize;
|
||||
unsigned int vsize;
|
||||
unsigned int stretch;
|
||||
unsigned int tilt;
|
||||
} SCB_REHVST;
|
||||
|
||||
typedef struct SCB_REHV { // SCB without stretch/tilt
|
||||
unsigned char sprctl0;
|
||||
unsigned char sprctl1;
|
||||
unsigned char sprcoll;
|
||||
char *next;
|
||||
char *data;
|
||||
unsigned int hpos;
|
||||
unsigned int vpos;
|
||||
unsigned int hsize;
|
||||
unsigned int vsize;
|
||||
} SCB_REHV;
|
||||
|
||||
typedef struct SCB_REHV_PAL { // SCB without str/tilt, w/ penpal
|
||||
unsigned char sprctl0;
|
||||
unsigned char sprctl1;
|
||||
unsigned char sprcoll;
|
||||
char *next;
|
||||
char *data;
|
||||
unsigned int hpos;
|
||||
unsigned int vpos;
|
||||
unsigned int hsize;
|
||||
unsigned int vsize;
|
||||
unsigned char penpal[8];
|
||||
} SCB_REHV_PAL;
|
||||
|
||||
typedef struct SCB_REHVS { // SCB w/o tilt & penpal
|
||||
unsigned char sprctl0;
|
||||
unsigned char sprctl1;
|
||||
unsigned char sprcoll;
|
||||
char *next;
|
||||
char *data;
|
||||
unsigned int hpos;
|
||||
unsigned int vpos;
|
||||
unsigned int hsize;
|
||||
unsigned int vsize;
|
||||
unsigned int stretch;
|
||||
} SCB_REHVS;
|
||||
|
||||
typedef struct SCB_REHVS_PAL { // SCB w/o tilt w/penpal
|
||||
unsigned char sprctl0;
|
||||
unsigned char sprctl1;
|
||||
unsigned char sprcoll;
|
||||
char *next;
|
||||
char *data;
|
||||
unsigned int hpos;
|
||||
unsigned int vpos;
|
||||
unsigned int hsize;
|
||||
unsigned int vsize;
|
||||
unsigned int stretch;
|
||||
unsigned char penpal[8];
|
||||
} SCB_REHVS_PAL;
|
||||
|
||||
typedef struct SCB_RENONE { // SCB w/o size/stretch/tilt/pal
|
||||
unsigned char sprctl0;
|
||||
unsigned char sprctl1;
|
||||
unsigned char sprcoll;
|
||||
char *next;
|
||||
char *data;
|
||||
unsigned int hpos;
|
||||
unsigned int vpos;
|
||||
} SCB_RENONE;
|
||||
|
||||
typedef struct SCB_RENONE_PAL { // SCB w/o size/str/tilt w/penpal
|
||||
unsigned char sprctl0;
|
||||
unsigned char sprctl1;
|
||||
unsigned char sprcoll;
|
||||
char *next;
|
||||
char *data;
|
||||
unsigned int hpos;
|
||||
unsigned int vpos;
|
||||
unsigned char penpal[8];
|
||||
} SCB_RENONE_PAL;
|
||||
|
||||
|
||||
/* Misc system defines */
|
||||
|
||||
/* SPRGO $FC91 */
|
||||
#define EVER_ON 0x04
|
||||
#define SPRITE_GO 0x01
|
||||
|
||||
/* SPRSYS (write) $FC92 */
|
||||
#define SIGNMATH 0x80
|
||||
#define ACCUMULATE 0x40
|
||||
#define NO_COLLIDE 0x20
|
||||
#define VSTRETCH 0x10
|
||||
#define LEFTHAND 0x08
|
||||
#define CLR_UNSAFE 0x04
|
||||
#define SPRITESTOP 0x02
|
||||
|
||||
/* SPRSYS (read) $FC92 */
|
||||
#define MATHWORKING 0x80
|
||||
#define MATHWARNING 0x40
|
||||
#define MATHCARRY 0x20
|
||||
#define VSTRETCHING 0x10
|
||||
#define LEFTHANDED 0x08
|
||||
#define UNSAFE_ACCESS 0x04
|
||||
#define SPRITETOSTOP 0x02
|
||||
#define SPRITEWORKING 0x01
|
||||
|
||||
/* MAPCTL $FFF9 */
|
||||
#define HIGHSPEED 0x80
|
||||
#define VECTORSPACE 0x08
|
||||
#define ROMSPACE 0x04
|
||||
#define MIKEYSPACE 0x02
|
||||
#define SUZYSPACE 0x01
|
||||
|
||||
|
||||
/* Suzy Hardware Registers */
|
||||
struct __suzy {
|
||||
unsigned int tmpadr; // 0xFC00 Temporary address
|
||||
unsigned int tiltacc; // 0xFC02 Tilt accumulator
|
||||
unsigned int hoff; // 0xFC04 Offset to H edge of screen
|
||||
unsigned int voff; // 0xFC06 Offset to V edge of screen
|
||||
unsigned char *sprbase; // 0xFC08 Base address of sprite
|
||||
unsigned char *colbase; // 0xFC0A Base address of collision buffer
|
||||
unsigned char *vidadr; // 0xFC0C Current vid buffer address
|
||||
unsigned char *coladr; // 0xFC0E Current col buffer address
|
||||
unsigned char *scbnext; // 0xFC10 Address of next SCB
|
||||
unsigned char *sprdline; // 0xFC12 start of sprite data line address
|
||||
unsigned char *hposstrt; // 0xFC14 start hpos
|
||||
unsigned char *vposstrt; // 0xFC16 start vpos
|
||||
unsigned char *sprhsize; // 0xFC18 sprite h size
|
||||
unsigned char *sprvsize; // 0xFC1A sprite v size
|
||||
unsigned int stretchl; // 0xFC1C H size adder
|
||||
unsigned int tilt; // 0xFC1E H pos adder
|
||||
unsigned int sprdoff; // 0xFC20 offset to next sprite data line
|
||||
unsigned int sprvpos; // 0xFC22 current vpos
|
||||
unsigned int colloff; // 0xFC24 offset to collision depository
|
||||
unsigned int vsizeacc; // 0xFC26 vertical size accumulator
|
||||
unsigned int hsizeoff; // 0xFC28 horizontal size offset
|
||||
unsigned int vsizeoff; // 0xFC2A vertical size offset
|
||||
unsigned char *scbaddr; // 0xFC2C address of current SCB
|
||||
unsigned char *procaddr; // 0xFC2E address of current spr data proc
|
||||
unsigned char unused0[32]; // 0xFC30 - 0xFC4F reserved/unused
|
||||
unsigned char unused1[2]; // 0xFC50 - 0xFC51 do not use
|
||||
unsigned char mathd; // 0xFC52
|
||||
unsigned char mathc; // 0xFC53
|
||||
unsigned char mathb; // 0xFC54
|
||||
unsigned char matha; // 0xFC55
|
||||
unsigned char mathp; // 0xFC56
|
||||
unsigned char mathn; // 0xFC57
|
||||
unsigned char unused2[8]; // 0xFC58 - 0xFC5F do not use
|
||||
unsigned char mathh; // 0xFC60
|
||||
unsigned char mathg; // 0xFC61
|
||||
unsigned char mathf; // 0xFC62
|
||||
unsigned char mathe; // 0xFC63
|
||||
unsigned char unused3[8]; // 0xFC64 - 0xFC6B do not use
|
||||
unsigned char mathm; // 0xFC6C
|
||||
unsigned char mathl; // 0xFC6D
|
||||
unsigned char mathk; // 0xFC6E
|
||||
unsigned char mathj; // 0xFC6F
|
||||
unsigned char unused4[16]; // 0xFC70 - 0xFC7F do not use
|
||||
unsigned char sprctl0; // 0xFC80 sprite control bits 0
|
||||
unsigned char sprctl1; // 0xFC81 sprite control bits 1
|
||||
unsigned char sprcoll; // 0xFC82 sprite collision number
|
||||
unsigned char sprinit; // 0xFC83 sprite initialization bits
|
||||
unsigned char unused5[4]; // 0xFC84 - 0xFC87 unused
|
||||
unsigned char suzyhrev; // 0xFC88 suzy hardware rev
|
||||
unsigned char suzysrev; // 0xFC89 suzy software rev
|
||||
unsigned char unused6[6]; // 0xFC8A - 0xFC8F unused
|
||||
unsigned char suzybusen; // 0xFC90 suzy bus enable
|
||||
unsigned char sprgo; // 0xFC91 sprite process start bit
|
||||
unsigned char sprsys; // 0xFC92 sprite system control bits
|
||||
unsigned char unused7[29]; // 0xFC93 - 0xFCAF unused
|
||||
unsigned char joystick; // 0xFCB0 joystick and buttons
|
||||
unsigned char switches; // 0xFCB1 other switches
|
||||
unsigned char cart0; // 0xFCB2 cart0 r/w
|
||||
unsigned char cart1; // 0xFCB3 cart1 r/w
|
||||
unsigned char unused8[8]; // 0xFCB4 - 0xFCBF unused
|
||||
unsigned char leds; // 0xFCC0 leds
|
||||
unsigned char unused9; // 0xFCC1 unused
|
||||
unsigned char parstat; // 0xFCC2 parallel port status
|
||||
unsigned char pardata; // 0xFCC3 parallel port data
|
||||
unsigned char howie; // 0xFCC4 howie (?)
|
||||
// 0xFCC5 - 0xFCFF unused
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user