Exemple #1
0
static int _qdgdfv_startup(void)
{
    vga_init();

    _qdgdfv_scale = 1;

    /* only 320x200 supported by now */
    _qdgdfv_screen_x_size = 320;
    _qdgdfv_screen_y_size = 200;

    vga_setmode(G320x200x256);

    _qdgdfv_set_palette();

    keyboard_init();

    keyboard_translatekeys(TRANSLATE_CURSORKEYS);

    _qdgdfv_virtual_screen = (unsigned char *)
        qdgdfv_malloc(_qdgdfv_screen_x_size * _qdgdfv_screen_y_size);

    qdgdfv_clear_virtual_screen();

    /* svgalib runs always fullscreen */
    _qdgdfv_full_screen = 1;

    qdgdfv_logger("qdgdfv_startup", "SVGALIB driver startup");

    return 1;
}
Exemple #2
0
void MapStartup(void)
/* inicializa el laberinto */
{
    size_t map_size;

    map_size = MAP_SIZE * sizeof(struct map_block *);

    if (m_block == NULL)
        m_block = (struct map_block **) qdgdfv_malloc(map_size);
    else {
        int n, i;
        struct map_block *m;
        struct map_face *f;

        for (n = 0; n < MAP_SIZE; n++) {
            if ((m = m_block[n]) == NULL)
                continue;

            for (i = 0; i < 4; i++) {
                if ((f = m->faces[i]) != NULL) {
                    if (f->object != NULL)
                        free(f->object);

                    free(f);
                }
            }
        }

        objects = NULL;
    }

    memset(m_block, '\0', map_size);
}
Exemple #3
0
struct map_face *AllocMapFace(void)
{
    struct map_face *f;

    f = qdgdfv_malloc(sizeof(struct map_face));
    memset(f, '\0', sizeof(struct map_face));

    return (f);
}
Exemple #4
0
struct map_block *AllocMapBlock(void)
{
    struct map_block *m;

    m = qdgdfv_malloc(sizeof(struct map_block));
    memset(m, '\0', sizeof(struct map_block));

    return (m);
}
Exemple #5
0
sp_object *AllocObject(struct map_face * face)
{
    sp_object *o;

    o = qdgdfv_malloc(sizeof(sp_object));
    memset(o, '\0', sizeof(sp_object));

    /* asocia ambos */
    o->face = face;
    face->object = o;

    /* coge el dim */
    o->idim = face->idim;

    /* actualiza la cadena */
    o->next = objects;
    objects = o;

    return (o);
}
Exemple #6
0
/**
 * qdgdfv_set_accum_buffer - Sets or resets the accumulation buffer.
 * @percent: percentage of buffer lasting
 *
 * If @percent is set to a non zero value (the default), the contents
 * of the previous frame is blended with the actual one with the
 * specified percent.
 * [Video Functions]
 */
void qdgdfv_set_accum_buffer(int percent)
{
	int x, y;

	if (_qdgdfv_accum_buffer)
		free(_qdgdfv_accum_buffer);

	if (percent == 0)
		_qdgdfv_accum_buffer = NULL;
	else {
		/* alloc a buffer */
		_qdgdfv_accum_buffer = qdgdfv_malloc(_qdgdfv_screen_x_size *
						     _qdgdfv_screen_y_size);


		/* build the table */
		for (y = 0; y < 256; y++)
			for (x = 0; x < 256; x++)
				_qdgdfv_accum_table[x][y] = qdgdfv_blend_color(y, x, percent);
	}
}
Exemple #7
0
int Menu(void)
{
    int up, down;
    int menu_opt = 0;

    if (_menu_mask == NULL)
        _menu_mask = qdgdfv_malloc(SCREEN_X_SIZE * SCREEN_Y_SIZE);

    _text_mask_x = -1;

    up = down = 0;

    qdgdfv_clear_virtual_screen();
    qdgdfv_load_pcx((unsigned char *) _menu_mask, "graph/menu.pcx", SCREEN_X_SIZE * SCREEN_Y_SIZE);

    SwapScreens(1);
    LoadScreen("wmenu");
    SwapScreens(0);

    qdgdfv_load_pcx((unsigned char *) cursor, "graph/cursor.pcx", CURSOR_SIZE);

    for (;;) {
        DrawWaterVirtualScreen();
        DrawMenu(menu_opt);
        qdgdfv_dump_virtual_screen();

        qdgdfv_input_poll();

        if (_qdgdfv_key_up) {
            down = 0;

            if (up == 0) {
                up = 1;

                menu_opt--;

                if (menu_opt == -1)
                    menu_opt = 4;
            }
        }
        else
            up = 0;

        if (_qdgdfv_key_down) {
            up = 0;

            if (down == 0) {
                down = 1;

                menu_opt++;

                if (menu_opt == 5)
                    menu_opt = 0;
            }
        }
        else
            down = 0;

        if (_qdgdfv_key_escape) {
            menu_opt = -1;
            break;
        }

        if (_qdgdfv_key_enter)
            break;
    }

    /* wait until no key is pressed */
    while (_qdgdfv_key_escape || _qdgdfv_key_enter || _qdgdfv_key_up || _qdgdfv_key_down)
        qdgdfv_input_poll();

    return (menu_opt);
}