If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Gex (Sega Saturn)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Gex

Developer: Beam Software
Publishers: Crystal Dynamics (US/EU), BMG Interactive Entertainment (JP), Tec Toy (BR)
Platform: Sega Saturn
Released in JP: March 29, 1996
Released in US: 1996
Released in EU: 1996
Released in BR: 1996


SourceIcon.png This game has uncompiled source code.
DevTextIcon.png This game has hidden development-related text.
DebugIcon.png This game has debugging material.


Possible Debugging Features

Elementary, my dear Cactus.
This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically: Figure out if there really are any debugging features.

On boot, the game checks the file GEX.ARG which contains the following text:

gx -real -dram 32000 -nodebug -vramblks 23 -blocks 143 -noprint -music -speech

A list of commands can be found at 0x13E40 in BEAM.EXE:

-sl
	-vsit <id>       = force a voice situation
	-idle <id>       = force an idle to appear
	-intros          = show intros
	-noprint         = no non-error message
	-real            = play it for real
	-duck            = show duck video
	-play <fname>    = playback joypad file
	-rec <fname>     = record joypad input to file
	-noexit          = no exit by holding start & stop
	-noskew          = no skewing by holding start
	-nopower         = no powerups on pad 2
	-nofreeze        = no scroll freeze on pad 2
	-noscale         = no gex scale on pad 2
	-nodelay         = no delay on pad 2
	-norotate        = no rotation on pad 2
	-cursor          = put cursor on screen
	-vramblks<value> = blocks in vram (def 67)
	-blocks <value>  = num blocks for levels (def 162)
	-vram <value>    = vram to save for OS
	-dram <value>    = dram to save for OS
	-speech          = play speech
	-nosfx           = no sound effects
	-music           = play music
	-nodebug         = no debug messages
	-level <value>   = Level to play
gx %s  Copyright (c) 1994 Crystal Dynamics
-------------------------------------------
gex.arg
*** Play level %ld ***
*** Reserve %-6ld bytes of VRAM
*** Reserve %-6ld bytes of DRAM
*** Allocate %ld blocks
*** Blocks in VRAM = %ld bytes

Similar text can also be found in the PlayStation version.

GexSaturn-error.png

Making any changes to GEX.ARG however just displays the above error on boot.

(Source: Original TCRF research)

Source Code

Some uncompiled source code can be found throughout BEAM.EXE.

0x7701E

