wheremyfoodat / Panda3DS

HLE 3DS emulator
https://panda3ds.com/
GNU General Public License v3.0
974 stars 65 forks source link

Artifact, on open in linux without ROM #121

Open GabrielBRDeveloper opened 1 year ago

GabrielBRDeveloper commented 1 year ago

OS: LinuxMint 21.1 Kernel: 5.15.0-76-generic

image

wheremyfoodat commented 1 year ago

How did you install this? Maybe try compiling from source?

GabrielBRDeveloper commented 1 year ago

Builded from source

wheremyfoodat commented 1 year ago

Does it work if you load a ROM eg Ocarina of Time? What's your GPU?

GabrielBRDeveloper commented 1 year ago

in the precompiled version, it doesn't even display the window.

wheremyfoodat commented 1 year ago

Yeah the precompiled builds aren't really portable because shipping software on Linux is not a fun experience

wheremyfoodat commented 1 year ago

Potentially fixed in #259?

GabrielBRDeveloper commented 1 year ago

Not resolved.

image

image

wheremyfoodat commented 1 year ago

Could you try loading a ROM? Also please post your specs and any important information if possible.

GabrielBRDeveloper commented 1 year ago

My system:

image

I will test Zelda Ocarina, and return with a feedback

wheremyfoodat commented 1 year ago

Thanks!

GabrielBRDeveloper commented 1 year ago

did error:

image

Unhandled SIGSEGV at rip 0x00007f62d19a9c9d Falha de segmentação (imagem do núcleo gravada)

wheremyfoodat commented 1 year ago

Uh that's bad. Does this ROM run on Citra?

GabrielBRDeveloper commented 1 year ago

too crash in recent citra version, i go to check the rom file.

GabrielBRDeveloper commented 1 year ago

image

GabrielBRDeveloper commented 1 year ago

It's working.

GabrielBRDeveloper commented 1 year ago

The artifact is caused because is not none rendering in moment, on edit code in emulator.cpp:


void Emulator::runFrame() {
    if (running) {
        cpu.runFrame(); // Run 1 frame of instructions
        gpu.display();  // Display graphics

        // Send VBlank interrupts
        ServiceManager& srv = kernel.getServiceManager();
        srv.sendGPUInterrupt(GPUInterrupt::VBlank0);
        srv.sendGPUInterrupt(GPUInterrupt::VBlank1);

        // Run cheats if any are loaded
        if (cheats.haveCheats()) [[unlikely]] {
            cheats.run();
        }
    } else if (romType != ROMType::None) {
        // If the emulator is not running and a game is loaded, we still want to display the framebuffer otherwise we will get weird
        // double-buffering issues
        gpu.display();
    }
}

removing the if (romType != ROMType::None)


} else {
        // If the emulator is not running and a game is loaded, we still want to display the framebuffer otherwise we will get weird
        // double-buffering issues
        gpu.display();
    }

The artifact fades aways.

wheremyfoodat commented 1 year ago

OK then I am likely forgetting to clear a texture somewhere. I'll check it out. Though thankfully the emu still works itself.