VedaMachineDreamcast Class Reference
[VirtualMachine Related Documentations]

#include <VedaMachineDreamcast.h>

Inherits VirtualMachine.

List of all members.


Detailed Description

Defines a AzurVeda Machine targeted for the Sega Dreamcast hardware, using the free Developpement kit Kallistios, and other things. For the moment, the renderer is partly based on KGL.

Definition at line 22 of file VedaMachineDreamcast.h.

Public Types

enum  eVMResult { vmr_OK = 0, vmr_FAILED }
 error enum for InitMachine() More...
enum  InternalObject3DBuffer_InitBit { bOb3D_VertexNormal = 1, bOb3D_VertexUVMapping = 2, bOb3D_VertexRGBA = 4 }
 see VirtualMachine::NewObject3DBuffer() More...
enum  eMachineLocalization {
  eMachineLocalization_LocalisationNotImplemented = 0, eMachineLocalization_English, eMachineLocalization_French, eMachineLocalization_SpanishCastellano,
  eMachineLocalization_German, eMachineLocalization_Italian, eMachineLocalization_Polish, eMachineLocalization_Portuguese
}
 This enum spots a cultural langage. returned by GetCurrentWorldLocalizationEnum(). More...

Public Member Functions

 VedaMachineDreamcast (void)
 Constructor.
virtual ~VedaMachineDreamcast (void)
 Destructor.
virtual eVMResult InitMachine ()
 Init the machine. It would open a screen and do the init for each theme (3D,sound,...) the machine closing should be done at deletion.
virtual void NewObject3DBuffer (InternalObject3DBuffer **_ppVertexAndPolygonBufferOut, unsigned int _maxNbVertex, unsigned int _maxNbTriangle, unsigned int _extraMemberFlags)
 Ask the Creation of a new InternalObject3DBuffer you can then fill with InternalObject3DBuffer::GetFirstVertex() , InternalObject3DBuffer::GetFirstTriangle() and InternalObject3DBuffer::SetNumberOfActiveTriangle() . Then the object can be positionned with the matrix methods, and drawn with RenderMesh() The object shape can be dynamic and rebuilt, until a call to CompileObject3DBufferAsStatic(). In edition mode, object has to be destroyed with DeleteObject3DBuffer().
virtual void NewTexture (InternalTexture **_ppTextureOut)
 Ask the Creation of a new InternalTexture, then used to render 3D objects with RenderMesh(). In edition mode, InternalTexture has to be destroyed with DeleteTexture().
virtual void DeleteTexture (InternalTexture **_ppTextureToDestroy)
 Destroy objects previously created with NewTexture().
virtual void NewViewPortChild (InternalViewPort **_ppViewPortOut, InternalViewPort *_pFatherViewPort=0L)
 Ask the Creation of a new InternalViewPort, that must be the child of another ViewPort, specified by _pFatherViewPort.if no father is specified, the new ViewPort will be the child of the default root ViewPort. To create another Root ViewPort, create a texture and use VirtualMedia::NewViewPortOnTexture(). In edition mode, each InternalViewPort has to be destroyed with DeleteViewPort().
virtual void NewViewPortOnTexture (InternalViewPort **_ppViewPortOut, InternalTexture *_pRootTexture, unsigned int _np2PixelWidth, unsigned int _np2PixelHeight, InternalTexture::TextureImageLayerEnum _layerToAffect)
 Ask the Creation of a new Root InternalViewPort, that will render on a texture image. specified by _pRootTexture. You got to create a texture first for parameter _pRootTexture. In edition mode, each InternalViewPort has to be destroyed with DeleteViewPort().
virtual void DeleteViewPort (InternalViewPort **_ppViewPortToDestroy)
 Destroy any objects previously created with NewViewPortChild() or NewViewPortOnTexture().
virtual void SwapScreenBuffer ()
 Swap buffer so that what was drawn on the main screen is shown.
virtual float GetPlayFrequency ()
 Return the machine main play frequency, in herz, (tick per sec).
virtual void SetSoundCurrentTime (int _seconds, unsigned int _fraction)
 force a date to the clock passed to the sound objects.
virtual void SetSoundVolume (float _newVolumeValue)
 tool: change main volume [0,1]. Yes, you can saturate when >1.
virtual float GetSoundVolume ()
 tool: get main volume value [0,1].
