[embedyt] https://www.youtube.com/watch?v=homxYyDKVis[/embedyt]
I spend around 10 hours finish this, looks like it is pretty easy to port exists project to using VoCore2 display.
First checkout source code from git@github.com:Vonger/Doom.git, thanks for its contributor jeffdoggett, other DOOM source code I can not even compile 🙂
Only need to change one file /Doom/Source/i_video.c
//
// DESCRIPTION:
// DOOM graphics stuff for VoCore2 Display, OpenWrt.
// based on i_video.c.
//
//-----------------------------------------------------------------------------
#include "includes.h"
#include "libvodisp.h"
unsigned int SCREENWIDTH = 320;
unsigned int SCREENHEIGHT = 200;
unsigned int ORIGSCREENWIDTH = 320;
unsigned int ORIGSCREENHEIGHT = 200;
union pixel {
struct _rgb {
unsigned char red;
unsigned char green;
unsigned char blue;
}rgb;
unsigned int full:24;
};
static union pixel palette_table[256];
static byte *framebuffer;
void I_InitGraphics (void)
{
framebuffer = malloc(800 * 480 * 3);
memset(framebuffer, 0, 800 * 480 * 3);
vodisp_connect();
}
void I_ShutdownGraphics(void)
{
vodisp_disconnect();
}
void I_SetPalette (byte* palette)
{
unsigned int colour = 0;
do {
palette_table[colour].rgb.blue = gammatable[usegamma][*palette++];
palette_table[colour].rgb.green = gammatable[usegamma][*palette++];
palette_table[colour].rgb.red = gammatable[usegamma][*palette++];
} while (++colour < 256);
}
void I_FinishUpdate (void)
{
byte *src = screens[0], *dst = framebuffer;
int i, j, pos;
for (j = 0; j < SCREENHEIGHT; j++) {
pos = j * 480 * 3;
for (i = 0; i < SCREENWIDTH; i++)
*(unsigned int *)(dst + pos + i * 3) = palette_table[*src++].full;
}
vodisp_write_frame(framebuffer);
}
void I_ReadScreen (byte* scr)
{
memcpy(scr, screens[0], SCREENWIDTH * SCREENHEIGHT);
}
void I_InitKeyboard (void)
{
}
void I_UpdateNoBlit (void)
{
}
void I_SetScreenSize (void)
{
}
void I_SetWindowName (const char * title)
{
}
void I_StartFrame (void)
{
}
void I_StartTic (void)
{
}
Here is necessary library and Makefile, you might need to modify.
Download: http://vonger.cn/misc/vocore2/doom.openwrt.tar.xz, uncompress and put it in /Doom/Source then compile.