Home Artists Posts Import Register

Downloads

Content

Hi everyone,

I worked on the RDP in the last 2 weeks to get the first basic drawing features implemented into the core. While testing them, I was shocked to noticed that Mario Kart 64 was booting up fully until ingame. I really didn't expect it at this point in time already, so it's a nice surprise.

Of course the RDP is far from complete and if you look at the screenshots, you can see that clearly. Furthermore all games seem to have a high chance of randomly hanging, so don't expect to play these games already. Still, it's a very nice step for the core and kind of prove that it can work.

The RDP is a real beast with all its different features, so it will take a lot of time completing all of them. I prepared an overview of the RDP functionality for you and marked in colors how complete each of the submodules is:

While it's great that the RDP pixel pipeline works in the current state after just 2 weeks, you can already see that there are still a lot of gray boxes, features not implemented at all. Also most of the existing ones are still in a early state.

I will probably show you some examples of these features in the next articles, especially how things look without and with them.


You can already tell with the picture of Mario 64 at the top:

- the water being visible is due to the missing z-Buffer

- the castle being only half textured is due to the only texturing mode currently implemented (16bit RGB) still having a bug

-  the tree texture or window texture being wrong size is due to missing perspective correction

This last point might surprise you the same as it surprised me at first, because missing perspective correction is mostly known for warped textures in PSX games. But N64 game developers have been creative: they used a 3D feature to scale 2D sprites. I'm not sure yet why. Maybe because it's free of cost, as the pixel pipeline calculates a distance for textures anyway, so it can be also used for 2D sprites.

In any case, the next steps should be clear: implement all the missing features of the RDP. As this will keep me busy for a long time, every now and then I will take a break from the RDP and do some other feature or bugfix.


What can you do with this unstable, glitchy version now?

Well, you can try the games that "kind-of" work now. I attached the latest testbuild for you. Best to start with Mario Kart 64 and instantly skip the intro until ingame to reduce the chance of the game crashing.

Please be aware that this version is more a novelty and doesn't offer really playable games yet, so unless you are super curious and want to spend time with setting everything up and jumping through several hoops, you are probably better off with waiting for a more stable build in the future.

I will do a more in-depth article on some of the RDP features next week when I have more time again.


Thank you all and have fun!

Files

Comments

Anonymous

So far, do you think that a single stick of RAM is enough for this core?

John Gillotte

What are you’re thoughts on performance? It seems to me from videos of people playing that Mario has some slowdowns. Of course the original game had slowdowns, is the core running at 100% speed? Or are there optimizations that need to be made?

FPGAzumSpass

The CPU is not complete yet, it's still missing the data cache and TLB. The data cache will have huge impact on the performance. I postponed it until games work, so i can see if adding it causes any regressions. Better than implementing it in blind :)