Na minha opinião, os bits mais importantes para fazer uma cena do OpenGL parecer uma cena do PSX seria garantir que a filtragem estivesse desativada (o PS1 tinha apenas o vizinho mais próximo) e desativar o buffer Z (não havia nenhum) e renderizar sua cena com o algoritmo de pintores.
A iluminação era apenas por vértice; na verdade, não havia nenhum equipamento de iluminação, apenas a coloração sombreada com gouraud. A iluminação era orientada por software, para que você pudesse fazer qualquer coisa dentro das limitações do tempo da CPU, das quais não havia muito espaço para coisas avançadas inteligentes como "iluminação". :) Nós conseguimos especular a certa altura, mas como era por vértice, a cena parecia brilhante, então nós a abandonamos. Nós nunca conseguimos especular para trabalhar com malhas de pele como normais de mistura e, em seguida, usá-las levou muito tempo.
O PS1 também teve um pouco de nado de textura, não tenho certeza de como você implementaria isso com o OpenGL, mas se você estiver atrás de uma experiência autêntica, talvez apenas tentando fazer a quebra dos UVs quando eles estiverem perto da borda da tela daria uma aproximação razoável.
Também recomendo que você observe as transformações de vértices: o PS1 não possui flutuadores; portanto, a renderização ocorreu com pipelines de ponto fixo; essa é a causa do movimento instável ao reproduzir animações. Havia apenas tantas posições em que um vértice poderia estar, e no ponto fixo de 16 bits, essas nem eram tantas posições. Assista a alguns vídeos do YouTube do PS1 para ter uma idéia de como isso afetou o jogo, http://www.youtube.com/watch?v=RSV4IBa1pMIvocê pode ver aqui que isso significa que as linhas retas tremem quando a câmera está perto da horizontal. Eu acho que uma boa maneira de emular isso seria transformar seu mundo em software (assim como o PS1) e sempre gerar coordenadas de tela com números inteiros para o tamanho da tela emulada (que foi uma das principais razões pelas quais os polis se agitaram, eles não pôde ser renderizado em subpixels).
EDITAR
O nado de textura foi devido ao PS1 sem interpolação 3D. Conforme mencionado por user712092, o renderizador afim só podia interpolar no espaço da tela, então acabamos com nossas diagonais erradas. Isso pode ser implementado ativando noperspective
seus qualificadores de interpolação ou emulados manualmente, transformando a cena e descartando o valor Z final em seu vértice depois de dividir as coordenadas da tela xey por esse valor z