type	010;	.endef
	.def	_di_Tags;	.val	20;	.scl	8;	.tag	_TagArg;	.dim	1;	.size	8;	.type	070;	.endef
	.def	.eos;	.val	28;	.scl	102;	.tag	_DisplayInfo;	.size	28;	.endef
	.def	_DisplayInfo;	.scl	13;	.tag	_DisplayInfo;	.size	28;	.type	010;	.endef
	.def	_Bitmap;	.scl	10;	.type	010;	.size	132;	.endef
	.def	_bm;	.val	0;	.scl	8;	.tag	_ItemNode;	.size	36;	.type	010;	.endef
	.def	_bm_Buffer;	.val	36;	.scl	8;	.type	022;	.endef
	.def	_bm_Width;	.val	40;	.scl	8;	.type	05;	.endef
	.def	_bm_Height;	.val	44;	.scl	8;	.type	05;	.endef
	.def	_bm_VerticalOffset;	.val	48;	.scl	8;	.type	05;	.endef
	.def	_bm_Flags;	.val	52;	.scl	8;	.type	05;	.endef
	.def	_bm_ClipWidth;	.val	56;	.scl	8;	.type	05;	.endef
	.def	_bm_ClipHeight;	.val	60;	.scl	8;	.type	05;	.endef
	.def	_bm_ClipX;	.val	64;	.scl	8;	.type	05;	.endef
	.def	_bm_ClipY;	.val	68;	.scl	8;	.type	05;	.endef
	.def	_bm_WatchDogCtr;	.val	72;	.scl	8;	.type	05;	.endef
	.def	_bm_SysMalloc;	.val	76;	.scl	8;	.type	05;	.endef
	.def	_bm_SharedList;	.val	80;	.scl	8;	.tag	_List;	.size	32;	.type	010;	.endef
	.def	_bm_CEControl;	.val	112;	.scl	8;	.type	05;	.endef
	.def	_bm_REGCTL0;	.val	116;	.scl	8;	.type	05;	.endef
	.def	_bm_REGCTL1;	.val	120;	.scl	8;	.type	05;	.endef
	.def	_bm_REGCTL2;	.val	124;	.scl	8;	.type	05;	.endef
	.def	_bm_REGCTL3;	.val	128;	.scl	8;	.type	05;	.endef
	.def	.eos;	.val	132;	.scl	102;	.tag	_Bitmap;	.size	132;	.endef
	.def	_Bitmap;	.scl	13;	.tag	_Bitmap;	.size	132;	.type	010;	.endef
	.def	_VDL;	.scl	10;	.type	010;	.size	68;	.endef
	.def	_vdl;	.val	0;	.scl	8;	.tag	_ItemNode;	.size	36;	.type	010;	.endef
	.def	_vdl_ScreenPtr;	.val	36;	.scl	8;	.type	030;	.endef
	.def	_vdl_DataPtr;	.val	40;	.scl	8;	.type	037;	.endef
	.def	_vdl_Type;	.val	44;	.scl	8;	.type	05;	.endef
	.def	_vdl_DataSize;	.val	48;	.scl	8;	.type	05;	.endef
	.def	_vdl_Flags;	.val	52;	.scl	8;	.type	05;	.endef
	.def	_vdl_DisplayType;	.val	56;	.scl	8;	.type	05;	.endef
	.def	_vdl_Height;	.val	60;	.scl	8;	.type	05;	.endef
	.def	_vdl_Offset;	.val	64;	.scl	8;	.type	05;	.endef
	.def	.eos;	.val	68;	.scl	102;	.tag	_VDL;	.size	68;	.endef
	.def	_VDL;	.scl	13;	.tag	_VDL;	.size	68;	.type	010;	.endef
	.def	_Screen;	.scl	10;	.type	010;	.size	124;	.endef
	.def	_scr;	.val	0;	.scl	8;	.tag	_ItemNode;	.size	36;	.type	010;	.endef
	.def	_scr_ScreenGroupPtr;	.val	36;	.scl	8;	.tag	_ScreenGroup;	.size	116;	.type	030;	.endef
	.def	_scr_VDLPtr;	.val	40;	.scl	8;	.tag	_VDL;	.size	68;	.type	030;	.endef
	.def	_scr_VDLItem;	.val	44;	.scl	8;	.type	05;	.endef
	.def	_scr_VDLType;	.val	48;	.scl	8;	.type	05;	.endef
	.def	_scr_BitmapCount;	.val	52;	.scl	8;	.type	05;	.endef
	.def	_scr_BitmapList;	.val	56;	.scl	8;	.tag	_List;	.size	32;	.type	010;	.endef
	.def	_scr_SharedList;	.val	88;	.scl	8;	.tag	_List;	.size	32;	.type	010;	.endef
	.def	_scr_TempBitmap;	.val	120;	.scl	8;	.tag	_Bitmap;	.size	132;	.type	030;	.endef
	.def	.eos;	.val	124;	.scl	102;	.tag	_Screen;	.size	124;	.endef
	.def	_Screen;	.scl	13;	.tag	_Screen;	.size	124;	.type	010;	.endef
	.def	_BitmapInfo;	.scl	10;	.type	010;	.size	12;	.endef
	.def	_bi_Item;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_bi_Bitmap;	.val	4;	.scl	8;	.tag	_Bitmap;	.size	132;	.type	030;	.endef
	.def	_bi_Buffer;	.val	8;	.scl	8;	.type	022;	.endef
	.def	.eos;	.val	12;	.scl	102;	.tag	_BitmapInfo;	.size	12;	.endef
	.def	_BitmapInfo;	.scl	13;	.tag	_BitmapInfo;	.size	12;	.type	010;	.endef
	.def	_ScreenInfo;	.scl	10;	.type	010;	.size	20;	.endef
	.def	_si_Item;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_si_Screen;	.val	4;	.scl	8;	.tag	_Screen;	.size	124;	.type	030;	.endef
	.def	_si_BitmapInfo;	.val	8;	.scl	8;	.tag	_BitmapInfo;	.size	12;	.type	010;	.endef
	.def	.eos;	.val	20;	.scl	102;	.tag	_ScreenInfo;	.size	20;	.endef
	.def	_ScreenInfo;	.scl	13;	.tag	_ScreenInfo;	.size	20;	.type	010;	.endef
	.def	_Point;	.scl	10;	.type	010;	.size	8;	.endef
	.def	_pt_X;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_pt_Y;	.val	4;	.scl	8;	.type	05;	.endef
	.def	.eos;	.val	8;	.scl	102;	.tag	_Point;	.size	8;	.endef
	.def	_Point;	.scl	13;	.tag	_Point;	.size	8;	.type	010;	.endef
	.def	_Rect;	.scl	10;	.type	010;	.size	16;	.endef
	.def	_rect_XLeft;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_rect_YTop;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_rect_XRight;	.val	8;	.scl	8;	.type	05;	.endef
	.def	_rect_YBottom;	.val	12;	.scl	8;	.type	05;	.endef
	.def	.eos;	.val	16;	.scl	102;	.tag	_Rect;	.size	16;	.endef
	.def	_Rect;	.scl	13;	.tag	_Rect;	.size	16;	.type	010;	.endef
	.def	_GrafCon;	.scl	10;	.type	010;	.size	40;	.endef
	.def	_gc;	.val	0;	.scl	8;	.tag	_Node;	.size	20;	.type	010;	.endef
	.def	_gc_FGPen;	.val	20;	.scl	8;	.type	017;	.endef
	.def	_gc_BGPen;	.val	24;	.scl	8;	.type	017;	.endef
	.def	_gc_PenX;	.val	28;	.scl	8;	.type	05;	.endef
	.def	_gc_PenY;	.val	32;	.scl	8;	.type	05;	.endef
	.def	_gc_Flags;	.val	36;	.scl	8;	.type	017;	.endef
	.def	.eos;	.val	40;	.scl	102;	.tag	_GrafCon;	.size	40;	.endef
	.def	_GrafCon;	.scl	13;	.tag	_GrafCon;	.size	40;	.type	010;	.endef
	.def	_CCB;	.scl	10;	.type	010;	.size	68;	.endef
	.def	_ccb_Flags;	.val	0;	.scl	8;	.type	017;	.endef
	.def	_ccb_NextPtr;	.val	4;	.scl	8;	.tag	_CCB;	.size	68;	.type	030;	.endef
	.def	_ccb_SourcePtr;	.val	8;	.scl	8;	.dim	0;	.size	4;	.type	0337;	.endef
	.def	_ccb_PLUTPtr;	.val	12;	.scl	8;	.type	021;	.endef
	.def	_ccb_XPos;	.val	16;	.scl	8;	.type	05;	.endef
	.def	_ccb_YPos;	.val	20;	.scl	8;	.type	05;	.endef
	.def	_ccb_HDX;	.val	24;	.scl	8;	.type	05;	.endef
	.def	_ccb_HDY;	.val	28;	.scl	8;	.type	05;	.endef
	.def	_ccb_VDX;	.val	32;	.scl	8;	.type	05;	.endef
	.def	_ccb_VDY;	.val	36;	.scl	8;	.type	05;	.endef
	.def	_ccb_HDDX;	.val	40;	.scl	8;	.type	05;	.endef
	.def	_ccb_HDDY;	.val	44;	.scl	8;	.type	05;	.endef
	.def	_ccb_PIXC;	.val	48;	.scl	8;	.type	017;	.endef
	.def	_ccb_PRE0;	.val	52;	.scl	8;	.type	017;	.endef
	.def	_ccb_PRE1;	.val	56;	.scl	8;	.type	017;	.endef
	.def	_ccb_Width;	.val	60;	.scl	8;	.type	05;	.endef
	.def	_ccb_Height;	.val	64;	.scl	8;	.type	05;	.endef
	.def	.eos;	.val	68;	.scl	102;	.tag	_CCB;	.size	68;	.endef
	.def	_CCB;	.scl	13;	.tag	_CCB;	.size	68;	.type	010;	.endef
	.def	_FontChar;	.scl	10;	.type	010;	.size	12;	.endef
	.def	_fc_CharValue;	.val	0;	.scl	8;	.type	017;	.endef
	.def	_fc_Width;	.val	4;	.scl	8;	.type	02;	.endef
	.def	_fc_Image;	.val	8;	.scl	8;	.dim	0;	.size	4;	.type	0337;	.endef
	.def	.eos;	.val	12;	.scl	102;	.tag	_FontChar;	.size	12;	.endef
	.def	_FontChar;	.scl	13;	.tag	_FontChar;	.size	12;	.type	010;	.endef
	.def	_Font;	.scl	10;	.type	010;	.size	12;	.endef
	.def	_font_Height;	.val	0;	.scl	8;	.type	02;	.endef
	.def	_font_Flags;	.val	1;	.scl	8;	.type	02;	.endef
	.def	_font_CCB;	.val	4;	.scl	8;	.tag	_CCB;	.size	68;	.type	030;	.endef
	.def	_font_FontEntries;	.val	8;	.scl	8;	.tag	_FontEntry;	.size	44;	.type	030;	.endef
	.def	.eos;	.val	12;	.scl	102;	.tag	_Font;	.size	12;	.endef
	.def	_Font;	.scl	13;	.tag	_Font;	.size	12;	.type	010;	.endef
	.def	_GrafFolio;	.scl	10;	.type	010;	.size	332;	.endef
	.def	_gf;	.val	0;	.scl	8;	.tag	_Folio;	.size	112;	.type	010;	.endef
	.def	_gf_Flags;	.val	112;	.scl	8;	.type	017;	.endef
	.def	_gf_VBLNumber;	.val	116;	.scl	8;	.type	017;	.endef
	.def	_gf_ZeroPage;	.val	120;	.scl	8;	.type	021;	.endef
	.def	_gf_VIRSPage;	.val	124;	.scl	8;	.type	021;	.endef
	.def	_gf_VRAMPageSize;	.val	128;	.scl	8;	.type	017;	.endef
	.def	_gf_DefaultDisplayWidth;	.val	132;	.scl	8;	.type	05;	.endef
	.def	_gf_DefaultDisplayHeight;	.val	136;	.scl	8;	.type	05;	.endef
	.def	_gf_TimeoutTimer;	.val	140;	.scl	8;	.tag	_Timer;	.size	52;	.type	030;	.endef
	.def	_gf_Reserved5;	.val	144;	.scl	8;	.type	05;	.endef
	.def	_gf_Reserved6;	.val	148;	.scl	8;	.type	05;	.endef
	.def	_gf_Reserved7;	.val	152;	.scl	8;	.type	05;	.endef
	.def	_gf_VDLForcedFirst;	.val	156;	.scl	8;	.type	037;	.endef
	.def	_gf_VDLPreDisplay;	.val	160;	.scl	8;	.type	037;	.endef
	.def	_gf_VDLPostDisplay;	.val	164;	.scl	8;	.type	037;	.endef
	.def	_gf_VDLBlank;	.val	168;	.scl	8;	.type	037;	.endef
	.def	_gf_CurrentVDLEven;	.val	172;	.scl	8;	.tag	_VDL;	.size	68;	.type	030;	.endef
	.def	_gf_CurrentVDLOdd;	.val	176;	.scl	8;	.tag	_VDL;	.size	68;	.type	030;	.endef
	.def	_gf_VDLDisplayLink;	.val	180;	.scl	8;	.type	037;	.endef
	.def	_gf_Reserved1;	.val	184;	.scl	8;	.type	05;	.endef
	.def	_gf_Reserved3;	.val	188;	.scl	8;	.type	05;	.endef
	.def	_gf_CelSemaphore;	.val	192;	.scl	8;	.type	05;	.endef
	.def	_gf_VBLTime;	.val	196;	.scl	8;	.type	05;	.endef
	.def	_gf_VBLFreq;	.val	200;	.scl	8;	.type	05;	.endef
	.def	_gf_Reserved2;	.val	204;	.scl	8;	.type	05;	.endef
	.def	_gf_CurrentFontStream;	.val	208;	.scl	8;	.tag	_Stream;	.size	56;	.type	030;	.endef
	.def	_gf_FileFontCacheSize;	.val	212;	.scl	8;	.type	05;	.endef
	.def	_gf_FileFontCacheAlloc;	.val	216;	.scl	8;	.type	05;	.endef
	.def	_gf_FileFontCache;	.val	220;	.scl	8;	.type	022;	.endef
	.def	_gf_FontEntryHead;	.val	224;	.scl	8;	.tag	_FontEntry;	.size	44;	.type	030;	.endef
	.def	_gf_FontEntryButt;	.val	228;	.scl	8;	.tag	_FontEntry;	.size	44;	.type	030;	.endef
	.def	_gf_FontLRUList;	.val	232;	.scl	8;	.tag	_List;	.size	32;	.type	010;	.endef
	.def	_gf_FileFontFlags;	.val	264;	.scl	8;	.type	05;	.endef
	.def	_gf_FontBaseChar;	.val	268;	.scl	8;	.type	05;	.endef
	.def	_gf_FontMaxChar;	.val	272;	.scl	8;	.type	05;	.endef
	.def	_gf_CurrentFont;	.val	276;	.scl	8;	.tag	_Font;	.size	12;	.type	030;	.endef
	.def	_gf_CharArrayOffset;	.val	280;	.scl	8;	.type	05;	.endef
	.def	_gf_fileFontCacheUsed;	.val	284;	.scl	8;	.type	05;	.endef
	.def	_gf_DisplayInfoList;	.val	288;	.scl	8;	.tag	_List;	.size	32;	.type	010;	.endef
	.def	_gf_DefaultDisplayType;	.val	320;	.scl	8;	.type	017;	.endef
	.def	_gf_DisplayTypeMask;	.val	324;	.scl	8;	.type	017;	.endef
	.def	_gf_BlankVDL;	.val	328;	.scl	8;	.tag	_VDL;	.size	68;	.type	030;	.endef
	.def	.eos;	.val	332;	.scl	102;	.tag	_GrafFolio;	.size	332;	.endef
	.def	_GrafFolio;	.scl	13;	.tag	_GrafFolio;	.size	332;	.type	010;	.endef
	.def	_frac16;	.scl	13;	.type	05;	.endef
	.def	_frac30;	.scl	13;	.type	05;	.endef
	.def	_frac14;	.scl	13;	.type	05;	.endef
	.def	_ufrac16;	.scl	13;	.type	017;	.endef
	.def	_ufrac30;	.scl	13;	.type	017;	.endef
	.def	_ufrac14;	.scl	13;	.type	017;	.endef
	.def	_int64;	.scl	10;	.type	010;	.size	8;	.endef
	.def	_hi;	.val	0;	.scl	8;	.type	017;	.endef
	.def	_lo;	.val	4;	.scl	8;	.type	017;	.endef
	.def	.eos;	.val	8;	.scl	102;	.tag	_int64;	.size	8;	.endef
	.def	_int64;	.scl	13;	.tag	_int64;	.size	8;	.type	010;	.endef
	.def	_uint64;	.scl	13;	.tag	_int64;	.size	8;	.type	010;	.endef
	.def	_frac32;	.scl	13;	.tag	_int64;	.size	8;	.type	010;	.endef
	.def	_ufrac32;	.scl	13;	.tag	_int64;	.size	8;	.type	010;	.endef
	.def	_frac60;	.scl	13;	.tag	_int64;	.size	8;	.type	010;	.endef
	.def	_ufrac60;	.scl	13;	.tag	_int64;	.size	8;	.type	010;	.endef
	.def	_vec3f16;	.scl	13;	.dim	3;	.size	12;	.type	065;	.endef
	.def	_vec4f16;	.scl	13;	.dim	4;	.size	16;	.type	065;	.endef
	.def	_mat33f16;	.scl	13;	.dim	3,3;	.size	36;	.type	0365;	.endef
	.def	_mat44f16;	.scl	13;	.dim	4,4;	.size	64;	.type	0365;	.endef
	.def	_mat34f16;	.scl	13;	.dim	4,3;	.size	48;	.type	0365;	.endef
	.def	_vec3f30;	.scl	13;	.dim	3;	.size	12;	.type	065;	.endef
	.def	_vec4f30;	.scl	13;	.dim	4;	.size	16;	.type	065;	.endef
	.def	_mat33f30;	.scl	13;	.dim	3,3;	.size	36;	.type	0365;	.endef
	.def	_mat44f30;	.scl	13;	.dim	4,4;	.size	64;	.type	0365;	.endef
	.def	_mat34f30;	.scl	13;	.dim	4,3;	.size	48;	.type	0365;	.endef
	.def	_MathFolio;	.scl	10;	.type	010;	.size	112;	.endef
	.def	_mf;	.val	0;	.scl	8;	.tag	_Folio;	.size	112;	.type	010;	.endef
	.def	.eos;	.val	112;	.scl	102;	.tag	_MathFolio;	.size	112;	.endef
	.def	_MathFolio;	.scl	13;	.tag	_MathFolio;	.size	112;	.type	010;	.endef
	.def	_mmv3m33d;	.scl	10;	.type	010;	.size	20;	.endef
	.def	_dest;	.val	0;	.scl	8;	.dim	3;	.size	4;	.type	0325;	.endef
	.def	_src;	.val	4;	.scl	8;	.dim	3;	.size	4;	.type	0325;	.endef
	.def	_mat;	.val	8;	.scl	8;	.dim	3,3;	.size	4;	.type	01725;	.endef
	.def	_n;	.val	12;	.scl	8;	.type	05;	.endef
	.def	_count;	.val	16;	.scl	8;	.type	017;	.endef
	.def	.eos;	.val	20;	.scl	102;	.tag	_mmv3m33d;	.size	20;	.endef
	.def	_mmv3m33d;	.scl	13;	.tag	_mmv3m33d;	.size	20;	.type	010;	.endef
	.def	_ObjOffset1;	.scl	10;	.type	010;	.size	16;	.endef
	.def	_oo1_DestArrayPtrOffset;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_oo1_SrcArrayPtrOffset;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_oo1_MatOffset;	.val	8;	.scl	8;	.type	05;	.endef
	.def	_oo1_CountOffset;	.val	12;	.scl	8;	.type	05;	.endef
	.def	.eos;	.val	16;	.scl	102;	.tag	_ObjOffset1;	.size	16;	.endef
	.def	_ObjOffset1;	.scl	13;	.tag	_ObjOffset1;	.size	16;	.type	010;	.endef
	.def	_ObjOffset2;	.scl	10;	.type	010;	.size	8;	.endef
	.def	_oo2_DestMatOffset;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_oo2_SrcMatOffset;	.val	4;	.scl	8;	.type	05;	.endef
	.def	.eos;	.val	8;	.scl	102;	.tag	_ObjOffset2;	.size	8;	.endef
	.def	_ObjOffset2;	.scl	13;	.tag	_ObjOffset2;	.size	8;	.type	010;	.endef
	.def	_audio_folio_tags;	.scl	15;	.type	012;	.size	4;	.endef
	.def	_AF_TAG_AMPLITUDE;	.val	10;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_RATE;	.val	11;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_NAME;	.val	12;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_DEVICE;	.val	13;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_PITCH;	.val	14;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_VELOCITY;	.val	15;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_TEMPLATE;	.val	16;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_INSTRUMENT;	.val	17;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_FORMAT;	.val	18;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_MIN;	.val	19;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_MAX;	.val	20;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_DEFAULT;	.val	21;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_WIDTH;	.val	22;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_CHANNELS;	.val	23;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_FRAMES;	.val	24;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_BASENOTE;	.val	25;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_DETUNE;	.val	26;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_LOWNOTE;	.val	27;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_HIGHNOTE;	.val	28;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_LOWVELOCITY;	.val	29;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_HIGHVELOCITY;	.val	30;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_SUSTAINBEGIN;	.val	31;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_SUSTAINEND;	.val	32;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_RELEASEBEGIN;	.val	33;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_RELEASEEND;	.val	34;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_NUMBYTES;	.val	35;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_ADDRESS;	.val	36;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_SAMPLE;	.val	37;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_EXTERNAL;	.val	38;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_PRIORITY;	.val	39;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_SET_FLAGS;	.val	40;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_CLEAR_FLAGS;	.val	41;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_FREQUENCY;	.val	42;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_ENVELOPE;	.val	43;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_HOOKNAME;	.val	44;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_START_AT;	.val	45;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_SAMPLE_RATE;	.val	46;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_COMPRESSIONRATIO;	.val	47;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_COMPRESSIONTYPE;	.val	48;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_NUMBITS;	.val	49;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_NOTESPEROCTAVE;	.val	50;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_BASEFREQ;	.val	51;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_SUSTAINTIME;	.val	52;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_RELEASETIME;	.val	53;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_MICROSPERUNIT;	.val	54;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_DATA_OFFSET;	.val	55;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_DATA_SIZE;	.val	56;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_DELAY_LINE;	.val	57;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_RELEASEJUMP;	.val	58;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_CURRENT;	.val	59;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_STATUS;	.val	60;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_TIME_SCALE;	.val	61;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_START_TIME;	.val	62;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_IMAGE_ADDRESS;	.val	63;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_IMAGE_LENGTH;	.val	64;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_LEAVE_IN_PLACE;	.val	65;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_ALLOC_FUNCTION;	.val	66;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_FREE_FUNCTION;	.val	67;	.scl	16;	.type	013;	.endef
	.def	_AF_TAG_SCAN;	.val	68;	.scl	16;	.type	013;	.endef
	.def	.eos;	.val	4;	.scl	102;	.tag	_audio_folio_tags;	.size	4;	.endef
	.def	_DSPPResourceTypes;	.scl	15;	.type	012;	.size	4;	.endef
	.def	_DRSC_N_MEM;	.val	0;	.scl	16;	.type	013;	.endef
	.def	_DRSC_EI_MEM;	.val	1;	.scl	16;	.type	013;	.endef
	.def	_DRSC_I_MEM;	.val	2;	.scl	16;	.type	013;	.endef
	.def	_DRSC_EO_MEM;	.val	3;	.scl	16;	.type	013;	.endef
	.def	_DRSC_RBASE4;	.val	4;	.scl	16;	.type	013;	.endef
	.def	_DRSC_RBASE8;	.val	5;	.scl	16;	.type	013;	.endef
	.def	_DRSC_IN_FIFO;	.val	6;	.scl	16;	.type	013;	.endef
	.def	_DRSC_OUT_FIFO;	.val	7;	.scl	16;	.type	013;	.endef
	.def	_DRSC_TICKS;	.val	8;	.scl	16;	.type	013;	.endef
	.def	_DSPP_NUM_RSRC_TYPES;	.val	9;	.scl	16;	.type	013;	.endef
	.def	.eos;	.val	4;	.scl	102;	.tag	_DSPPResourceTypes;	.size	4;	.endef
	.def	_AudioTime;	.scl	13;	.type	017;	.endef
	.def	_DataTimePair;	.scl	10;	.type	010;	.size	8;	.endef
	.def	_dtpr_Time;	.val	0;	.scl	8;	.type	017;	.endef
	.def	_dtpr_Data;	.val	4;	.scl	8;	.type	05;	.endef
	.def	.eos;	.val	8;	.scl	102;	.tag	_DataTimePair;	.size	8;	.endef
	.def	_DataTimePair;	.scl	13;	.tag	_DataTimePair;	.size	8;	.type	010;	.endef
	.def	_Int8;	.scl	13;	.type	02;	.endef
	.def	_UInt8;	.scl	13;	.type	014;	.endef
	.def	_Int16;	.scl	13;	.type	03;	.endef
	.def	_UInt16;	.scl	13;	.type	015;	.endef
	.def	_Int32;	.scl	13;	.type	05;	.endef
	.def	_UInt32;	.scl	13;	.type	017;	.endef
	.def	_RGB555;	.scl	13;	.type	015;	.endef
	.def	_RGB888_Tag;	.scl	10;	.type	010;	.size	4;	.endef
	.def	_unused;	.val	0;	.scl	8;	.type	014;	.endef
	.def	_red;	.val	1;	.scl	8;	.type	014;	.endef
	.def	_green;	.val	2;	.scl	8;	.type	014;	.endef
	.def	_blue;	.val	3;	.scl	8;	.type	014;	.endef
	.def	.eos;	.val	4;	.scl	102;	.tag	_RGB888_Tag;	.size	4;	.endef
	.def	_RGB;	.scl	13;	.tag	_RGB888_Tag;	.size	4;	.type	010;	.endef
	.def	_WrapperChunk;	.scl	10;	.type	010;	.size	12;	.endef
	.def	_chunk_ID;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_chunk_size;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_data;	.val	8;	.scl	8;	.dim	1;	.size	1;	.type	062;	.endef
	.def	.eos;	.val	12;	.scl	102;	.tag	_WrapperChunk;	.size	12;	.endef
	.def	_WrapperChunk;	.scl	13;	.tag	_WrapperChunk;	.size	12;	.type	010;	.endef
	.def	_ImageCC;	.scl	10;	.type	010;	.size	28;	.endef
	.def	_chunk_ID;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_chunk_size;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_w;	.val	8;	.scl	8;	.type	05;	.endef
	.def	_h;	.val	12;	.scl	8;	.type	05;	.endef
	.def	_bytesperrow;	.val	16;	.scl	8;	.type	05;	.endef
	.def	_bitsperpixel;	.val	20;	.scl	8;	.type	02;	.endef
	.def	_numcomponents;	.val	21;	.scl	8;	.type	02;	.endef
	.def	_numplanes;	.val	22;	.scl	8;	.type	02;	.endef
	.def	_colorspace;	.val	23;	.scl	8;	.type	02;	.endef
	.def	_comptype;	.val	24;	.scl	8;	.type	02;	.endef
	.def	_hvformat;	.val	25;	.scl	8;	.type	02;	.endef
	.def	_pixelorder;	.val	26;	.scl	8;	.type	02;	.endef
	.def	_version;	.val	27;	.scl	8;	.type	02;	.endef
	.def	.eos;	.val	28;	.scl	102;	.tag	_ImageCC;	.size	28;	.endef
	.def	_ImageCC;	.scl	13;	.tag	_ImageCC;	.size	28;	.type	010;	.endef
	.def	_PixelChunk;	.scl	10;	.type	010;	.size	12;	.endef
	.def	_chunk_ID;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_chunk_size;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_pixels;	.val	8;	.scl	8;	.dim	1;	.size	1;	.type	062;	.endef
	.def	.eos;	.val	12;	.scl	102;	.tag	_PixelChunk;	.size	12;	.endef
	.def	_PixelChunk;	.scl	13;	.tag	_PixelChunk;	.size	12;	.type	010;	.endef
	.def	_CCC;	.scl	10;	.type	010;	.size	80;	.endef
	.def	_chunk_ID;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_chunk_size;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_ccbversion;	.val	8;	.scl	8;	.type	017;	.endef
	.def	_ccb_Flags;	.val	12;	.scl	8;	.type	017;	.endef
	.def	_ccb_NextPtr;	.val	16;	.scl	8;	.tag	_CCB;	.size	68;	.type	030;	.endef
	.def	_ccb_CelData;	.val	20;	.scl	8;	.dim	0;	.size	4;	.type	0337;	.endef
	.def	_ccb_PIPPtr;	.val	24;	.scl	8;	.type	021;	.endef
	.def	_ccb_X;	.val	28;	.scl	8;	.type	05;	.endef
	.def	_ccb_Y;	.val	32;	.scl	8;	.type	05;	.endef
	.def	_ccb_hdx;	.val	36;	.scl	8;	.type	05;	.endef
	.def	_ccb_hdy;	.val	40;	.scl	8;	.type	05;	.endef
	.def	_ccb_vdx;	.val	44;	.scl	8;	.type	05;	.endef
	.def	_ccb_vdy;	.val	48;	.scl	8;	.type	05;	.endef
	.def	_ccb_ddx;	.val	52;	.scl	8;	.type	05;	.endef
	.def	_ccb_ddy;	.val	56;	.scl	8;	.type	05;	.endef
	.def	_ccb_PPMPC;	.val	60;	.scl	8;	.type	017;	.endef
	.def	_ccb_PRE0;	.val	64;	.scl	8;	.type	017;	.endef
	.def	_ccb_PRE1;	.val	68;	.scl	8;	.type	017;	.endef
	.def	_ccb_Width;	.val	72;	.scl	8;	.type	05;	.endef
	.def	_ccb_Height;	.val	76;	.scl	8;	.type	05;	.endef
	.def	.eos;	.val	80;	.scl	102;	.tag	_CCC;	.size	80;	.endef
	.def	_CCC;	.scl	13;	.tag	_CCC;	.size	80;	.type	010;	.endef
	.def	_LoopRec;	.scl	10;	.type	010;	.size	16;	.endef
	.def	_loopStart;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_loopEnd;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_repeatCount;	.val	8;	.scl	8;	.type	05;	.endef
	.def	_repeatDelay;	.val	12;	.scl	8;	.type	05;	.endef
	.def	.eos;	.val	16;	.scl	102;	.tag	_LoopRec;	.size	16;	.endef
	.def	_LoopRec;	.scl	13;	.tag	_LoopRec;	.size	16;	.type	010;	.endef
	.def	_AnimChunk;	.scl	10;	.type	010;	.size	48;	.endef
	.def	_chunk_ID;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_chunk_size;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_version;	.val	8;	.scl	8;	.type	05;	.endef
	.def	_animType;	.val	12;	.scl	8;	.type	05;	.endef
	.def	_numFrames;	.val	16;	.scl	8;	.type	05;	.endef
	.def	_frameRate;	.val	20;	.scl	8;	.type	05;	.endef
	.def	_startFrame;	.val	24;	.scl	8;	.type	05;	.endef
	.def	_numLoops;	.val	28;	.scl	8;	.type	05;	.endef
	.def	_loop;	.val	32;	.scl	8;	.tag	_LoopRec;	.dim	1;	.size	16;	.type	070;	.endef
	.def	.eos;	.val	48;	.scl	102;	.tag	_AnimChunk;	.size	48;	.endef
	.def	_AnimChunk;	.scl	13;	.tag	_AnimChunk;	.size	48;	.type	010;	.endef
	.def	_PLUTChunk;	.scl	10;	.type	010;	.size	16;	.endef
	.def	_chunk_ID;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_chunk_size;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_numentries;	.val	8;	.scl	8;	.type	05;	.endef
	.def	_PLUT;	.val	12;	.scl	8;	.dim	1;	.size	2;	.type	075;	.endef
	.def	.eos;	.val	16;	.scl	102;	.tag	_PLUTChunk;	.size	16;	.endef
	.def	_PLUTChunk;	.scl	13;	.tag	_PLUTChunk;	.size	16;	.type	010;	.endef
	.def	_VDL_REC;	.scl	10;	.type	010;	.size	160;	.endef
	.def	_controlword;	.val	0;	.scl	8;	.type	017;	.endef
	.def	_curLineBuffer;	.val	4;	.scl	8;	.type	017;	.endef
	.def	_prevLineBuffer;	.val	8;	.scl	8;	.type	017;	.endef
	.def	_nextVDLEntry;	.val	12;	.scl	8;	.type	017;	.endef
	.def	_displayControl;	.val	16;	.scl	8;	.type	017;	.endef
	.def	_CLUTEntry;	.val	20;	.scl	8;	.dim	32;	.size	128;	.type	077;	.endef
	.def	_backgroundEntry;	.val	148;	.scl	8;	.type	017;	.endef
	.def	_filler1;	.val	152;	.scl	8;	.type	017;	.endef
	.def	_filler2;	.val	156;	.scl	8;	.type	017;	.endef
	.def	.eos;	.val	160;	.scl	102;	.tag	_VDL_REC;	.size	160;	.endef
	.def	_VDL_REC;	.scl	13;	.tag	_VDL_REC;	.size	160;	.type	010;	.endef
	.def	_VDLCHUNK;	.scl	10;	.type	010;	.size	172;	.endef
	.def	_chunk_ID;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_chunk_size;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_vdlcount;	.val	8;	.scl	8;	.type	05;	.endef
	.def	_vdl;	.val	12;	.scl	8;	.tag	_VDL_REC;	.dim	1;	.size	160;	.type	070;	.endef
	.def	.eos;	.val	172;	.scl	102;	.tag	_VDLCHUNK;	.size	172;	.endef
	.def	_VdlChunk;	.scl	13;	.tag	_VDLCHUNK;	.size	172;	.type	010;	.endef
	.def	_Cpyr;	.scl	10;	.type	010;	.size	12;	.endef
	.def	_chunk_ID;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_chunk_size;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_copyright;	.val	8;	.scl	8;	.dim	1;	.size	1;	.type	062;	.endef
	.def	.eos;	.val	12;	.scl	102;	.tag	_Cpyr;	.size	12;	.endef
	.def	_Cpyr;	.scl	13;	.tag	_Cpyr;	.size	12;	.type	010;	.endef
	.def	_Desc;	.scl	10;	.type	010;	.size	12;	.endef
	.def	_chunk_ID;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_chunk_size;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_descrip;	.val	8;	.scl	8;	.dim	1;	.size	1;	.type	062;	.endef
	.def	.eos;	.val	12;	.scl	102;	.tag	_Desc;	.size	12;	.endef
	.def	_Desc;	.scl	13;	.tag	_Desc;	.size	12;	.type	010;	.endef
	.def	_Kwrd;	.scl	10;	.type	010;	.size	12;	.endef
	.def	_chunk_ID;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_chunk_size;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_keywords;	.val	8;	.scl	8;	.dim	1;	.size	1;	.type	062;	.endef
	.def	.eos;	.val	12;	.scl	102;	.tag	_Kwrd;	.size	12;	.endef
	.def	_Kwrd;	.scl	13;	.tag	_Kwrd;	.size	12;	.type	010;	.endef
	.def	_Crdt;	.scl	10;	.type	010;	.size	12;	.endef
	.def	_chunk_ID;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_chunk_size;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_credits;	.val	8;	.scl	8;	.dim	1;	.size	1;	.type	062;	.endef
	.def	.eos;	.val	12;	.scl	102;	.tag	_Crdt;	.size	12;	.endef
	.def	_Crdt;	.scl	13;	.tag	_Crdt;	.size	12;	.type	010;	.endef
	.def	_ScreenContext_TAG;	.scl	10;	.type	010;	.size	88;	.endef
	.def	_sc_nScreens;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_sc_curScreen;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_sc_nFrameBufferPages;	.val	8;	.scl	8;	.type	05;	.endef
	.def	_sc_nFrameByteCount;	.val	12;	.scl	8;	.type	05;	.endef
	.def	_sc_Screens;	.val	16;	.scl	8;	.dim	6;	.size	24;	.type	065;	.endef
	.def	_sc_BitmapItems;	.val	40;	.scl	8;	.dim	6;	.size	24;	.type	065;	.endef
	.def	_sc_Bitmaps;	.val	64;	.scl	8;	.tag	_Bitmap;	.dim	6;	.size	24;	.type	0170;	.endef
	.def	.eos;	.val	88;	.scl	102;	.tag	_ScreenContext_TAG;	.size	88;	.endef
	.def	_ScreenContext;	.scl	13;	.tag	_ScreenContext_TAG;	.size	88;	.type	010;	.endef
	.def	_tag_AnimFrame;	.scl	10;	.type	010;	.size	16;	.endef
	.def	_af_CCB;	.val	0;	.scl	8;	.tag	_CCB;	.size	68;	.type	030;	.endef
	.def	_af_PLUT;	.val	4;	.scl	8;	.type	022;	.endef
	.def	_af_pix;	.val	8;	.scl	8;	.type	022;	.endef
	.def	_reserved;	.val	12;	.scl	8;	.type	05;	.endef
	.def	.eos;	.val	16;	.scl	102;	.tag	_tag_AnimFrame;	.size	16;	.endef
	.def	_AnimFrame;	.scl	13;	.tag	_tag_AnimFrame;	.size	16;	.type	010;	.endef
	.def	_tag_ANIM;	.scl	10;	.type	010;	.size	20;	.endef
	.def	_num_Frames;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_cur_Frame;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_num_Alloced_Frames;	.val	8;	.scl	8;	.type	05;	.endef
	.def	_pentries;	.val	12;	.scl	8;	.tag	_tag_AnimFrame;	.size	16;	.type	030;	.endef
	.def	_dataBuffer;	.val	16;	.scl	8;	.type	021;	.endef
	.def	.eos;	.val	20;	.scl	102;	.tag	_tag_ANIM;	.size	20;	.endef
	.def	_ANIM;	.scl	13;	.tag	_tag_ANIM;	.size	20;	.type	010;	.endef
	.def	_tag_SoundInfo;	.scl	10;	.type	010;	.size	20;	.endef
	.def	_iSoundEffect;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_iSoundData;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_iSoundTemplate;	.val	8;	.scl	8;	.type	05;	.endef
	.def	_iSoundAttachment;	.val	12;	.scl	8;	.type	05;	.endef
	.def	_next;	.val	16;	.scl	8;	.tag	_tag_SoundInfo;	.size	20;	.type	030;	.endef
	.def	.eos;	.val	20;	.scl	102;	.tag	_tag_SoundInfo;	.size	20;	.endef
	.def	_SoundInfo;	.scl	13;	.tag	_tag_SoundInfo;	.size	20;	.type	010;	.endef
	.def	_tag_Rectf16;	.scl	10;	.type	010;	.size	16;	.endef
	.def	_rectf16_XLeft;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_rectf16_YTop;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_rectf16_XRight;	.val	8;	.scl	8;	.type	05;	.endef
	.def	_rectf16_YBottom;	.val	12;	.scl	8;	.type	05;	.endef
	.def	.eos;	.val	16;	.scl	102;	.tag	_tag_Rectf16;	.size	16;	.endef
	.def	_Rectf16;	.scl	13;	.tag	_tag_Rectf16;	.size	16;	.type	010;	.endef
	.def	_tag_MoveVect;	.scl	10;	.type	010;	.size	8;	.endef
	.def	_xVector;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_yVector;	.val	4;	.scl	8;	.type	05;	.endef
	.def	.eos;	.val	8;	.scl	102;	.tag	_tag_MoveVect;	.size	8;	.endef
	.def	_MoveVect;	.scl	13;	.tag	_tag_MoveVect;	.size	8;	.type	010;	.endef
	.def	_tag_MoveRec;	.scl	10;	.type	010;	.size	64;	.endef
	.def	_curQuadf16;	.val	0;	.scl	8;	.tag	_tag_MoveVect;	.dim	4;	.size	32;	.type	070;	.endef
	.def	_quadIncr;	.val	32;	.scl	8;	.tag	_tag_MoveVect;	.dim	4;	.size	32;	.type	070;	.endef
	.def	.eos;	.val	64;	.scl	102;	.tag	_tag_MoveRec;	.size	64;	.endef
	.def	_MoveRec;	.scl	13;	.tag	_tag_MoveRec;	.size	64;	.type	010;	.endef
	.def	_CelLink;	.scl	10;	.type	010;	.size	12;	.endef
	.def	_next;	.val	0;	.scl	8;	.tag	_CelLink;	.size	12;	.type	030;	.endef
	.def	_prev;	.val	4;	.scl	8;	.tag	_CelLink;	.size	12;	.type	030;	.endef
	.def	_ccb;	.val	8;	.scl	8;	.tag	_CCB;	.size	68;	.type	030;	.endef
	.def	.eos;	.val	12;	.scl	102;	.tag	_CelLink;	.size	12;	.endef
	.def	_CelLink;	.scl	13;	.tag	_CelLink;	.size	12;	.type	010;	.endef
	.def	_CFileInfo;	.scl	10;	.type	010;	.size	16;	.endef
	.def	_cfi_fileHash;	.val	0;	.scl	8;	.type	017;	.endef
	.def	_cfi_fileLen;	.val	4;	.scl	8;	.type	017;	.endef
	.def	_cfi_filePos;	.val	8;	.scl	8;	.type	017;	.endef
	.def	_cfi_fileChecksum;	.val	12;	.scl	8;	.type	017;	.endef
	.def	.eos;	.val	16;	.scl	102;	.tag	_CFileInfo;	.size	16;	.endef
	.def	_CFileInfo;	.scl	13;	.tag	_CFileInfo;	.size	16;	.type	010;	.endef
	.def	_CFileTracker;	.scl	10;	.type	010;	.size	84;	.endef
	.def	_cft_file;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_cft_ioReq;	.val	4;	.scl	8;	.dim	8;	.size	32;	.type	065;	.endef
	.def	_cft_ioSent;	.val	36;	.scl	8;	.dim	8;	.size	32;	.type	077;	.endef
	.def	_cft_reqCheck;	.val	68;	.scl	8;	.type	017;	.endef
	.def	_cft_reqUse;	.val	72;	.scl	8;	.type	017;	.endef
	.def	_cygs_fh;	.val	76;	.scl	8;	.type	05;	.endef
	.def	_cygs_sr;	.val	80;	.scl	8;	.type	05;	.endef
	.def	.eos;	.val	84;	.scl	102;	.tag	_CFileTracker;	.size	84;	.endef
	.def	_CFileTracker;	.scl	13;	.tag	_CFileTracker;	.size	84;	.type	010;	.endef
	.def	_CFile;	.scl	10;	.type	010;	.size	112;	.endef
	.def	_cf_fileInfo;	.val	0;	.scl	8;	.tag	_CFileInfo;	.size	16;	.type	030;	.endef
	.def	_cf_curPos;	.val	4;	.scl	8;	.type	05;	.endef
	.def	_cf_cTrack;	.val	8;	.scl	8;	.tag	_CFileTracker;	.size	84;	.type	030;	.endef
	.def	_cf_cTrackX;	.val	12;	.scl	8;	.tag	_CFileTracker;	.size	84;	.type	010;	.endef
	.def	_cf_fileInfoX;	.val	96;	.scl	8;	.tag	_CFileInfo;	.size	16;	.type	010;	.endef
	.def	.eos;	.val	112;	.scl	102;	.tag	_CFile;	.size	112;	.endef
	.def	_CFile;	.scl	13;	.tag	_CFile;	.size	112;	.type	010;	.endef
	.def	_CFileIOReq;	.scl	10;	.type	010;	.size	72;	.endef
	.def	_creq_file;	.val	0;	.scl	8;	.tag	_CFile;	.size	112;	.type	030;	.endef
	.def	_creq_reqID;	.val	4;	.scl	8;	.type	017;	.endef
	.def	_cygs_rr;	.val	8;	.scl	8;	.tag	_READ_REQUEST;	.size	64;	.type	010;	.endef
	.def	.eos;	.val	72;	.scl	102;	.tag	_CFileIOReq;	.size	72;	.endef
	.def	_CFileIOReq;	.scl	13;	.tag	_CFileIOReq;	.size	72;	.type	010;	.endef
	.def	_CDirectory;	.scl	10;	.type	010;	.size	468;	.endef
	.def	_cdir_bank;	.val	0;	.scl	8;	.type	05;	.endef
	.def	_cdir_dataDir;	.val	4;	.scl	8;	.dim	256;	.size	256;	.type	062;	.endef
	.def	_cdir_nameTbl;	.val	260;	.scl	8;	.type	022;	.endef
	.def	_cdir_file;	.val	264;	.scl	8;	.tag	_CFile;	.size	112;	.type	010;	.endef
	.def	_cdir_fileTracker;	.val	376;	.scl	8;	.tag	_CFileTracker;	.size	84;	.type	010;	.endef
	.def	_cdir_numFiles;	.val	460;	.scl	8;	.type	05;	.endef
	.def	_cdir_fileInfo;	.val	464;	.scl	8;	.tag	_CFileInfo;	.size	16;	.type	030;	.endef
	.def	.eos;	.val	468;	.scl	102;	.tag	_CDirectory;	.size	468;	.endef
	.def	_CDirectory;	.scl	13;	.tag	_CDirectory;	.size	468;	.type	010;	.endef
	.def	_Uint8;	.scl	13;	.type	014;	.endef
	.def	_Sint8;	.scl	13;	.type	02;	.endef
	.def	_Uint16;	.scl	13;	.type	015;	.endef
	.def	_Sint16;	.scl	13;	.type	03;	.endef
	.def	_Uint32;	.scl	13;	.type	017;	.endef
	.def	_Sint32;	.scl	13;	.type	05;	.endef
	.def	_Float32;	.scl	13;	.type	06;	.endef
	.def	_Float64;	.scl	13;	.type	07;	.endef
	.def	_Int;	.scl	13;	.type	04;	.endef
	.def	_Bool;	.scl	13;	.type	04;	.endef
	.def	_BooleanSwitch;	.scl	15;	.type	012;	.size	4;	.endef
	.def	_OFF;	.val	0;	.scl	16;	.type	013;	.endef
	.def	_ON;	.val	1;	.scl	16;	.type	013;	.endef
	.def	.eos;	.val	4;	.scl	102;	.tag	_BooleanSwitch;	.size	4;	.endef
	.def	_Judgement;	.scl	15;	.type	012;	.size	4;	.endef
	.def	_OK;	.val	0;	.scl	16;	.type	013;	.endef
	.def	_NG;	.val	-1;	.scl	16;	.type	013;	.endef
	.def	.eos;	.val	4;	.scl	102;	.tag	_Judgement;	.size	4;	.endef
	.def	_CdcStatus;	.scl	15;	.type	012;	.size	4;	.endef
	.def	_CDC_ST_BUSY;	.val	0;	.scl	16;	.type	013;	.endef
	.def	_CDC_ST_PAUSE;	.val	1;	.scl	16;	.type	013;	.endef
	.def	_CDC_ST_STANDBY;	.val	2;	.scl	16;	.type	013;	.endef
	.def	_CDC_ST_PLAY;	.val	3;	.scl	16;	.type	013;	.endef
	.def	_CDC_ST_SEEK;	.val	4;	.scl	16;	.type	013;	.endef
	.def	_CDC_ST_SCAN;	.val	5;	.scl	16;	.type	013;	.endef
	.def	_CDC_ST_OPEN;	.val	6;	.scl	16;	.type	013;	.endef
	.def	_CDC_ST_NODISC;	.val	7;	.scl	16;	.type	013;	.endef
	.def	_CDC_ST_RETRY;	.val	8;	.scl	16;	.type	013;	.endef
	.def	_CDC_ST_ERROR;	.val	9;	.scl	16;	.type	013;	.endef
	.def	_CDC_ST_FATAL;	.val	10;	.scl	16;	.type	013;	.endef
	.def	_CDC_ST_PERI;	.val	32;	.scl	16;	.type	013;	.endef
	.def	_CDC_ST_TRNS;	.val	64;	.scl	16;	.type	013;	.endef
	.def	_CDC_ST_WAIT;	.val	128;	.scl	16;	.type	013;	.endef
	.def	_CDC_ST_REJECT;	.val	255;	.scl	16;	.type	013;	.endef
	.def	.eos;	.val	4;	.scl	102;	.tag	_CdcStatus;	.size	4;	.endef
	.def	_CdcErrCode;	.scl	15;	.type	012;	.size	4;	.endef
	.def	_CDC_ERR_OK;	.val	0;	.scl	16;	.type	013;	.endef
	.def	_CDC_ERR_CMDBUSY;	.val	-1;	.scl	16;	.type	013;	.endef
	.def	_CDC_ERR_CMDNG;	.val	-2;	.scl	16;	.type	013;	.endef
	.def	_CDC_ERR_TMOUT;	.val	-3;	.scl	16;	.type	013;	.endef
	.def	_CDC_ERR_PUT;	.val	-4;	.scl	16;	.type	013;	.endef
	.def	_CDC_ERR_REJECT;	.val	-5;	.scl	16;	.type	013;	.endef
	.def	_CDC_ERR_WAIT;	.val	-6;	.scl	16;	.type	013;	.endef
	.def	_CDC_ERR_TRNS;	.val	-7;	.scl	16;	.type	013;	.endef
	.def	_CDC_ERR_PERI;	.val	-8;	.scl	16;	.type	013;	.endef
	.def	.eos;	.val	4;	.scl	102;	.tag	_CdcErrCode;	.size	4;	.endef
	.def	_CdcPosType;	.scl	15;	.type	012;	.size	4;	.endef
	.def	_CDC_PTYPE_DFL;	.val	0;	.scl	16;	.type	013;	.endef
	.def	_CDC_PTYPE_FAD;	.val	1;	.scl	16;	.type	013;	.endef
	.def	_CDC_PTYPE_TNO;	.val	2;	.scl	16;	.type	013;	.endef
	.def	_CDC_PTYPE_NOCHG;	.val	3;	.scl	16;	.type	013;	.endef
	.def	_CDC_PTYPE_END;	.val	4;	.scl	16;	.type	013;	.endef
	.def	.eos;	.val	4;	.scl	102;	.tag	_CdcPosType;	.size	4;	.endef
	.def	_CdcSubMode;	.scl	15;	.type	012;	.size	4;	.endef
	.def	_CDC_SM_EOR;	.val	1;	.scl	16;	.type	013;	.endef
	.def	_CDC_SM_VIDEO;	.val	2;	.scl	16;	.type	013;	.endef
	.def	_CDC_SM_AUDIO;	.val	4;	.scl	16;	.type	013;	.endef
	.def	_CDC_SM_DATA;	.val	8;	.scl	16;	.type	013;	.endef
	.def	_CDC_SM_TRIG;	.val	16;	.scl	16;	.type	013;	.endef
	.def	_CDC_SM_FORM;	.val	32;	.scl	16;	.type	013;	.endef
	.def	_CDC_SM_RT;	.val	64;	.scl	16;	.type	013;	.endef
	.def	_CDC_SM_EOF;	.val	128;	.scl	16;	.type	013;	.endef
	.def	.eos;	.val	4;	.scl	102;	.tag	_CdcSubMode;	.size	4;	.endef
	.def	_CdcDrdyType;	.scl	15;	.type	012;	.size	4;	.endef
	.def	_CDC_DRDY_GET;	.val	0;	.scl	16;	.type	013;	.endef
	.def	_CDC_DRDY_PUT;	.val	1;	.scl	16;	.type	013;	.endef
	.def	_CDC_DRDY_END;	.val	2;	.scl	16;	.type	013;	.endef
	.def	.eos;	.val	4;	.scl	102;	.tag	_CdcDrdyType;	.size	4;	.endef
	.def	_CdcScanDir;	.scl	15;	.type	012;	.size	4;	.endef
	.def	_CDC_SCAN_FWD;	.val	0;	.scl	16;	.type	013;	.endef
	.def	_CDC_SCAN_RVS;	.val	1;	.scl	16;	.type	013;	.endef
	.def	.eos;	.val	4;	.scl	102;	.tag	_CdcScanDir;	.size	4;	.endef
	.def	_CdcSctLen;	.scl	15;	.type	012;	.size	4;	.endef
	.def	_CDC_SLEN_2048;	.val	0;	.scl	16;	.type	013;	.endef
	.def	_CDC_SLEN_2336;	.val	1;	.scl	16;	.type	013;	.endef
	.def	_CDC_SLEN_2340;	.val	2;	.scl	16;	.type	013;	.endef
	.def	_CDC_SLEN_2352;	.val	3;	.scl	16;	.type	013;	.endef
	.def	_CDC_SLEN_NOCHG;	.val	255;	.scl	16;	.type	013;	.endef
	.def	.eos;	.val	4;	.scl	102;	.tag	_CdcSctLen;	.size	4;	.endef
	.def	_CdcCopyErr;	.scl	15;	.type	012;	.size	4;	.endef
	.def	_CDC_COPY_OK;	.val	0;	.scl	16;	.type	013;	.endef
	.def	_CDC_COPY_NG;	.val	1;	.scl	16;	.type	013;	.endef
	.def	_CDC_COPY_BUSY;	.val	255;	.scl	16;	.type	013;	.endef
	.def	.eos;	.val	4;	.scl	102;	.tag	_CdcCopyErr;	.size	4;	.endef
	.def	_.4fake;	.scl	10;	.type	010;	.size	8;	.endef
	.def	_flgrep;	.val	0;	.scl	8;	.type	014;	.endef
	.def	_ctladr;	.val	1;	.scl	8;	.type	014;	.endef
	.def	_tno;	.val	2;	.scl	8;	.type	014;	.endef
	.def	_idx;	.val	3;	.scl	8;	.type	014;	.endef
	.def	_fad;	.val	4;	.scl	8;	.type	05;	.endef
	.def	.eos;	.val	8;	.scl	102;	.tag	_.4fake;	.size	8;	.endef
	.def	_.5fake;	.scl	10;	.type	010;	.size	12;	.endef
	.def	_status;	.val	0;	.scl	8;	.type	014;	.endef

