Add "fire" screen saver.
Submitted by: Brad Forschinger <retch@flag.blackened.net>
This commit is contained in:
parent
9b6c9bcee5
commit
cc611a43c2
103
sys/dev/syscons/fire/fire_saver.c
Normal file
103
sys/dev/syscons/fire/fire_saver.c
Normal file
@ -0,0 +1,103 @@
|
||||
|
||||
/*
|
||||
* brad forschinger, 19990504
|
||||
* <retch@flag.blackened.net>
|
||||
*
|
||||
* written with much help from warp_saver.c
|
||||
*
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/kernel.h>
|
||||
#include <sys/module.h>
|
||||
#include <sys/syslog.h>
|
||||
|
||||
#include <machine/md_var.h>
|
||||
#include <machine/random.h>
|
||||
|
||||
#include <saver.h>
|
||||
|
||||
#define X_SIZE 320
|
||||
#define Y_SIZE 200
|
||||
|
||||
int blanked;
|
||||
u_char fire_pal[768];
|
||||
u_char buf[X_SIZE * (Y_SIZE + 1)];
|
||||
|
||||
int fire_saver(video_adapter_t *adp, int blank) {
|
||||
static u_char *vid;
|
||||
int x, y;
|
||||
|
||||
if (blank) {
|
||||
if (blanked <= 0) {
|
||||
int red, green, blue;
|
||||
int palette_index;
|
||||
|
||||
set_video_mode(adp, M_VGA_CG320);
|
||||
|
||||
/* build palette */
|
||||
red = green = blue = 0;
|
||||
for (palette_index = 0; palette_index < 256; palette_index++) {
|
||||
|
||||
red++;
|
||||
if (red > 128)
|
||||
green += 2;
|
||||
|
||||
fire_pal[(palette_index * 3) + 0] = red;
|
||||
fire_pal[(palette_index * 3) + 1] = green;
|
||||
fire_pal[(palette_index * 3) + 2] = blue;
|
||||
}
|
||||
load_palette(adp, fire_pal);
|
||||
|
||||
blanked++;
|
||||
vid = (u_char *)adp->va_window;
|
||||
}
|
||||
|
||||
/* make a new bottom line */
|
||||
for (x = 0, y = Y_SIZE; x < X_SIZE; x++)
|
||||
buf[x + (y * X_SIZE)] = random() % 160 + 96;
|
||||
|
||||
/* fade the flames out */
|
||||
for (y = 0; y < Y_SIZE; y++) {
|
||||
for (x = 0; x < X_SIZE; x++) {
|
||||
buf[x + (y * X_SIZE)] = (buf[(x + 0) + ((y + 0) * X_SIZE)] +
|
||||
buf[(x - 1) + ((y + 1) * X_SIZE)] +
|
||||
buf[(x + 0) + ((y + 1) * X_SIZE)] +
|
||||
buf[(x + 1) + ((y + 1) * X_SIZE)]) / 4;
|
||||
if (buf[x + (y * X_SIZE)] > 0)
|
||||
buf[x + (y * X_SIZE)]--;
|
||||
}
|
||||
}
|
||||
|
||||
/* put our buffer into video ram */
|
||||
memcpy(vid, buf, X_SIZE * Y_SIZE);
|
||||
} else {
|
||||
blanked = 0;
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
int fire_initialise(video_adapter_t *adp) {
|
||||
video_info_t info;
|
||||
|
||||
if (get_mode_info(adp, M_VGA_CG320, &info)) {
|
||||
log(LOG_NOTICE, "fire_saver: the console does not support M_VGA_CG320\n");
|
||||
return(ENODEV);
|
||||
}
|
||||
|
||||
blanked = 0;
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
int fire_terminate(video_adapter_t *adp) {
|
||||
return(0);
|
||||
}
|
||||
|
||||
static scrn_saver_t fire_module = {
|
||||
"fire_saver", fire_initialise, fire_terminate, fire_saver, NULL
|
||||
};
|
||||
|
||||
SAVER_MODULE(fire_saver, fire_module);
|
@ -1,5 +1,5 @@
|
||||
# $Id: Makefile,v 1.6 1998/12/28 14:23:43 des Exp $
|
||||
# $Id: Makefile,v 1.7 1998/12/31 13:42:00 des Exp $
|
||||
|
||||
SUBDIR= blank daemon fade green logo rain snake star warp
|
||||
SUBDIR= blank daemon fade green logo rain snake star warp fire
|
||||
|
||||
.include <bsd.subdir.mk>
|
||||
|
9
sys/modules/syscons/fire/Makefile
Normal file
9
sys/modules/syscons/fire/Makefile
Normal file
@ -0,0 +1,9 @@
|
||||
|
||||
KMOD= fire_saver
|
||||
SRCS= fire_saver.c
|
||||
|
||||
NOMAN=
|
||||
CFLAGS+= -I${.CURDIR}/..
|
||||
CWARNFLAGS= -Wall -pedantic
|
||||
|
||||
.include <bsd.kmod.mk>
|
103
sys/modules/syscons/fire/fire_saver.c
Normal file
103
sys/modules/syscons/fire/fire_saver.c
Normal file
@ -0,0 +1,103 @@
|
||||
|
||||
/*
|
||||
* brad forschinger, 19990504
|
||||
* <retch@flag.blackened.net>
|
||||
*
|
||||
* written with much help from warp_saver.c
|
||||
*
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/kernel.h>
|
||||
#include <sys/module.h>
|
||||
#include <sys/syslog.h>
|
||||
|
||||
#include <machine/md_var.h>
|
||||
#include <machine/random.h>
|
||||
|
||||
#include <saver.h>
|
||||
|
||||
#define X_SIZE 320
|
||||
#define Y_SIZE 200
|
||||
|
||||
int blanked;
|
||||
u_char fire_pal[768];
|
||||
u_char buf[X_SIZE * (Y_SIZE + 1)];
|
||||
|
||||
int fire_saver(video_adapter_t *adp, int blank) {
|
||||
static u_char *vid;
|
||||
int x, y;
|
||||
|
||||
if (blank) {
|
||||
if (blanked <= 0) {
|
||||
int red, green, blue;
|
||||
int palette_index;
|
||||
|
||||
set_video_mode(adp, M_VGA_CG320);
|
||||
|
||||
/* build palette */
|
||||
red = green = blue = 0;
|
||||
for (palette_index = 0; palette_index < 256; palette_index++) {
|
||||
|
||||
red++;
|
||||
if (red > 128)
|
||||
green += 2;
|
||||
|
||||
fire_pal[(palette_index * 3) + 0] = red;
|
||||
fire_pal[(palette_index * 3) + 1] = green;
|
||||
fire_pal[(palette_index * 3) + 2] = blue;
|
||||
}
|
||||
load_palette(adp, fire_pal);
|
||||
|
||||
blanked++;
|
||||
vid = (u_char *)adp->va_window;
|
||||
}
|
||||
|
||||
/* make a new bottom line */
|
||||
for (x = 0, y = Y_SIZE; x < X_SIZE; x++)
|
||||
buf[x + (y * X_SIZE)] = random() % 160 + 96;
|
||||
|
||||
/* fade the flames out */
|
||||
for (y = 0; y < Y_SIZE; y++) {
|
||||
for (x = 0; x < X_SIZE; x++) {
|
||||
buf[x + (y * X_SIZE)] = (buf[(x + 0) + ((y + 0) * X_SIZE)] +
|
||||
buf[(x - 1) + ((y + 1) * X_SIZE)] +
|
||||
buf[(x + 0) + ((y + 1) * X_SIZE)] +
|
||||
buf[(x + 1) + ((y + 1) * X_SIZE)]) / 4;
|
||||
if (buf[x + (y * X_SIZE)] > 0)
|
||||
buf[x + (y * X_SIZE)]--;
|
||||
}
|
||||
}
|
||||
|
||||
/* put our buffer into video ram */
|
||||
memcpy(vid, buf, X_SIZE * Y_SIZE);
|
||||
} else {
|
||||
blanked = 0;
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
int fire_initialise(video_adapter_t *adp) {
|
||||
video_info_t info;
|
||||
|
||||
if (get_mode_info(adp, M_VGA_CG320, &info)) {
|
||||
log(LOG_NOTICE, "fire_saver: the console does not support M_VGA_CG320\n");
|
||||
return(ENODEV);
|
||||
}
|
||||
|
||||
blanked = 0;
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
int fire_terminate(video_adapter_t *adp) {
|
||||
return(0);
|
||||
}
|
||||
|
||||
static scrn_saver_t fire_module = {
|
||||
"fire_saver", fire_initialise, fire_terminate, fire_saver, NULL
|
||||
};
|
||||
|
||||
SAVER_MODULE(fire_saver, fire_module);
|
Loading…
Reference in New Issue
Block a user