What's new

Z64 - a LLE graphics plugin

OP
Z

ziggy

New member
Still the same with R8. Both games have no speed changes...

Argh, I really though it would be the good one. Well, here are two version to test, they won't look right, but it's just to test the speed again.
 

Flash

Technomage
Still fails to compile in linux:
rsp.cpp: In function `void rsp_init(RSP_INFO)':
rsp.cpp:278: error: `memset' was not declared in this scope
 

PsyMan

Just Another Wacko ;)
Here are the results I've got with these 2 versions:

The "z64-tp2" version has some (heavy) gfx glitches (as you already said) but it fixes 3 (!) of the issues I had.
- Speed is OK now on all games that suffered major slowdown.
- The random "freezes" I had on some other games are also gone.
- On Shadowgate the screen would turn black at some point during the intro movie (if you let it play) that would stay there until you exit the emulator. This is fixed.

The "z64-clamp" version has less "heavy" gfx glitches but it fixes only the slowdown issues. This means the following:
- The "random" pauses on some games are still there.
- On Shadowgate the screen turns black at some point during the intro that stays there until you restart the emulator.

A weird (probably not related) bug remains on Shadowgate though; if you switch to fullscreen then the screen will be black until you exit the emulator even if you switch back to window mode (this happens with all versions of z64 and it is not fixed yet).
 
OP
Z

ziggy

New member
That's curious. Here's another version to test.

The freezes you mention, how long are they ? one second , more , less ? Also, how often do they happen ?

About the black screen issue in Shadowgate, I'm having it as well. I suspect that the version "tp2" was "fixing" it purely accidentaly (it does it for me too). It's a problem of emulation inacuracy, but it's not hardware dependent so I'll leave this for later.
 
Last edited:

PsyMan

Just Another Wacko ;)
The "freezes" I mentioned are not so random after all... nor they are actually "freezes". It's probably an effect that drops speed dramatically but the games I tried use it just for very few frames (so it seems like a freeze). This actually happens under certain circumstances and affects only the "clamp" versions (end everything except the "tp2" version).

Here are some cases of this happening:

Chameleon Twist: During character selection only if you try to select the green or the yellow (brown) player. (the game freezes for some seconds when trying switching to them)

Castlevania Legacy Of Darkness: Randomly during the menus before you start the game.

Zelda OOT: On places with static images as background there is major slowdown. Speed drops below 1fps. (inside houses, hyrule town, etc)

Nothing of the above happens with the "tp2" version.

Edit: The new "clamp" version has textures fixed.
 
Last edited:
OP
Z

ziggy

New member
Screenshots of Last Legion , a game using custom ucode.

EDIT : new release R9 based on the idea in the test tp2, it should fix all slowness issues (that I'm aware of) on ATI, and might even improve the general emulation quality in certain cases.
 
Last edited:

PsyMan

Just Another Wacko ;)
Nice. Everything seems right now, almost everything actually:

- Slowdown still occurs on Zelda Ocarina of Time. It happens only on cases where black borders appear on the top and bottom of the screen and the button icons (and hearts) are about to fade in. This does not happen with the tp2 version. (check pic).

- If you let the Shadowgate intro play for a while it'll be messed after some point (unemulated framebuffer effect?). If you do this while in fullscreen it will also result in ingame textures being messed. Switching back to window mode fixes that. Doing that on window mode does not result in texture corruption.

PS: Don't you just love ATi's OpenGL drivers? :p
 

ScottJC

At your service, dood!
Does the framebuffer in BK work with this plugin with a nvidia card, just tried it on my X1950 (ATI) and its the same as every other plugin, jigsaw not working.

Speed is ok sometimes, gets quite slow though. 60 to 30fps.

Edit: Mario Tennis is showing me a bit more love (attached screenie)
 
Last edited:
OP
Z

ziggy

New member
Good news SpyMan. Yeah I love those ATI drivers :) But we shouldn't put the blame entirely on their shoulder, I believe the problem you report now in Shadowgate isn't ATI's fault this time but rather general emulation problem in z64 :)