0x80000

LOCAL
GEXS
\SEGALIB\INCLUDE\
G:\USERS\GEX\SATURN\
C:\GEX\SATURN\
FAC 
SPRITE  H  !
CONTROL FAC'
FILESERVH  !
SATURN  H   
MEM_MGR H  !
JOYPAD  H  !
DUK     H  !
DITCH      
TDDEF  H  
TRING  H  
DP1    H  
ANSI   H  
SYS        

0x8043A

# 10 "saturn.c" 2
# 1 "segalib/include/sega_tim.h" 1
# 1 "segalib/include/sega_xpt.h" 1
# 82 "segalib/include/sega_xpt.h"
# 26 "segalib/include/sega_tim.h" 2

0x80B1E

# 11 "saturn.c" 2
# 1 "segalib/include/sega_cdc.h" 1
# 1 "segalib/include/sega_xpt.h" 1
# 82 "segalib/include/sega_xpt.h"
# 22 "segalib/include/sega_cdc.h" 2

0x80C95

enum CdcStatus {
     
    CDC_ST_BUSY     = 0x00,      
    CDC_ST_PAUSE    = 0x01,      
    CDC_ST_STANDBY  = 0x02,      
    CDC_ST_PLAY     = 0x03,      
    CDC_ST_SEEK     = 0x04,      
    CDC_ST_SCAN     = 0x05,      
    CDC_ST_OPEN     = 0x06,      
    CDC_ST_NODISC   = 0x07,      
    CDC_ST_RETRY    = 0x08,      
    CDC_ST_ERROR    = 0x09,      
    CDC_ST_FATAL    = 0x0a,      

     
    CDC_ST_PERI     = 0x20,      
    CDC_ST_TRNS     = 0x40,      
    CDC_ST_WAIT     = 0x80,      
    CDC_ST_REJECT   = 0xff       
};

 
enum CdcErrCode {
    CDC_ERR_OK = OK,     

