the cutting room mirror

Gex (Sega Saturn)

One year after its original release, Gex makes its way over to the Sega Saturn.

Level Select#

On the overworld, press Start, then hold R and press Left, Right, L, Start, Left, A, Y, A, Up, Y.

(Source: Rings of Saturn)

Planet X Level Select#

At the main menu, hold R and press Down, Right, C, Right, Right, L, Start, Left, A, Up, Right, L.

(Source: Rings of Saturn)

Debugging Features#

A few debugging features can be activated with Action Replay codes:

Debug Display: 1606BE76 0003
Free Movement: 1607A08A 0001

(Source: Rings of Saturn)

Possible Debugging Features#

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.

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)