virtual void GetCurrentSoundBufferImage (float **const _ppSoundBuffer, unsigned int *_pLength) const
 For Information, an image of the current sound buffer. This is always a 2 float(left,right) table: The buffer size may vary. It can be used by preview methods or live effects.
virtual eMachineLocalization GetCurrentWorldLocalizationEnum ()
 Return the language of the machine, as a simple enum. It can be used to display one or the other langage.
virtual void ProcessInterface ()
 Process the Machine's interface messages (mouse,keyboard,...), in the real time. Then methods like VirtualMachine::GetQuitMessage() are updated.
void SetRate (float _rate)
 Process the Machine's interface messages (mouse,keyboard,...), in the real time. Then methods like VirtualMachine::GetQuitMessage() are updated.
virtual void NewObject3DBuffer (InternalObject3DBuffer **_ppVertexAndPolygonBufferOut, unsigned int _maxNbVertex, unsigned int _maxNbTriangle, unsigned int _extraMemberFlags)=0
 Ask the Creation of a new InternalObject3DBuffer you can then fill with InternalObject3DBuffer::GetFirstVertex() , InternalObject3DBuffer::GetFirstTriangle(). Important: All the vertex members and polygon index are inited to zero when built. and InternalObject3DBuffer::SetNumberOfActiveTriangle() . Then the object can be positionned with the matrix methods in VirtualMachine::InternalViewPort, and drawn with VirtualMachine::InternalViewPort::RenderMesh(). The object shape can be dynamic and rebuilt, until a call to VirtualMachine::InternalObject3DBuffer::CompileAsStatic(). In edition compilation mode, objects had to be destroyed with VirtualMachine::DeleteObject3DBuffer().
virtual void DeleteObject3DBuffer (InternalObject3DBuffer **_ppBufferToDestroy)=0
 Destroy objects previously created with NewObject3DBuffer().
virtual void NewTexture (InternalTexture **_ppTextureOut)=0
 Ask the Creation of a new InternalTexture, then used to render 3D objects with RenderMesh(). In edition mode, InternalTexture has to be destroyed with DeleteTexture().
virtual void DeleteTexture (InternalTexture **_ppTextureToDestroy)=0
 Destroy objects previously created with NewTexture().
virtual void NewViewPortChild (InternalViewPort **_ppViewPortOut, InternalViewPort *_pFatherViewPort=0L)=0
 Ask the Creation of a new InternalViewPort, that must be the child of another ViewPort, specified by _pFatherViewPort.if no father is specified, the new ViewPort will be the child of the default root ViewPort. To create another Root ViewPort, create a texture and use VirtualMedia::NewViewPortOnTexture(). In edition mode, each InternalViewPort has to be destroyed with DeleteViewPort().
virtual void NewViewPortOnTexture (InternalViewPort **_ppViewPortOut, InternalTexture *_pRootTexture, unsigned int _np2PixelWidth, unsigned int _np2PixelHeight, InternalTexture::TextureImageLayerEnum _layerToAffect)=0
 Ask the Creation of a new Root InternalViewPort, that will render on a texture image. specified by _pRootTexture. You got to create a texture first for parameter _pRootTexture. In edition mode, each InternalViewPort has to be destroyed with DeleteViewPort().
virtual void DeleteViewPort (InternalViewPort **_ppViewPortToDestroy)=0
 Destroy any objects previously created with NewViewPortChild() or NewViewPortOnTexture(). If it has children, children are detached , not destoyed, but are invalid.
InternalViewPortGetDefaultViewPort ()
 Access to the default screen object created with InitMachine().
virtual void EnableMediaSound (SoundInterface *_pNoisyObject, bool _enable=true)
 Register a SoundInterface object that will then generate a mixed sound through SoundInterface::ProcessSoundInterupt(). The sound will start instantly. if false, Unregister a media object previously registered with EnableMediaSound(,true). The sound stops instantly. Note, that if you choose to use the BaseObject implementation, class VirtualMedia will manage the sound in its own way, and you will not need to use this method.
virtual void ShutTheFuckUp ()
 Now, AzurVeda virtual machine implements a very efficient BASS technology known as "ShutTheFuckUp" ! Yes, it will unregister all sound objects to silent the machine.
bool GetQuitMessage ()
 If true, means that the user want to quit:.
virtual bool FileRequester (const char *_pDisplayString, char *_pResultFileName, unsigned int _nameMaxLength)=0
 In edition mode, ask a file path to a file requester. the string format should vary, but will be compatible with LoadFile() and SaveFile().
