hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
11.36k stars 2.18k forks source link

Ys Seven minimap broken #2156

Closed Krude closed 10 years ago

Krude commented 11 years ago

Searched for it, but didn't get any results on wherther this was already mentioned. In Ys 7, the minimap in the upper right corner does not work. It's supposed to show a local part of the overall map you can view with Select. It's blank, though. Tested on Win7 x64 with PPSSPP 7.6 1214 g5335416.

solarmystic commented 10 years ago

@unknownbrackets What @raven02 said is absolutely accurate. The minimap is supposed to be a lot more detailed than what is being displayed in your screenshot. That level of detail is only still present when one of the Read Framebuffers to Memory modes is selected.

Also, the large map is meant to be semi-transparent, not completely solid:-

Buffered Rendering (solid map) screen00296

Read Framebuffers to Memory (semi-transparent, notice the presence of the characters in the backgound; this is the correct behaviour) screen00297

Also, here's an example of diference between the minimaps when comparing Buffered to Read FB to Mem

Buffered Rendering (only the character indicator is seen and is overlaid to a black screen) screen00329

Read Framebuffers to Mem (every pathway in the vicinity from the big map can be seen, in addition to the character indicators) screen00298

unknownbrackets commented 10 years ago

Okay, my bad. It sounded from the description like it didn't show at all. Anyway, this is definitely because of block transfers.

Block transfer download (not supported) 04126000 -> 08c86100

It tries to render from this address when showing the background of the map. It draws the map to this region.

Block transfer download (not supported) 04044000 -> 08c3bfc0 Block transfer download (not supported) 04000000 -> 08c3bfc0

The background is the same. It tries to render the scene behind the map, but instead gets black.

-[Unknown]

hrydgard commented 10 years ago

As those copies are easy to detect, it should be a pretty simple matter of reusing code from "read framebuffers to memory", grabbing a subrectangle instead. Just need to sit down and do it someday :)

dbz400 commented 10 years ago

It would be nice (may be i will try myself though not too competent on this) as the framebuffer to memory blit all framebuffers even though some framebuffers are not necessary to be rendered in this mode. (For example , in this case , only the framebuffer in behind for this map is necessary)

hrydgard commented 10 years ago

Yeah, exactly.

dbz400 commented 10 years ago

I did try something like this .The map show up but it is not get updated somehow ......

VirtualFramebuffer *bvfb = 0;

for (size_t i = 0; i < vfbs_.size(); ++i) {
    VirtualFramebuffer *vfb = vfbs_[i];
    if (MaskedEqual(vfb->fb_address, dst)) {
        dstBuffer = true;
    }
    if (MaskedEqual(vfb->fb_address, src)) {
        srcBuffer = true;
        bvfb = vfb;
    }
}

if (dstBuffer && srcBuffer) {
    WARN_LOG_REPORT(G3D, "Intra buffer block transfer (not supported) %08x -> %08x", src, dst);
} else if (dstBuffer) {
    WARN_LOG_REPORT(G3D, "Block transfer upload (not supported) %08x -> %08x", src, dst);
} else if (srcBuffer && g_Config.iRenderingMode == FB_BUFFERED_MODE) {
    WARN_LOG_REPORT(G3D, "Block transfer download (not supported) %08x -> %08x", src, dst);
    ReadFramebufferToMemory(bvfb);
}
unknownbrackets commented 10 years ago

I don't think we should copy the entire thing to memory in a way that we know is not correct.

-[Unknown]

dbz400 commented 10 years ago

Yep , probably i'll leave it and implement it cleaner and correct later .

dbz400 commented 10 years ago

Other than the mini map .In some area , it will be very dark like this

GLES - buffered rendering (framebuffer memory mode is okay though) ulus10551_00000

-softgpu ulus10551_00001

unknownbrackets commented 10 years ago

What issues still exist here with buffered rendering and simulate block transfers enabled?

-[Unknown]

dbz400 commented 10 years ago

I think should be no more outstanding issue as far as i know .