ScottJC, what is BK ?

EDIT : another nice transition effect in Mario Tennis' menus
 
Last edited:

PsyMan

Just Another Wacko ;)
Indeed. I was actually referring to the code you have to change because ATi's OGL drivers are far worse than their DirectX counterpart. The hardware is capable of various things... but the driver is the bottleneck.

When it comes to z64 issues... I also noticed that Star Fox 64 is broken on almost all versions. It works only on the builds you posted here and here. All the other versions of the plugin show an "assertion failed" error message.
 

ShadowFX

Guardian
ScottJC, what is BK ?
Well I saw him posting BK and jigsaw, so it must be Banjo-Kazooie :king:

I take it only parts of the framebuffer usage is emulated? I still get a bit of black around the ball effect (NVIDIA card here).
 
Last edited:
OP
Z

ziggy

New member
Ah, yes indeed it makes sense :) Ok the Jigsaw effect in Banjo Kazoie "works", but not in this version of Z64. It requires the GetFramebufferInfo API that only (to my knowledge) Mupen64 supports. Furthermore, the official version of Mupen64 has a little bug (I wrote to Hacktarux about that already) regarding this API, so it wouln't work even if it was turned on in Z64. Finally, Z64 gets very unstable for certain games when this option is on (Z64's fault this time), so that's why I removed it for now.
 

Rice

Emulator Developer
I would like to say that frame buffer effects should not be primary focus of the new LLE plugin because it is possible to be done in HLE plugins. The ability to emulate unsupported RSP ucode should be primary focus, shouldn't it?
 
OP
Z

ziggy

New member
Actually Rice, even though I didn't mention it in the project description, another goal for me in developing Z64 was to explore a bit framebuffer effects , simply because it was a problem that interested me. So, I haven't really a difference of priority between these two aspects, it depends a bit on my mood. If I feel I'm stuck on one aspect, then it's likely I'll work on the other one meanwhile. :)
 

Rice

Emulator Developer
Reason is that frame buffer effects aren't really too much to do with LLE. Approaching the effects with LLE won't give you advantages over HLE.

Frame buffer effects in N64 are actually not that complicate, even though it is not very easy to implement efficiently in modern PC's CPU-GPU architecture.

More inside about N64 frame buffer / rendering mechanism:
In N64, CPU and GPU (RDP + RSP) are sharing the same memory - 4MB/8MB RDRAM. After RDP has rendered some graphics into the RDRAM, it is just content in the memory, CPU, RDP, RSP can all use the content in a way or another. Most N64 frame buffer effects are to use the rendered content in the RDRAM as texture for later rendering. Another common way to use the content is the set the display buffer to a different location, so previous display buffer content is saved (untouched) and ready to be saved as textures (The BK jinsaw effect).

Having said these, you can probably see that LLE or HLE wont matter for these effects.

If a LLE plugin focuses on the LLE aspects, to run more unsupported ucode, it will make more sense and more impressive. You may want to just leave the frame buffer effects for now. It is not difficult to emulate such effects, it is the modern PC CPU-GPU architecture does not fit very well to N64 CPU-RDP-RSP architecture. The issue becomes more complicated if we want to use content in PC's video card frame buffer (high resolution content) instead of content in N64 frame buffer in RDRAM (There is actually no content there, unless you somehow copy the PC video card frame buffer content back to the N64 emulated RDRAM, and this is where COPY-BACK option in some video plugins comes from. And to do such COPY-BACK, we have to deal with screen size (resize), color conversion (PC RGBA8888 format to N64 RGB5551 format), etc.).


Rice
 
Last edited:
OP
Z

ziggy

New member
Look Rice, I know very well LLE emulation has nothing to do with Framebuffer effects. :) It just happens that I'm interested in both problems ; as I'm not going to develop two different plugins at the same time, I'm doing my experiments in the same one project : Z64.
 

Gonetz

Plugin Developer (GlideN64)
The key words here: depends on my mood. Yes, users demands can be taken into account, but let’s don't forget that prime goal of any such project is author's amusement :)
 

Top