    CDC_ERR_CMDBUSY=-1,  
    CDC_ERR_CMDNG  =-2,  
    CDC_ERR_TMOUT  =-3,  
    CDC_ERR_PUT    =-4,  
    CDC_ERR_REJECT =-5,  
    CDC_ERR_WAIT   =-6,  
    CDC_ERR_TRNS   =-7,  
    CDC_ERR_PERI   =-8   
};

 
enum CdcPosType {
    CDC_PTYPE_DFL,           
    CDC_PTYPE_FAD,           
    CDC_PTYPE_TNO,           
    CDC_PTYPE_NOCHG,         

    CDC_PTYPE_END
};

 
enum CdcSubMode {
    CDC_SM_EOR   = 0x01,     
    CDC_SM_VIDEO = 0x02,     
    CDC_SM_AUDIO = 0x04,     
    CDC_SM_DATA  = 0x08,     
    CDC_SM_TRIG  = 0x10,     
    CDC_SM_FORM  = 0x20,     
    CDC_SM_RT    = 0x40,     
    CDC_SM_EOF   = 0x80      
};

 
enum CdcDrdyType {
    CDC_DRDY_GET,            
    CDC_DRDY_PUT,            

    CDC_DRDY_END
};

 
enum CdcScanDir {
    CDC_SCAN_FWD = 0x00,     
    CDC_SCAN_RVS = 0x01      
};

 
enum CdcSctLen {
    CDC_SLEN_2048  = 0,      
    CDC_SLEN_2336  = 1,      
    CDC_SLEN_2340  = 2,      
    CDC_SLEN_2352  = 3,      
    CDC_SLEN_NOCHG = 0xff    
};

 
enum CdcCopyErr {
    CDC_COPY_OK   = 0,       
    CDC_COPY_NG   = 1,       
    CDC_COPY_BUSY = 0xff     
};

