/*
** Command & Conquer Generals Zero Hour(tm)
** Copyright 2025 Electronic Arts Inc.
**
** 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 .
*/
// Copyright (C) Electronic Arts Canada Inc. 1995-2002. All rights reserved.
/* ABSTRACT */
/*------------------------------------------------------------------*/
/* */
/* RefPack - Backward Reference Codex */
/* */
/* by FrANK G. Barchard, EAC */
/* */
/*------------------------------------------------------------------*/
/* */
/* Version Date SE History: */
/* ------- ---- -- -------- */
/* 0.10 941010 FB First codex prototype module */
/* 0.90 941019 FB #includable */
/* 1.00 950108 FB frozen API at 1.00 */
/* 1.01 010426 FB 32 size field */
/* */
/*------------------------------------------------------------------*/
/* */
/* Module Notes: */
/* ------------- */
/* used hash table and link table for speed */
/* Reentrant */
/* Files: refread.c refwrite.c refcodex.h (refmatch.asm pc) */
/* */
/*------------------------------------------------------------------*/
/* */
/* Format Notes: */
/* ------------- */
/* refpack is a sliding window (131k) lzss method, with byte */
/* oriented coding. */
/* */
/* huff fb6 style header: */
/* *10fb fb6 refpack 1.0 reference pack */
/* *90fb fb6 refpack 1.01 32 bit reference pack */
/* */
/* */
/* header: */
/* [10fb] [totalunpacksize] [nextunpacksize] */
/* 2 3 3 */
/* [90fb] [totalunpacksize] [nextunpacksize] */
/* 2 4 4 */
/* */
/* */
/* */
/* format is: */
/* ---------- */
/* 0ffnnndd_ffffffff short ref, f=0..1023,n=3..10,d=0..3 */
/* 10nnnnnn_ddffffff_ffffffff int ref, f=0..16384,n=4..67,d=0..3 */
/* 110fnndd_f.._f.._nnnnnnnn very int,f=0..131071,n=5..1028,d=0..3*/
/* 111ddddd literal, d=4..112 */
/* 111111dd eof, d=0..3 */
/* */
/*------------------------------------------------------------------*/
/* END ABSTRACT */
#include
#include "codex.h"
#include "refcodex.h"
/****************************************************************/
/* Information Functions */
/****************************************************************/
CODEXABOUT *GCALL REF_about(void)
{
CODEXABOUT *info;
info = (CODEXABOUT *) galloc(sizeof(CODEXABOUT));
if (info)
{
memset(info, 0, sizeof(CODEXABOUT));
info->signature = QMAKEID(0,'R','E','F');
info->size = sizeof(CODEXABOUT);
info->version = 200; /* codex version number (200) */
info->decode = 1; /* supports decoding */
info->encode = 1; /* supports encoding */
info->size32 = 1; /* supports 32 bit size field */
strcpy(info->versionstr, "1.01"); /* version # */
strcpy(info->shorttypestr, "ref"); /* type */
strcpy(info->longtypestr, "Refpack"); /* longtype */
}
return(info);
}