#ifndef SYSTEM_DPKBASE_H
#define SYSTEM_DPKBASE_H

/*
**  $VER: dpkbase.h V0.8B
**
**  Definition of the dpkernel base structure.
**
**  (C) Copyright 1996-1997 DreamWorld Productions.
**      All Rights Reserved
*/

#ifndef DPKERNEL_H
#include <games/dpkernel.h>
#endif

#ifndef EXEC_LIBRARIES_H
#include <exec/libraries.h>
#endif

/*****************************************************************************
** All DPKBase fields are private.  This file is included in the developers
** archive for module writers and debugging purposes only.
*/

struct DPKBase {
  struct Library LibNode;
  WORD   gemp;                      /* Private */
  APTR   SegList;                   /* Private */
  WORD   OldMouseX1;                /* Private */
  WORD   OldMouseY1;                /* Private */
  WORD   OldMouseX2;                /* Private */
  WORD   OldMouseY2;                /* Private */
  WORD   VBLPosition;               /* Private */
  BYTE   ScrSwitch;                 /* Private */
  BYTE   Destruct;                  /* Private */
  LONG   RandomSeed;                /* Random seed */
  WORD   BlitterUsed;               /* 0 = Free, 1 = Grabbed */
  WORD   BlitterPriority;           /* 0 = NoPriority, 1 = Priority */
  APTR   CurrentScreen;             /* Currently displayed screen */
  APTR   TaskList;                  /* Pointer to list of all current tasks */
  WORD   HSync;                     /* Private */
  struct SysObject *SysObjects;     /* System object list (master) */
  BYTE   DebugActive;               /* Set if debugger is currently active */
  BYTE   ScrBlanked;                /* Set if screen is currently blanked */
  WORD   Version;                   /* The version of this kernel */
  WORD   Revision;                  /* The revision of this kernel */
  struct SScreen   *ScreenList;     /* List of shown screens, starting from back. */
  struct SysObject *ChildObjects;   /* System object list (hidden & children) */
  struct Directory *ReferenceDir;   /* List of references files */
  struct Reference *ReferenceList;  /* List of object references */
  struct Module    *ScreensModule;  /* Pointer to module */
  struct Module    *BlitterModule;  /* Pointer to module */
  struct Module    *FileModule;     /* Pointer to module */
  struct Module    *MasterModule;   /* Pointer to module */
  APTR   ScreensBase;
  APTR   BlitterBase;
  APTR   FileBase;
  APTR   MasterBase;
  struct Module *SoundModule;
  APTR   SoundBase;
};

struct SScreen {
  struct SScreen *Next;
  struct GScreen *Screen;
};

#endif /* SYSTEM_DPKBASE_H */