virtual bool SaveFile (const char *_pFilePath, const char *_chunkToWrite, unsigned int _ChunkLength, bool _append=false)=0
 DEPRECATED for the moment: use class PackResource instead load a file into a memory chunk. You can load all in one row, or stream. memory is to be deleted by the CALLER with operator: "delete [] pointer", for each succesfull call. return 0L if failed. write a file from a memory chunk. You can save all in one row, or stream.
virtual void Sleep (unsigned int _milliseconds)=0
 in edition mode, redirection of machine task wait.

Static Public Member Functions

static void RenderMesh_Draw3D_Flat (DCInternalObject3DBuffer *pbuffer)
 tool method used by pass1(opque) and 2(transp.). drawn after flags&matrix are set.

Protected Attributes

VedaMachineDreamcastm_pNextMachine
unsigned int m_FirstController
 1st pad:
unsigned int m_MachineLocalization
unsigned int m_PixelWidth
unsigned int m_PixelHeight
VedaMachineDreamcast::DCInternalViewPortm_pCurrentActiveViewport
unsigned int m_TotalPlaySize
 sound stuff
int m_LastStartPlayTime_SecondUnit
unsigned int m_LastStartPlayTime_SecondFrac
unsigned int m_CurrentPolyListIndex
unsigned char * m_pAllocChunkForTranslucentList
 the real alloc for m_pTranslucentMatrixList, because it must be 32b aligned.
translucentMeshToRenderm_pTranslucentMeshList
unsigned int m_NumberOfTranslucentObjects
unsigned int m_LastProcessInterfaceClock
unsigned int m_lastButtonCondition
 last
unsigned int m_interfaceStateBits
unsigned int m_ChoicePannelIndex
float m_QuitChoicePanelAlpha
float m_TimePanelAlpha
float m_timerate
float m_StartTime
float m_TimeSpeed
int m_ClockStart
InternalViewPortm_pDefaultViewPort
 this is the default viewport, it stands the whole screen by default. Used by GetDefaultViewPort().
bool m_QuitMessage
 If true, means that the user want to quit. Updated by ProcessInterface().
SoundUpdateListCell * m_pFirstSoundObject
 start of the chained list of the sound object update method:

Static Protected Attributes

static VedaMachineDreamcastm_pFirstMachine
 link the machine to a static machine list, because sound mixing is static for more than one machine:
static unsigned int m_MixRate
 sound mix rate: 22050,44100 , ...
static float m_fPlayFrequency
 float version:
static const unsigned int m_SoundBufferLength = 4096
 32768
static const unsigned int m_NumberOfBuf = 16
static short * m_pShortSoundBuffer
static float * m_pFloatSoundBufferAlloc
static unsigned int m_SoundBufferIndex
static unsigned int m_LastSoundBufferLength [m_NumberOfBuf]
static volatile bool m_SoundThreadGotToQuit
static volatile bool m_SoundThreadIsOn
static const unsigned int m_TranslucentListMaximumDepth = 240
 translucent mesh list, for pass 2 rendering for kgl. cf SwapScreenBuffer()
static const unsigned int m_bs_QuitChoicePanelIsOn = 1

Classes

struct  _translucentMeshToRender
 32b aligned !!! More...
class  DCInternalObject3DBuffer
 Nested class that implements a 3D object as a vertex and a polygon list. You ask the creation of it with VirtualMachine::NewObject3DBuffer(), then defines its shape by filling the list you get with GetFirstVertex() and GetFirstTriangle(), then it can be rendered with VirtualMachine::RenderMesh(). In order to optimize a static shape, use VirtualMachine::CompileObject3DBufferAsStatic() In edition mode, it can be destroyed with VirtualMachine::DeleteObject3DBuffer(). More...
class  DCInternalTexture
class  DCInternalViewPort


Constructor & Destructor Documentation

VedaMachineDreamcast void   ) 
 

Constructor.

virtual ~VedaMachineDreamcast void   )  [virtual]
 

Destructor.


Member Function Documentation

virtual void DeleteTexture InternalTexture **  _ppTextureToDestroy  )  [virtual]
 

Destroy objects previously created with NewTexture().

Parameters:
_ppTextureToDestroy object to destroy, and set to 0L.

virtual void DeleteViewPort InternalViewPort **  _ppViewPortToDestroy  )  [virtual]
 

Destroy any objects previously created with NewViewPortChild() or NewViewPortOnTexture().