0x81436

typedef struct {
    Uint8   status;          
    struct {                 
        Uint8   flgrep;      
        Uint8   ctladr;      
        Uint8   tno;         
        Uint8   idx;         
        Sint32  fad;         
    } report;
} CdcStat;

 
typedef struct {
    Uint8   hflag;           
    Uint8   ver;             
    Uint8   mpver;           
    Uint8   drv;             
    Uint8   rev;             
} CdcHw;

 
typedef struct {
    Sint32 ptype;            
    union {
        Sint32 fad;          
        struct {
            Uint8 tno;       
            Uint8 idx;       
        } trkidx;
    } pbody;
} CdcPos;

 
typedef struct {
    CdcPos  start;           
    CdcPos  end;             
    Uint8   pmode;           
} CdcPly;

 
typedef struct {
    Uint8   fn;              
    Uint8   cn;              
    Uint8   smmsk;           
    Uint8   smval;           
    Uint8   cimsk;           
    Uint8   cival;           
} CdcSubh;

 
typedef struct {
    Sint32  fad;             
    Uint8   fn;              
    Uint8   cn;              
    Uint8   sm;              
    Uint8   ci;              
} CdcSct;

 
typedef struct {
    Sint32  fad;             
    Sint32  size;            
    Uint8   unit;            
    Uint8   gap;             
    Uint8   fn;              
    Uint8   atr;             
} CdcFile;

