Пример #1
0
void DriverTexture::setData(const unsigned char* memory)
{
    if(!memory)
    return;

    if(!data)
    {
        if(usesPalette())
        data = new unsigned char[256*256];
        else data = new unsigned char[256*256*2];
    }

    memcpy(data,memory,(usesPalette() ? 256*256 : 256*256*2));
};
Пример #2
0
void DriverTexture::setScanLine(int y, const unsigned char* scanLineData)
{
    if(!scanLineData || y < 0 || y > 255)
    return;

    if(!data)
    {
        if(usesPalette())
        data = new unsigned char[256*256];
        else data = new unsigned char[256*256*2];
    }

    if(usesPalette())
    memcpy(data+256*y,scanLineData,256);
    else memcpy(data+256*2*y,scanLineData,256*2);
};
Пример #3
0
DriverTexture::DriverTexture(unsigned short newFlags, short newCarnum)
{
    flags = newFlags;
    carnum = newCarnum;
    if(usesPalette())
    data = new unsigned char[256*256];
    else data = new unsigned char[256*256*2];
};
Пример #4
0
const unsigned char* DriverTexture::getScanLine(int i) const
{
    if(i < 0 || i > 255)
    return NULL;

    if(usesPalette())
    return data+256*i;
    return data+512*i;
};
Пример #5
0
void DriverTexture::setFlags(unsigned short newFlags)
{
    bool usedPalette = usesPalette();
    flags = newFlags;
    if(data)
    {
        if(usedPalette != usesPalette())
        {
            delete[] data;
            data = NULL;
        }
    }
    if(!data)
    {
        if(usesPalette())
        data = new unsigned char[256*256];
        else data = new unsigned char[256*256*2];
    }
};
Пример #6
0
void DriverTexture::setTruecolor(bool isTruecolor)
{
    if(isTruecolor && usesPalette())
    {
        if(data)
        delete[] data;
        data = new unsigned char[256*256*2];
        flags &= ~16;
    }
    else if(!isTruecolor && !usesPalette())
    {
        if(data)
        delete[] data;
        data = new unsigned char[256*256];
        flags |= 16;
    }
    if(!data)
    {
        if(usesPalette())
        data = new unsigned char[256*256];
        else data = new unsigned char[256*256*2];
    }
};
Пример #7
0
DriverTexture::DriverTexture(const DriverTexture& other)
{
    flags = other.flags;
    carnum = other.carnum;

    if(usesPalette())
    {
        data = new unsigned char[256*256];
        memcpy(data, other.getData(), 256*256*sizeof(unsigned char));
    }
    else
    {
        data = new unsigned char[256*256*2];
        memcpy(data, other.getData(), 256*256*2*sizeof(unsigned char));
    }
};
Пример #8
0
bool TempSpriteHandler::load(int16 dataVar, int32 size, int32 offset) {
	if (isDummy(size))
		return true;

	// Sprite available?
	if (!_sprite)
		return false;

	// Sprite requested?
	if (!isSprite(size))
		return false;

	// Index sane?
	int index = getIndex(size);
	if ((index < 0) || (index >= Draw::kSpriteCount))
		return false;

	SurfacePtr sprite = _vm->_draw->_spritesArray[index];

	// Target sprite exists?
	if (!sprite)
		return false;

	// Load the sprite
	if (!_sprite->writeSprite(*sprite))
		return false;

	// Handle palette
	if (usesPalette(size)) {
		if (!_sprite->writePalette((byte *)_vm->_global->_pPaletteDesc->vgaPal))
			return false;

		_vm->_video->setFullPalette(_vm->_global->_pPaletteDesc);
	}

	if (index == 21) {
		// We wrote into the backbuffer, blit
		_vm->_draw->forceBlit();
		_vm->_video->retrace();
	} else if (index == 20)
		// We wrote into the frontbuffer, retrace
		_vm->_video->retrace();

	return true;
}
Пример #9
0
bool TempSpriteHandler::save(int16 dataVar, int32 size, int32 offset) {
	if (isDummy(size))
		return true;

	SurfacePtr sprite = createSprite(dataVar, size, offset);
	if (!sprite)
		return false;

	// Save the sprite
	if (!_sprite->readSprite(*sprite))
		return false;

	// Handle palette
	if (usesPalette(size))
		if (!_sprite->readPalette((const byte *)_vm->_global->_pPaletteDesc->vgaPal))
			return false;

	return true;
}
Пример #10
0
int DriverTexture::load(IOHandle handle, IOCallbacks* callbacks)
{
    cleanup();
    if(!handle || !callbacks)
    return -1;

    callbacks->read(&flags,2,1,handle);
    callbacks->read(&carnum,2,1,handle);
    if(usesPalette())
    {
        data = new unsigned char[256*256];
        callbacks->read(data,1,256*256,handle);
    }
    else
    {
        data = new unsigned char[256*256*2];
        callbacks->read(data,1,2*256*256,handle);
    }
    return getRequiredSize();
};
Пример #11
0
int DriverTexture::save(IOHandle handle, IOCallbacks* callbacks)
{
    if(!handle || !callbacks)
    return 1;

    callbacks->write(&flags,2,1,handle);
    callbacks->write(&carnum,2,1,handle);

    if(usesPalette())
    {
        if(data)
        {
            callbacks->write(data,256*256,1,handle);
        }
        else
        {
            data = new unsigned char[256*256];
            memset(data,0,256*256);
            callbacks->write(data,256*256,1,handle);
            delete[] data;
            data = NULL;
        }
    }
    else
    {
        if(data)
        {
            callbacks->write(data,256*256*2,1,handle);
        }
        else
        {
            data = new unsigned char[256*256*2];
            memset(data,0,256*256*2);
            callbacks->write(data,256*256*2,1,handle);
            delete[] data;
            data = NULL;
        }
    }
    return 0;
};
Пример #12
0
unsigned int DriverTexture::getRequiredSize()
{
    if(usesPalette())
    return 4+256*256;
    return 4+256*256*2;
};