Parameters:
_ppViewPortToDestroy pointer to object to destroy, and set to 0L.

virtual void GetCurrentSoundBufferImage float **const   _ppSoundBuffer,
unsigned int *  _pLength
const [virtual]
 

For Information, an image of the current sound buffer. This is always a 2 float(left,right) table: The buffer size may vary. It can be used by preview methods or live effects.

Parameters:
_ppSoundBuffer pointer on pointer on the buffer to return.
_pLength pointer on a unsigned int that return the length.

Implements VirtualMachine.

virtual eMachineLocalization GetCurrentWorldLocalizationEnum  )  [virtual]
 

Return the language of the machine, as a simple enum. It can be used to display one or the other langage.

Returns:
an enum integer.

Implements VirtualMachine.

virtual float GetPlayFrequency  )  [virtual]
 

Return the machine main play frequency, in herz, (tick per sec).

Returns:
freq (44100.0,22050.0,...)

Implements VirtualMachine.

virtual float GetSoundVolume  )  [virtual]
 

tool: get main volume value [0,1].

Returns:
VolumeValue [0,1]

Implements VirtualMachine.

virtual eVMResult InitMachine  )  [virtual]
 

Init the machine. It would open a screen and do the init for each theme (3D,sound,...) the machine closing should be done at deletion.

Returns:
vmr_OK or vmr_FAILED

Implements VirtualMachine.

virtual void NewObject3DBuffer InternalObject3DBuffer **  _ppVertexAndPolygonBufferOut,
unsigned int  _maxNbVertex,
unsigned int  _maxNbTriangle,
unsigned int  _extraMemberFlags
[virtual]
 

Ask the Creation of a new InternalObject3DBuffer you can then fill with InternalObject3DBuffer::GetFirstVertex() , InternalObject3DBuffer::GetFirstTriangle() and InternalObject3DBuffer::SetNumberOfActiveTriangle() . Then the object can be positionned with the matrix methods, and drawn with RenderMesh() The object shape can be dynamic and rebuilt, until a call to CompileObject3DBufferAsStatic(). In edition mode, object has to be destroyed with DeleteObject3DBuffer().

Parameters:
_ppVertexAndPolygonBufferOut the object returned, or 0L if failed.(no mem ?)
_maxNbVertex maximum number of vertex to fill.
_maxNbTriangle maximum number of Triangle to fill.
_extraMemberFlags or'ed bits (bOb3D_...) to activate extra vertex members.

virtual void NewTexture InternalTexture **  _ppTextureOut  )  [pure virtual, inherited]
 

Ask the Creation of a new InternalTexture, then used to render 3D objects with RenderMesh(). In edition mode, InternalTexture has to be destroyed with DeleteTexture().

Parameters:
_ppTextureOut the object returned, or 0L if failed.(no mem ?)

virtual void NewTexture InternalTexture **  _ppTextureOut  )  [virtual]
 

Ask the Creation of a new InternalTexture, then used to render 3D objects with RenderMesh(). In edition mode, InternalTexture has to be destroyed with DeleteTexture().

Parameters:
_ppTextureOut the object returned, or 0L if failed.(no mem ?)

virtual void NewViewPortChild InternalViewPort **  _ppViewPortOut,
InternalViewPort _pFatherViewPort = 0L
[virtual]
 

Ask the Creation of a new InternalViewPort, that must be the child of another ViewPort, specified by _pFatherViewPort.if no father is specified, the new ViewPort will be the child of the default root ViewPort. To create another Root ViewPort, create a texture and use VirtualMedia::NewViewPortOnTexture(). In edition mode, each InternalViewPort has to be destroyed with DeleteViewPort().

Parameters:
_ppViewPortOut the object returned, or 0L if failed.(no mem ?)
_pFatherViewPort the father viewport. If 0L, it uses the default root.

virtual void NewViewPortOnTexture InternalViewPort **  _ppViewPortOut,
InternalTexture *  _pRootTexture,
unsigned int  _np2PixelWidth,
unsigned int  _np2PixelHeight,
InternalTexture::TextureImageLayerEnum  _layerToAffect
[virtual]
 

Ask the Creation of a new Root InternalViewPort, that will render on a texture image. specified by _pRootTexture. You got to create a texture first for parameter _pRootTexture. In edition mode, each InternalViewPort has to be destroyed with DeleteViewPort().