0x819E3

Sint32  CDC_GetCurStat(CdcStat *stat);
Sint32  CDC_GetLastStat(CdcStat *stat);
Sint32  CDC_GetHwInfo(CdcHw *hw);
Sint32  CDC_TgetToc(Uint32 *toc);
Sint32  CDC_GetSes(Sint32 sesno, Uint32 *ses);
Sint32  CDC_CdInit(Sint32 iflag, Sint32 stnby, Sint32 ecc, Sint32 retry);
Sint32  CDC_CdOpen(void);
Sint32  CDC_DataReady(Sint32 dtype);
Sint32  CDC_DataEnd(Sint32 *cdwnum);
Sint32  CDC_GetPeriStat(CdcStat *stat);

 
Sint32  CDC_CdPlay(CdcPly *ply);
Sint32  CDC_CdSeek(CdcPos *pos);
Sint32  CDC_CdScan(Sint32 scandir);

 
Sint32  CDC_TgetScdQch(Uint16 *qcode);
Sint32  CDC_TgetScdRwch(Uint16 *rwcode, Sint32 *scdflag);

 
Sint32  CDC_CdSetCon(Sint32 filtno);
Sint32  CDC_CdGetCon(Sint32 *filtno);
Sint32  CDC_CdGetLastBuf(Sint32 *bufno);

 
Sint32  CDC_SetFiltRange(Sint32 filtno, Sint32 fad, Sint32 fasnum);
Sint32  CDC_GetFiltRange(Sint32 filtno, Sint32 *fad, Sint32 *fasnum);
Sint32  CDC_SetFiltSubh(Sint32 filtno, CdcSubh *subh);
Sint32  CDC_GetFiltSubh(Sint32 filtno, CdcSubh *subh);
Sint32  CDC_SetFiltMode(Sint32 filtno, Sint32 fmode);
Sint32  CDC_GetFiltMode(Sint32 filtno, Sint32 *fmode);
Sint32  CDC_SetFiltCon(Sint32 filtno, Sint32 cflag, Sint32 bufno,
                       Sint32 flnout);
Sint32  CDC_GetFiltCon(Sint32 filtno, Sint32 *bufno, Sint32 *flnout);
Sint32  CDC_ResetSelector(Sint32 rflag, Sint32 bufno);

 
Sint32  CDC_GetBufSiz(Sint32 *totalsiz, Sint32 *bufnum, Sint32 *freesiz);
Sint32  CDC_GetSctNum(Sint32 bufno, Sint32 *snum);
Sint32  CDC_CalActSiz(Sint32 bufno, Sint32 spos, Sint32 snum);
Sint32  CDC_GetActSiz(Sint32 *actwsiz);
Sint32  CDC_GetSctInfo(Sint32 bufno, Sint32 spos, CdcSct *sct);
Sint32  CDC_ExeFadSearch(Sint32 bufno, Sint32 spos, Sint32 fad);
Sint32  CDC_GetFadSearch(Sint32 *bufno, Sint32 *spos, Sint32 *fad);

 
Sint32  CDC_SetSctLen(Sint32 getslen, Sint32 putslen);
Sint32  CDC_GetSctData(Sint32 bufno, Sint32 spos, Sint32 snum);
Sint32  CDC_DelSctData(Sint32 bufno, Sint32 spos, Sint32 snum);
Sint32  CDC_GetdelSctData(Sint32 bufno, Sint32 spos, Sint32 snum);
Sint32  CDC_PutSctData(Sint32 filtno, Sint32 snum);
Sint32  CDC_CopySctData(Sint32 srcbn, Sint32 spos, Sint32 snum, Sint32 dstfln);
Sint32  CDC_MoveSctData(Sint32 srcbn, Sint32 spos, Sint32 snum, Sint32 dstfln);
Sint32  CDC_GetCopyErr(Sint32 *cpyerr);

 
Sint32  CDC_ChgDir(Sint32 filtno, Sint32 fid);
Sint32  CDC_ReadDir(Sint32 filtno, Sint32 fid);
Sint32  CDC_GetFileScope(Sint32 *fid, Sint32 *infnum, Bool *drend);
Sint32  CDC_TgetFileInfo(Sint32 fid, CdcFile *file);
Sint32  CDC_ReadFile(Sint32 filtno, Sint32 fid, Sint32 offset);
Sint32  CDC_AbortFile(void);

 
Uint32  *CDC_GetDataPtr(void);
Uint16  CDC_GetHirqReq(void);
void    CDC_ClrHirqReq(Uint16 bitpat);
Uint16  CDC_GetHirqMsk(void);
void    CDC_SetHirqMsk(Uint16 bitpat);
Uint32  *CDC_GetMpegPtr(void);

0x82603

enum CdcMpErrCode {
    CDC_ERR_MP_COMU = -20    
};

0x826A7

