What's new

Wondering which concepts and particular functions I should read up on.

ThunderClaw

New member
I'm a Computer Science major and I'm basically looking for a project to fiddle with during my CIS classes. I know that PJ64 and 1964 plugins use C++, and I think possibly a little inline assembly.

My goal here is to develop game-specific GPUs and SPUs for as close to perfect emulation as possible of that particular game. Which C++ concepts would be most useful for me to refresh my memory or look into the deepest?

EDIT: For clarification, I guess, I would prefer to use OpenGL for the GPU plugins. I'm not on a holy war against D3D if it proves to be superior in a given situation, though.
 

blight

New member
Why do you wanna develop such GPUs/SPUs?
I think a perfect GPU plugin with OpenGL is impossible because some things which the N64 does like smoothing edges in the rendered image and stuff can never be emulated with GL i think.
Low-Level-Emulation plugins are very accurate because even if 2 ucodes of a game are based on the same code but have slight differences the result will be ok, but it will be f00king slow to render graphics with software rsp emulation...
For audio there is a LLE plugin and it works quite well i think
 

Zilla

夢を見られた
OpenGL is the way to go, you'll never get perfect emulation as Blight says, but your code will be completely portable.

And since the Zilmar spec is implemented in 90% of N64 emulators, you'd get extra credit for having your code run under a variety of OS'es. :)
 
OP
T

ThunderClaw

New member
@blight: The short answer is because it's more interesting to analyze the specifics of each ROM image's needs and demands than to try to generalize. It also presents a new challenge with each game and makes success a lot more attainable.

@Zilla: Sorry, Zilmar spec? That doesn't ring a bell.
 

Niggy G

HTAFC will rise again!!!
ThunderClaw said:
@Zilla: Sorry, Zilmar spec? That doesn't ring a bell.

Taken from http://www.smiff.clara.net/plugins/#Q030

What is "Zilmar Spec.?

Apart from co-writing Project64, Zilmar wrote extra n64 emulation documention, provided coding support to other n64 emulator authors, and as you probably guesed, he designed these specifications (you can download the specifications as text files, see relevant question in this FAQ). He also wrote a simple set of example plugins to demonstrate the system to potential plugin authors (Zilmar did not invest much time in writing plugins himself). There have been several updates to the plugin specifications, they are mostly backward and forward compatible.
 

blight

New member
ThunderClaw: perfect emulation of n64 graphics using opengl is simply not possible because the N64 does software rendering using the RCP (modified R4300, n64 cpu).
A ucode is a program which runs on the RCP and is told by the game which stuff to draw (i.e. line from x,y,z to x2,y2,z2) and the ucode then renders the 2d image. Some ucodes might only have slight differences so the easiest way would be to write a low-level-graphics plugin which you will need to write a RSP dll for which is able to actually run the graphics ucode (project64's RSP dll is only able to run audio ucodes)

trust me it would be slow, even with a 3 GHz P4
for recording movies it would be nice to have a lle plugin tho :p
 

Top