Parameters:
_ppViewPortOut the object returned, or 0L if failed.(no mem ?)
_pRootTexture an InternalTexture. Can't be null.
_np2PixelWidth integer which can be 1,2,4,8,16,32,64,128,256,512 that stand for the square of the pixel width.
_np2PixelHeight integer which can be 1,2,4,8,16,32,64,128,256,512 that stand for the square of the pixel height.
_layerToAffect the texture layer (simple mapping, environment) where to render.

virtual void ProcessInterface  )  [virtual]
 

Process the Machine's interface messages (mouse,keyboard,...), in the real time. Then methods like VirtualMachine::GetQuitMessage() are updated.

Implements VirtualMachine.

static void RenderMesh_Draw3D_Flat DCInternalObject3DBuffer pbuffer  )  [static]
 

tool method used by pass1(opque) and 2(transp.). drawn after flags&matrix are set.

void SetRate float  _rate  )  [inline]
 

Process the Machine's interface messages (mouse,keyboard,...), in the real time. Then methods like VirtualMachine::GetQuitMessage() are updated.

Definition at line 532 of file VedaMachineDreamcast.h.

References m_timerate.

virtual void SetSoundCurrentTime int  _seconds,
unsigned int  _fraction
[virtual]
 

force a date to the clock passed to the sound objects.

Parameters:
_seconds in second units.
_fraction the following after-the-point-units of _seconds, like if the whole were a 64 bits integer.

Implements VirtualMachine.

virtual void SetSoundVolume float  _newVolumeValue  )  [virtual]
 

tool: change main volume [0,1]. Yes, you can saturate when >1.

Parameters:
_newVolumeValue [0,1]

Implements VirtualMachine.

virtual void SwapScreenBuffer  )  [virtual]
 

Swap buffer so that what was drawn on the main screen is shown.


Member Data Documentation

unsigned int m_FirstController [protected]
 

1st pad:

Definition at line 549 of file VedaMachineDreamcast.h.

float m_fPlayFrequency [static, protected]
 

float version:

Definition at line 564 of file VedaMachineDreamcast.h.

unsigned int m_lastButtonCondition [protected]
 

last

Definition at line 630 of file VedaMachineDreamcast.h.

unsigned int m_MixRate [static, protected]
 

sound mix rate: 22050,44100 , ...

Definition at line 562 of file VedaMachineDreamcast.h.

unsigned char* m_pAllocChunkForTranslucentList [protected]
 

the real alloc for m_pTranslucentMatrixList, because it must be 32b aligned.

Definition at line 601 of file VedaMachineDreamcast.h.

InternalViewPort* m_pDefaultViewPort [protected, inherited]
 

this is the default viewport, it stands the whole screen by default. Used by GetDefaultViewPort().

Definition at line 840 of file VirtualMachine.h.

Referenced by VirtualMachine::GetDefaultViewPort().

VedaMachineDreamcast* m_pFirstMachine [static, protected]
 

link the machine to a static machine list, because sound mixing is static for more than one machine:

Definition at line 532 of file VedaMachineDreamcast.h.

SoundUpdateListCell* m_pFirstSoundObject [protected, inherited]
 

start of the chained list of the sound object update method:

Definition at line 852 of file VirtualMachine.h.

bool m_QuitMessage [protected, inherited]
 

If true, means that the user want to quit. Updated by ProcessInterface().

Definition at line 843 of file VirtualMachine.h.

Referenced by VirtualMachine::GetQuitMessage().

const unsigned int m_SoundBufferLength = 4096 [static, protected]
 

32768

Definition at line 584 of file VedaMachineDreamcast.h.

unsigned int m_TotalPlaySize [protected]
 

sound stuff

Definition at line 568 of file VedaMachineDreamcast.h.

const unsigned int m_TranslucentListMaximumDepth = 240 [static, protected]
 

translucent mesh list, for pass 2 rendering for kgl. cf SwapScreenBuffer()

Definition at line 599 of file VedaMachineDreamcast.h.


The documentation for this class was generated from the following file:
      /\/\        4         N         k         !         N         D
                      _______  _ __ ___  _____            ___ _ _  ____
     ___________  __//___   /________  |/    / ___________\_______/    \
    /   _   _   \/   _     /    _   /      _/_/____/    _       __     /
   /    /   /       /     /    /    \      \/     /    /    \   \     /
  \\___/___/___/    ¯    _____/_____/       ______\___/_____/\________\\
               \________/_ ___ __ l____\      /elD!  
                 http://www.m4nkind.com \____/