typedef struct {
    Uint8   status;          
    struct {                 
        Uint8   actst;       
        Uint8   pict;        
        Uint8   stat_a;      
        Uint16  stat_v;      
        Uint16  vcnt;        
    } report;
} CdcMpStat;

 
typedef struct {
    Uint8   hour;            
    Uint8   min;             
    Uint8   sec;             
    Uint8   pic;             
} CdcMpTc;

 
typedef struct {
    Uint8   cmod;            
    Uint8   lay;             
    Uint8   bn;              
} CdcMpCon;

 
typedef struct {
    Uint8   smod;            
    Uint8   id;              
    Uint8   cn;              
} CdcMpStm;

 
typedef struct {
    Uint8   intpol;          
    Uint8   trnsp;           
    Uint8   moz_h;           
    Uint8   moz_v;           
    Uint8   soft_h;          
    Uint8   soft_v;          
} CdcMpVeff;

0x82A46

Sint32  CDC_MpGetCurStat(CdcMpStat *mpstat);
Sint32  CDC_MpGetLastStat(CdcMpStat *mpstat);
Sint32  CDC_MpGetInt(Sint32 *intreq);
Sint32  CDC_MpSetIntMsk(Sint32 intmsk);
Sint32  CDC_MpInit(Sint32 sw);
Sint32  CDC_MpSetMode(Sint32 actmod, Sint32 dectim, Sint32 out,
                      Sint32 scnmod);
Sint32  CDC_MpPlay(Sint32 plymod, Sint32 tmod_a, Sint32 tmod_v,
                   Sint32 dec_v);
Sint32  CDC_MpSetDec(Sint32 mute, Sint32 pautim, Sint32 frztim);
Sint32  CDC_MpOutDsync(Sint32 fbn);
Sint32  CDC_MpGetTc(Sint32 *bnk, Sint32 *pictyp, Sint32 *tr, CdcMpTc *mptc);
Sint32  CDC_MpGetPts(Sint32 *pts_a);

 
Sint32  CDC_MpSetCon(Sint32 next, CdcMpCon *mpcon_a, CdcMpCon *mpcon_v,
                     Sint32 picsrch);
Sint32  CDC_MpGetCon(Sint32 next, CdcMpCon *mpcon_a, CdcMpCon *mpcon_v);
Sint32  CDC_MpChgCon(Sint32 chg_a, Sint32 chg_v,
                     Sint32 clr_a, Sint32 clr_v);
Sint32  CDC_MpSetStm(Sint32 next, CdcMpStm *mpstm_a, CdcMpStm *mpstm_v);
Sint32  CDC_MpGetStm(Sint32 next, CdcMpStm *mpstm_a, CdcMpStm *mpstm_v);
Sint32  CDC_MpGetPictSiz(Sint32 *siz_h, Sint32 *siz_v);

 
Sint32  CDC_MpDisp(Sint32 dswsw, Sint32 fbn);
Sint32  CDC_MpSetWinFpos(Sint32 chgflg, Sint32 fpx, Sint32 fpy);
Sint32  CDC_MpSetWinFrat(Sint32 chgflg, Sint32 frx, Sint32 fry);
Sint32  CDC_MpSetWinDpos(Sint32 chgflg, Sint32 dpx, Sint32 dpy);
Sint32  CDC_MpSetWinDsiz(Sint32 chgflg, Sint32 dsx, Sint32 dsy);
Sint32  CDC_MpSetWinDofs(Sint32 chgflg, Sint32 dox, Sint32 doy);
Sint32  CDC_MpSetBcolor(Sint32 bcolor);
Sint32  CDC_MpSetFade(Sint32 gain_y, Sint32 gain_c);
Sint32  CDC_MpSetVeff(CdcMpVeff *mpveff);

 
Sint32  CDC_MpGetImg(Sint32 *dwsiz);
Sint32  CDC_MpSetImgPos(Sint32 fbn, Sint32 ipx, Sint32 ipy);
Sint32  CDC_MpSetImgSiz(Sint32 fbn, Sint32 isx, Sint32 isy);
Sint32  CDC_MpReadImg(Sint32 srcfbn,
                      Sint32 fln_y, Sint32 fln_cr, Sint32 fln_cb);
Sint32  CDC_MpWriteImg(Sint32 bn_y, Sint32 bn_cr, Sint32 bn_cb,
                       Sint32 dstfbn, Sint32 cmod_i);

 
Sint32  CDC_MpReadSct(Sint32 srcmsp, Sint32 snum, Sint32 dstfln);
Sint32  CDC_MpWriteSct(Sint32 srcbn, Sint32 sp, Sint32 snum,
                       Sint32 dstmsp);

 
Sint32  CDC_MpGetLsi(Sint32 r_sw, Sint32 reg_no, Sint32 *rdata);
Sint32  CDC_MpSetLsi(Sint32 rwsw, Sint32 reg_no, Sint32 wdata,
                     Sint32 *rdata);



# 12 "saturn.c" 2


# 1 "segalib/include/sega_per.h" 1

0x836DE

typedef Uint16  PerDgtData;                      

typedef struct  {                                
    PerDgtData  dgt;                             
    Sint16      x;                               
    Sint16      y;                               
    Sint16      z;                               
}PerAnlData;

typedef struct  {                        
    PerDgtData  dgt;                             
    Uint16      data;                            
    Sint16      x;                               
    Sint16      y;                               
}PerPntData;

typedef struct  {                            
    PerDgtData  dgt;                             
    Uint8       skey;                            
    Uint8       key;                             
}PerKbdData;

typedef Uint8   PerM3bpData;             
typedef Uint16  PerM6bpData;             
typedef Uint8   PerId;                   
typedef Uint8   PerSize;                 
typedef Uint8   PerKind;                         
typedef Uint16  PerNum;                          

 
typedef struct  {                                
    PerDgtData  data;                            
    PerDgtData  push;                            
    PerId       id;                              
}PerDgtInfo;

typedef struct  {                                
    PerAnlData  data;                            
    PerAnlData  push;                            
    PerId       id;                              
}PerAnlInfo;

typedef struct  {                                
    PerPntData  data;                            
    PerPntData  push;                            
    PerId       id;                              
}PerPntInfo;

typedef struct  {                                
    PerKbdData  data;                            
    PerKbdData  push;                            
    PerId       id;                              
}PerKbdInfo;

typedef struct  {                                
    PerM3bpData data;                            
    PerM3bpData push;                            
    PerId       id;                              
}PerM3bpInfo;

typedef struct  {                                
    PerM6bpData data;                            
    PerM6bpData push;                            
    PerId       id;                              
}PerM6bpInfo;

typedef struct  {                                
    Uint8   cc;                                  
    Uint8   ac;                                  
    Uint16  ss;                                  
    Uint32  sm;                                  
    Uint8   stat;                                
}PerGetSys;

typedef void PerGetPer;                          

 



extern Uint8 per_hot_res;                        

extern Uint8 *per_get_time_adr;                  
extern PerGetSys per_get_sys_data;               
extern Uint8 per_set_sys_flg;                    
extern Uint8 per_time_out_flg;                   

 


Uint32 PER_Init(PerKind, PerNum, PerId, PerSize, Uint32 *, Uint8);
                                                 
Uint32 PER_GetPer(PerGetPer **);                 
PerGetSys PER_GetSys(void);                      
void PER_IntFunc(void);                          

0x84653

# 641 "segalib/include/sega_per.h"

# 661 "segalib/include/sega_per.h"

# 14 "saturn.c" 2

# 1 "segalib/include/sega_gfs.h" 1
 
enum GfsAccessMode {
    GFS_NWSTAT_NOACT = 0,		 
    GFS_NWSTAT_FREAD,			 
    GFS_NWSTAT_CDREAD			 
};


 
enum GfsSeekMode {
    GFS_SEEK_SET = 0,			 
    GFS_SEEK_CUR,			 
    GFS_SEEK_END			 
};


 
enum GfsGetMode {
    GFS_GMODE_ERASE = 0,		 
    GFS_GMODE_RESIDENT			 
};


 
enum GfsTransMode {
    GFS_TMODE_SCU = 0,			 
    GFS_TMODE_SDMA0,			 
    GFS_TMODE_SDMA1,			 
    GFS_TMODE_CPU,			 
    GFS_TMODE_STM,			 
    GFS_TMODE_END
};

 
enum GfsServerStatus {
    GFS_SVR_COMPLETED = 0,		 
    GFS_SVR_BUSY,			 
    GFS_SVR_CDPAUSE,			 
    GFS_SVR_ERROR			 
};


 
enum GfsDirType {
    GFS_DIR_ID          = 0,             
    GFS_DIR_NAME			 
};

 
typedef struct {
    Sint32      fid;			 
    CdcFile	finfo;
    Sint32      sctsz;			 
    Sint32      nsct;			 
    Sint32      lstrm;			 
} GfsFinfo;


 
typedef struct {
    Sint32      bufno;			 
    Sint32      sctsz;			 
    Sint32	flt;			 
    CdcSubh	subh;			 
    Sint32	fmode;			 
    Sint32	puid;			 
    Sint32      filepos;		 
    Sint32	sctpos;			 
     
    Sint32	sfad;			 
    Sint32	efad;			 
} GfsCdRsrc;


 
typedef struct {
    Sint32	fid;			 
    Sint32      filepos;		 
    Sint32	sctpos;			 
    Sint32	sctnum;			 
} GfsScsiRsrc;


 
typedef struct {
    void	*data;			 
    Sint32      filepos;		 
    Sint32	sctpos;			 
    Sint32	sctnum;			 
} GfsMemRsrc;


 
typedef struct {
     
    Sint32	ftype;			 
    union {
	GfsCdRsrc	cd;		 
	GfsScsiRsrc	scsi;		 
	GfsMemRsrc	mem;		 
    } rsrc;
} GfsDtsrc;


 
typedef struct {
    GfsFinfo	finfo;			 
    GfsDtsrc	dtsrc;			 
    Sint32	gmode;			 
    Sint32	stat;			 
     
    Sint32      sct;			 
    Sint32	sctcnt;			 
    Sint32      sctmax;			 
} GfsFlow;


 
typedef struct {
    void	*data;			 
    Sint32	adlt;			 
    Sint32	len;			 
    Sint32	nsct;			 
    Bool	use;			 
} GfsDataPack;


typedef GfsDataPack *GfdpHn;

 
typedef Sint32 (*GfsTransFunc)(void *obj, Sint32 nsct);
     

 
 
typedef struct {
    void	*buf;			 
    Sint32	size;			 
    Sint32	wp;			 
     
    GfdpHn	dps;			 
    GfdpHn	dpd;			 
    Sint32	tsctmax;		 
    Sint32	tsct;			 
    Sint32	tsctcnt;		 
    Sint32	tbytcnt;		 
     
    void	*obj;			 
    GfsTransFunc tfunc;			 
    Sint32	unit;			 
    Bool	active;			 
    Sint32	stat;			 
    Sint32	mode;			 
} GfsTrans;


