SourMesen / Mesen

Mesen is a cross-platform (Windows & Linux) NES/Famicom emulator built in C++ and C#
https://www.mesen.ca
GNU General Public License v3.0
1.25k stars 317 forks source link

Problems with Super Mario Bros. / Duck Hunt / World Class Track Meet 3-in-1 #822

Closed lordlouckster closed 4 years ago

lordlouckster commented 4 years ago

When I play Super Mario Bros. / Duck Hunt / World Class Track Meet 3-in-1, the game select transitions are glitchy, game select menu text is flashing, and resetting the game sometimes crashes Mesen 0.9.9. Mesen 0.9.8, FCEUX and puNES work fine.

lordlouckster commented 4 years ago

Also in Super Mario Bros. / Duck Hunt menu, the Super Mario Bros. textures are messed up in Mesen 0.9.9. 0.9.8 works fine once again.

SourMesen commented 4 years ago

I can't reproduce either of these. I have a feeling the problem might be the roms themselves? This one works fine on my end (3 in 1):

PRG+CHR CRC32: 0x60E63537
[iNes] Mapper: 1 Sub:0
[iNes] PRG ROM: 128 KB
[iNes] CHR ROM: 64 KB
[iNes] Mirroring: Horizontal
[iNes] Battery: No

Are you using the No-Intro set that claims to have "NES 2.0 headers"? If so, that is the most likely cause - the rom headers it contains are full of mistakes, which cause emulation bugs. If that's the case, the problem should go away with the latest appveyor dev build - I've made it so the game database overrides NES 2.0 headers, specifically because this bad romset exists.

ghost commented 4 years ago

I can't reproduce either of these. I have a feeling the problem might be the roms themselves? This one works fine on my end (3 in 1):

PRG+CHR CRC32: 0x60E63537
[iNes] Mapper: 1 Sub:0
[iNes] PRG ROM: 128 KB
[iNes] CHR ROM: 64 KB
[iNes] Mirroring: Horizontal
[iNes] Battery: No

Are you using the No-Intro set that claims to have "NES 2.0 headers"? If so, that is the most likely cause - the rom headers it contains are full of mistakes, which cause emulation bugs. If that's the case, the problem should go away with the latest appveyor dev build - I've made it so the game database overrides NES 2.0 headers, specifically because this bad romset exists.

I really wish i knew a way to make sure i had good headers on my no intro set. Ive now dropped back to my goodnes set, at least with that set i was able to use goodnes tool to batch fix headers

ghost commented 4 years ago

hmmm all my versions dont do this either. from goodset with goodset header, un header and no intro obtained archive iamdadewd header

SourMesen commented 4 years ago

The latest dev builds as of a few days ago always prioritize the internal game database over NES 2.0 headers, to avoid issues with bad NES 2.0 headers.

Kitrinx has written a python script for the sake of fixing headers using the new nes 2.0 DB: https://github.com/Kitrinx/NES_Header_Repair

ghost commented 4 years ago

The latest dev builds as of a few days ago always prioritize the internal game database over NES 2.0 headers, to avoid issues with bad NES 2.0 headers.

Kitrinx has written a python script for the sake of fixing headers using the new nes 2.0 DB: https://github.com/Kitrinx/NES_Header_Repair

I was testing on .99 not dev but good to know thanks

ghost commented 4 years ago

The latest dev builds as of a few days ago always prioritize the internal game database over NES 2.0 headers, to avoid issues with bad NES 2.0 headers. Kitrinx has written a python script for the sake of fixing headers using the new nes 2.0 DB: https://github.com/Kitrinx/NES_Header_Repair

I was testing on .99 not dev but good to know thanks

The latest dev builds as of a few days ago always prioritize the internal game database over NES 2.0 headers, to avoid issues with bad NES 2.0 headers.

Kitrinx has written a python script for the sake of fixing headers using the new nes 2.0 DB: https://github.com/Kitrinx/NES_Header_Repair

Ill try the tool as well awesome thank you!!

ghost commented 4 years ago

The latest dev builds as of a few days ago always prioritize the internal game database over NES 2.0 headers, to avoid issues with bad NES 2.0 headers.

Kitrinx has written a python script for the sake of fixing headers using the new nes 2.0 DB: https://github.com/Kitrinx/NES_Header_Repair

Thank you for showing me this. I cleaned my collection using that tool and the latest db on nesdev. Have a few good roms i believe not Yet in the db but it got almost everything. Will post results in nesdev later after a closer look, you have given me my favorite emu and advice that helped me alot thanks so much! You have no clue how happy you have made me and my siblings.

ghost commented 4 years ago

I can't reproduce either of these. I have a feeling the problem might be the roms themselves? This one works fine on my end (3 in 1):

PRG+CHR CRC32: 0x60E63537
[iNes] Mapper: 1 Sub:0
[iNes] PRG ROM: 128 KB
[iNes] CHR ROM: 64 KB
[iNes] Mirroring: Horizontal
[iNes] Battery: No

Are you using the No-Intro set that claims to have "NES 2.0 headers"? If so, that is the most likely cause - the rom headers it contains are full of mistakes, which cause emulation bugs. If that's the case, the problem should go away with the latest appveyor dev build - I've made it so the game database overrides NES 2.0 headers, specifically because this bad romset exists.

The xml database is missing the following roms, Dont know if this is useful to you.

https://forums.nesdev.com/viewtopic.php?f=3&t=19940&p=249563#p249563

SourMesen commented 4 years ago

I would need the contents of the log window after loading the rom to know whether or not this is due to a bad rom. Closing this for now as I have not been able to find any way to reproduce this.

ghost commented 4 years ago

Couldn’t reproduce either with several version of the rom