/*
Copyright (C) 2015-2018 Night Dive Studios, LLC.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
/*
* $Source: r:/prj/cit/src/RCS/palfx.c $
* $Revision: 1.10 $
* $Author: minman $
* $Date: 1994/08/27 04:34:07 $
*
*/
#include
#include "init.h"
#include "palfx.h"
byte pal_fade_id;
byte cyc_id0, cyc_id1, cyc_id2, cyc_id3, cyc_id4, cyc_id5;
#define FADE_DOWN_DELAY 3
#define FADE_DOWN_STEPS 30
#define FADE_UP_DELAY 0
#define FADE_UP_STEPS 30
// Internal Prototypes
void finish_pal_effect(byte id);
byte palfx_start_fade_up(uchar *new_pal);
//-------------------------------------
void finish_pal_effect(byte id)
{
while (palette_query_effect(id) == ACTIVE)
palette_advance_effect(id, 1);
}
//-------------------------------------
void palfx_fade_down()
{
byte id;
static uchar blackp[768];
static uchar savep[768];
LG_memset(blackp, 0, sizeof(blackp));
gr_get_pal(0, 256, savep);
if ((num_installed_shifts >= 1) &&
(pal_fade_id >= 0) &&
(palette_query_effect(pal_fade_id) == ACTIVE))
{ palette_remove_effect(pal_fade_id); }
id = palette_install_fade(REAL_TIME, 0, 255, FADE_DOWN_DELAY, FADE_DOWN_STEPS, savep, blackp);
finish_pal_effect(id);
return;
}
//-------------------------------------
byte palfx_start_fade_up(uchar *new_pal)
{
static uchar blackp[768];
byte id;
LG_memset(blackp, 0, sizeof(blackp));
id = palette_install_fade(REAL_TIME, 0, 255, FADE_UP_DELAY, FADE_UP_STEPS, blackp, new_pal);
palette_advance_effect(id, 1);
return(id);
}
//-------------------------------------
void palfx_fade_up(bool do_now)
{
// ppall is defined as the main shadow palette in init.c
pal_fade_id=palfx_start_fade_up(ppall);
if (do_now)
finish_pal_effect(pal_fade_id);
}
//-------------------------------------
void palfx_init()
{
palette_initialize(8); // 1 time unit per frame, 8 effects max
palette_set_rate(1);
cyc_id0 = palette_install_cbank(REAL_TIME, 0x03, 0x07, 68); // 80
cyc_id1 = palette_install_cbank(REAL_TIME, 0x0b, 0x0f, 40); // 50
cyc_id2 = palette_install_cbank(REAL_TIME, 0x10, 0x14, 20); // 25
cyc_id3 = palette_install_cbank(REAL_TIME, 0x15, 0x17, 108); // 125
cyc_id4 = palette_install_cbank(REAL_TIME, 0x18, 0x1a, 84); // 100
cyc_id5 = palette_install_cbank(REAL_TIME, 0x1b, 0x1f, 64); // 75
}