typedef GfsTrans *GftrHn;


 
typedef struct {
    Bool	used;			 
    Sint32	amode;			 
    Sint32	astat;			 
    GfsFlow	flow;
    GfsTrans	trans;
} GfsFile;


 
typedef GfsFile *GfsHn;


 
typedef struct {
    CdcFile	dirrec;
} GfsDirId;


 
typedef struct {
    CdcFile	dirrec;
    Sint8       fname[12 ];    
} GfsDirName;


 
typedef struct {
    Sint32	type;			 
    Sint32	ndir;			 
    union {
	GfsDirId *dir_i;		 
	GfsDirName *dir_n;		 
    } dir;
} GfsDirTbl;


 
typedef void (*GfsErrFunc)(void *obj, Sint32 ec);

 
typedef struct {
    GfsErrFunc	func;			 
    void	*obj;			 
    Sint32	code;			 
} GfsErrStat;


 



 
Sint32 GFS_Init(Sint32 open_max, void *work, GfsDirTbl *dirtbl);

 
Sint32 GFS_LoadDir(Sint32 fid, GfsDirTbl *dirtbl);

 
Sint32 GFS_SetDir(GfsDirTbl *dirtbl);

 
Sint32 GFS_NameToId(Sint8 *fname);

 
Sint8 *GFS_IdToName(Sint32 fid);

 
GfsHn GFS_Open(Sint32 fid);

 
void GFS_Close(GfsHn gfs);

 
Sint32 GFS_Seek(GfsHn gfs, Sint32 ofs, Sint32 org);

 
Sint32 GFS_Tell(GfsHn gfs);

 
Bool GFS_IsEof(GfsHn gfs);

 
Sint32 GFS_ByteToSct(GfsHn gfs, Sint32 nbyte);

 
void GFS_GetFileSize(GfsHn gfs, Sint32 *sctsz, Sint32 *nsct, Sint32 *lstsz);

 
void GFS_GetFileInfo(GfsHn gfs, Sint32 *fid, Sint32 *fn, Sint32 *fsize,
		     Sint32 *atr);

 
Sint32 GFS_Load(Sint32 fid, Sint32 ofs, void *buf, Sint32 bsize);

 
Sint32 GFS_Fread(GfsHn gfs, Sint32 nsct, void *buf, Sint32 bsize);

 
Sint32 GFS_NwFread(GfsHn gfs, Sint32 nsct, void *buf, Sint32 bsize);

 
Sint32 GFS_NwCdRead(GfsHn gfs, Sint32 nsct);

 
Bool GFS_NwIsComplete(GfsHn gfs);

 
Sint32 GFS_NwStop(GfsHn gfs);

 
void GFS_NwGetStat(GfsHn gfs, Sint32 *amode, Sint32 *ndata);

 
Sint32 GFS_NwExecOne(GfsHn gfs);

 
Sint32 GFS_NwExecServer(GfsHn *now_gfs);

 
Sint32 GFS_SetGmode(GfsHn gfs, Sint32 gmode);

 
Sint32 GFS_SetTmode(GfsHn gfs, Sint32 tmode);

 
Sint32 GFS_SetReadPara(GfsHn gfs, Sint32 nsct);

 
Sint32 GFS_SetTransPara(GfsHn gfs, Sint32 tsize);

 
Sint32 GFS_CdMovePickup(GfsHn gfs);

 
void GFS_SetErrFunc(GfsErrFunc func, void *obj);

 
void GFS_GetErrStat(GfsErrStat *stat);

 
Sint32 GFS_GetDirInfo(Sint32 fid, GfsDirId *dirrec);

 
Sint32 GFS_GetFad(Sint32 fid, Sint32 ofs);

typedef struct {
    Sint32 (*flowin)(GfsFlow *);	 
    void (*stopin)(GfsFlow *, Bool);	 
    Sint32 (*seek)(GfsFlow *, Sint32);	 
    Sint32 (*tell)(GfsFlow *);		 
} GfsFileFunc;

 
typedef struct {
    GfsHn   access_file[24 ];	 
    Sint32  nfile;			 
} GfsSvr;


 
typedef struct {
    GfsDirTbl	dirtbl;			 
    Sint32	nfile;			 
} GfsDirMng;


 
typedef struct {
    Uint8 flt;				 
    Uint8 fmode;			 
    CdcSubh subh;			 
    Sint32 fad;				 
    Sint32 snum;			 
} GfcdSelQu;

 
typedef struct {
    Sint32 flt;				 
    Sint32 buf;				 
    Sint32 flnout;			 
} GfcdFconQu;    

 
typedef struct {
     
    Sint8 use_buf[24 ];	 
    Sint8 use_filt[24 ];	 
    Bool use_pu;			 
    Sint32 tr_bufno;			 
    Sint32 puid;			 
    Sint32 timer;			 
    CdcStat stat;			 
    void (*func)(void *);		 
    void *obj;				 
     
    struct {
	Sint32 len;			 
	Sint32 stat;			 
	GfcdSelQu selq[24 ];	 
    } tsk_setflt;
     
    struct {
	Sint32 len;			 
	Sint32 stat;			 
	GfcdFconQu fconq[24 ];  
    } tsk_fltcon;
     
    struct {
	Sint32 stat;			 
	Sint32 flt;			 
    } tsk_setcon;
     
    struct {
	Sint32 stat;			 
	Sint32 bufno;			 
	Sint32 spos;			 
	Sint32 usct;			 
	Sint32 cnt;			 
	Sint32 *nsct;			 
	Sint32 *nbyte;			 
    }tsk_getlen;
     
    struct {
	Sint32 stat;			 
	Sint32 bufno;			 
	Sint32 sctpos;			 
	Sint32 nsct;			 
    } tsk_reqdat;
     
    struct {
	Sint32 stat;			 
	Sint32 bufno;			 
	Sint32 sctpos;			 
	Sint32 nsct;			 
    } tsk_delsct;
     
    struct {
	Sint32 stat;			 
	Sint32 dst;			 
	Sint32 src;			 
	Sint32 spos;			 
	Sint32 snum;			 
	Sint32 fmode;			 
    } tsk_movsct;
     
    struct {
	Sint32 stat;			 
	Sint16 fid;			 
	Sint16 work;			 
	Sint32 *ndir;			 
    } tsk_chgdir;
} GfsCdbMng;

 
typedef struct {
    Sint32	openmax;		 
    GfsFileFunc	functbl[3 ];	 
    GfsSvr	svr;			 
    GfsDirMng	curdir;			 
    GfsHn	pickup;			 
    Sint32	sfad;			 
    Sint32	efad;			 
    GfsHn	trans;			 
    GfsErrStat	error;			 
    Uint32	flags;			 
    Sint32	timer;			 
    GfsCdbMng	cdb;			 
    GfsDataPack	srcpk;			 
    GfsDataPack	dstpk;			 
    Uint8	sect_buf[2048 ];  
    GfsFile	file[1];		 
} GfsMng;



 
# 15 "saturn.c" 2

# 1 "..\\generic\\incl3do/event.h" 1

#pragma include_only_once

# 1 "..\\generic\\incl3do/graphics.h" 1
#pragma force_top_level
#pragma include_only_once

# 1 "..\\generic\\incl3do/operror.h" 1

#pragma force_top_level
#pragma include_only_once

extern char _SixToAscii[];

0x86792

typedef struct ErrorText
{
	ItemNode et;
	uint32	et_ObjID;	 
	uint8	et_MaxErr;	 
	uint8	et_MaxStringSize;	 
	uint8	et_Reserved[2];
	char	**et_ErrorTable;	 
} ErrorText;

enum errtxt_tags
{
	ERRTEXT_TAG_OBJID = TAG_ITEM_LAST+1,
	ERRTEXT_TAG_MAXERR,
	ERRTEXT_TAG_TABLE,
	ERRTEXT_TAG_MAXSTR
};
  




void PrintfSysErr(Item);	 
int32 GetSysErr(char *buff,int32 buffsize,Item err);	 






# 52 "..\\generic\\incl3do/graphics.h" 2

# 1 "..\\generic\\incl3do/timer.h" 1

#pragma force_top_level
#pragma include_only_once

 

typedef struct Timer
{
	ItemNode	tm;
	uint8	tm_ID;	 
	uint8	tm_Size;	 
	uint8	tm_IntNum;	 
	uint8	tm_r[1];
	 
	void	(*tm_Control)(struct Timer *,int32 set,int32 clr);
	void	(*tm_Load)(int32 n,int32 value16, int32 reloadvalue16);
	int32	(*tm_Read)(int32 n);
} Timer;



enum timer_tags
{
	CREATETIMER_TAG_NUM = TAG_ITEM_LAST+1,	 
	CREATETIMER_TAG_FLAGS	 
};











# 53 "..\\generic\\incl3do/graphics.h" 2


# 1 "..\\generic\\incl3do/filesyst.h" 1

# 1 "..\\generic\\incl3do/io.h" 1

#pragma force_top_level
#pragma include_only_once



# 1 "..\\generic\\incl3do/msgport.h" 1

#pragma force_top_level
#pragma include_only_once





typedef struct MsgPort
{
	ItemNode	mp;
	uint32	mp_Signal;	 
	List	mp_Msgs;	 
	void   *mp_UserData;	 
	uint32	mp_Reserved;	 
} MsgPort;

 


enum msgport_tags
{
	CREATEPORT_TAG_SIGNAL = TAG_ITEM_LAST+1, 
	CREATEPORT_TAG_USERDATA		 
};
  




extern Item CreateMsgPort(char *name, uint8 pri, uint32 signal);
  






typedef struct Message
{
	ItemNode	msg;
	Item 	msg_ReplyPort;
	uint32	msg_Result;	 
	void	*msg_DataPtr;	 
	int32	msg_DataSize;	 
	Item	msg_MsgPort;	 
	uint32	msg_DataPtrSize; 
	Item	msg_SigItem;	 
} Message;



 
 





enum message_tags
{
	CREATEMSG_TAG_REPLYPORT	= TAG_ITEM_LAST+1,
	CREATEMSG_TAG_MSG_IS_SMALL,
	CREATEMSG_TAG_DATA_SIZE			 
};
  




extern Item CreateMsg(char *name, uint8 pri, Item mp);
extern Item CreateSmallMsg(char *name, uint8 pri, Item mp);
extern Item CreateBufferedMsg(char *name, uint8 pri, Item mp, uint32 buffsize);


extern Err    SendMsg(Item mp,Item msg,
					 void *dataptr, int32 datasize);
extern Err    SendSmallMsg(Item mp,Item msg,
					 uint32 val1, uint32 val2);
extern Item  	  GetMsg(Item mp);
extern Item  	  GetThisMsg(Item msg);
extern Item WaitPort(Item mp,Item msg);
extern Err    ReplyMsg(Item msg, int32 result,
					  void *dataptr, int32 datasize);
extern Err    ReplySmallMsg(Item msg, int32 result,
					  uint32 val1, uint32 val2);








# 123 "..\\generic\\incl3do/io.h" 2


typedef struct IOBuf
{
	void	*iob_Buffer;	 
	int32	iob_Len;	 
} IOBuf;

 
typedef struct IOInfo
{
	uint8	ioi_Command;	 
	uint8	ioi_Flags;	 
	uint8	ioi_Unit;	 
	uint8	ioi_Flags2;	 
	uint32	ioi_CmdOptions;	 
	uint32	ioi_User;	 
	int32 	ioi_Offset;	 
	IOBuf	ioi_Send;	 
	IOBuf	ioi_Recv;	 
} IOInfo;
(Source: Original TCRF research)