Warrior Of Light
Bam-bam-bam
- Mensagens
- 1.236
- Reações
- 4.648
- Pontos
- 453
Jet Force Gemini não usa micro-código, por incrível que pareça. Ao invés de usar o F3DEX-2 ele usa apenas o Fast-3D (primeira versão) com algumas customizações, para rodar com alguns efeitos especiais e usar algumas instruções específicas na CPU. Esse código é uma variação do que foi usado em Diddy Kong Racing, chamado de F3DDKR (Fast 3D Diddy Kong Racing) olhando pelo código do jogo ou Ucode 11 (olhando pelo debug).Rapaz...
Depois do seu post vou ser obrigado a jogar isso !
Uma pena que foi cancelado, parece que seria jogão com gráficos bem avançados.
Uma coisa, será que o framerate é estável em 30FPS ou tem quedas?
Se for é algo incomum, porque lembro que jogos mais pesados de TPS tipo Jet Force Gemini tinham muitas quedas de frame.
Estava olhando aqui e esse jogo roda na maior parte do tempo usando mais de 90% da CPU, chegando até 100%. Enquanto isso o RCP fica em torno de 5% (em algumas partes mais e outras menos).
Ou seja, provavelmente estão usando a CPU pra calcular a geometria e outras coisas, além de calcular a lógica. Toda porcentagem de uso do RCP é por conta de estar processando a resolução, texturas e mais alguma coisa relacionada a parte gráfica, provavelmente. Não vou investigar tanto porque vou acabar irritado, pensa em alguém que fica pistola só de olhar pra código (sim, sou eu mesmo ).
Abaixo a porcentagem de uso da CPU e RCP. CPU = 98,12% e GPU = 1,87%.
Nessa parte o jogo roda em 30 FPS (DL/s), mas em outras partes chega e ter 19.
Esse jogo é pesado, pois tem iluminação dinâmica, AI muito avançada, alguns efeitos de frame-buffer (como esse circulo em volta do personagem na abertura), partículas, muitas animações e até simulação de ray-tracing (usando polígonos espelhados no chão).
Essa foi uma "solução" para melhorar a execução do jogo, tentando tirar melhor proveito do hardware, visto que a RARE já tinha usado outros micro-códigos e não tinha obtido um resultado muito plausível, quando falamos em desempenho, pois rodavam muitos jogos com FPS abaixo da média.
A CPU e o RCP compartilham do mesmo barramento, então deixar somente a CPU pra fazer praticamente maior parte da tarefa seria uma alternativa, deixando a GPU mais livre, somente carregando alguns dados mais leves, lidando com o display da imagem, etc. Tinha achado até estranho o RCP quase não estar sendo usado, pensei em ser algum bug que estava acontecendo no debug, mas olhando no código, de fato, quase não está sendo usado mesmo.
#define EXC_INT EXC_CODE(0) /* interrupt */
#define EXC_MOD EXC_CODE(1) /* TLB mod */
#define EXC_RMISS EXC_CODE(2) /* Read TLB Miss */
#define EXC_WMISS EXC_CODE(3) /* Write TLB Miss */
#define EXC_RADE EXC_CODE(4) /* Read Address Error */
#define EXC_WADE EXC_CODE(5) /* Write Address Error */
#define EXC_IBE EXC_CODE(6) /* Instruction Bus Error */
#define EXC_DBE EXC_CODE(7) /* Data Bus Error */
#define EXC_SYSCALL EXC_CODE(8) /* SYSCALL */
#define EXC_BREAK EXC_CODE(9) /* BREAKpoint */
#define EXC_II EXC_CODE(10) /* Illegal Instruction */
#define EXC_CPU EXC_CODE(11) /* CoProcessor Unusable */
#define EXC_OV EXC_CODE(12) /* OVerflow */
#define EXC_TRAP EXC_CODE(13) /* Trap exception */
#define EXC_VCEI EXC_CODE(14) /* Virt. Coherency on Inst. fetch */
#define EXC_FPE EXC_CODE(15) /* Floating Point Exception */
#define EXC_WATCH EXC_CODE(23) /* Watchpoint reference */
#define EXC_VCED EXC_CODE(31) /* Virt. Coherency on data read */
Não foi uma solução muito boa, visto que o desempenho ainda sofre. Vendo isto a RARE usou outra solução no seus próximo jogos, usando micro-códigos customizados pra fazer melhor uso do RCP (e de todo hardware em si). Conker usa o F3DEX-2 e roda muito melhor, além de ser um jogo mais pesado.
Ultima Edição: