[Japanese] [project page]

idsoftware forever on Dreamcast

NEWS Downloads Compatibility Forum Quake Quake II Hexen II Developper

NEWS

2002-09-05 2002-08-12 news archive

Downloads

Quake

Quake II

Hexen II

Common

Compatibility list

Mod/Map compativility list

Forum

Quake

screenshot

quake

After The Fall TC

glquake

status

Quake II

screenshot

soft render

status

Hexen II

screenshot

glhexen2

status

BTW, Quake and Quake2 works on Linux/SH with no change.

Acknowledgement


TECHNICAL ISSUE

DC Quake has three parts.

- newlib with kos
- OpenGL API mostly rewritten kgl
- Quake source code
-- machine depend code for Quake
-- Quake source change

additionary, some modify of kos.


newlib with kos

 newlib is famous free standard C library for embedded use.

- use newlib instead of kos's libc
- change some defines and typedef of kos to same value of newlib, for example, O_RDONLY etc,
- make alternative unix like systemcall functions (open/read/etc) instead of newlib/libc/sys/sh/syscalls.c

link:
- use kos's startup code instead of newlib's one
- use new syscalls code instead of newlib's one

syscalls code:

 map unix like open,read,write,close calls to kos's fs_xxxx
- open functions return -1 but fs_open return 0 if failed.
- in newlib file fuctions, 
 use "if (retval<0)" instead of "if (retval==-1)"
 kos's file handle is realy pointer address of file structure.
 so it point 8c0010000 - memory end, this value is always minus.

 resolve these problem using wrapper library.


OpenGL API

 implement only used in quake functions and defines
 near/far clipping is not yet impremented.


Quake source change:

 in Quake code, used very large static/global variable area.
- working area -> malloc or alloca
- change some MAX_ defines to small. so big map may not load.
 Hexen2 and Quake2 use more large area, so more modified.

in orignal glquake code, use opaqe texture as GL_COLORINDEX texture with GL_COLOR_INDEX8_EXT internal format
and transluecnt texture as GL_RGBA texture.
Dreamcast have translucent paletted texture. so use GL_COLORINDEX for both texture.
and GL_LUMINANCE texture used by lightmap treat as 8bit paletted texture internally,it has own palette.
in this change, use 8bit paletted texture insted of 16bit ARGB4444 texture. so texture memory usage is half size.
I don't use VQ compressed texture because quake dynamically rewrite texture using glTexSubImag2D.
max texture size is 256x256 for less memory.
mipmap isn't support by memory reason.


DC Quake2 has one more parts:

- to support mod game/renderer change, dynamic load library support for sh-elf static object
Hosted by:
SourceForge Logo