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.27k stars 320 forks source link

Does MESEN support FDS DISK2? #537

Open dolbiia opened 5 years ago

dolbiia commented 5 years ago

Hi. I am using MESEN well. But there seems to be one problem. Some games of FDS (Family Computer Disk System) are divided into first part and latter part. In other words, DISK1(Zenpen/first part) and DISK2(Kouhen/latter part). This is also a different concept from side 1 and side 2. These games are also licensed games. (It was released from Nintendo,Tose)

I had a game of one of them. The title is "Famicom Tantei Club Part II - Ushiro ni Tatsu Shoujo". The first part of the game was released on May 23, 1989, and the latter part was released on June 30, 1989.

You can refer to the Wikipedia link below. (Japanese, English, French Wikipedia)

https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%83%9F%E3%82%B3%E3%83%B3%E6%8E%A2%E5%81%B5%E5%80%B6%E6%A5%BD%E9%83%A8PartII_%E3%81%86%E3%81%97%E3%82%8D%E3%81%AB%E7%AB%8B%E3%81%A4%E5%B0%91%E5%A5%B3

https://en.wikipedia.org/wiki/Famicom_Tantei_Club_Part_II:_Ushiro_ni_Tatsu_Sh%C5%8Djo

https://fr.wikipedia.org/wiki/Famicom_Tantei_Club_Part_II:_Ushiro_ni_Tatsu_Sh%C5%8Djo

I played all the contents of the zenpen/first part (disk1). And I opened the side of disk1 side A (zenpen/first part) and chose the "こうへんのはじめから" in the game. The previous story of the first part was introduced, and then I got a message that "こうへんのAめんを せっとしてください" The meaning of this message is to insert DISK2 How do I insert kouhen/latter part(disk2) to proceed with the latter part story?

Explanation of Japanese words , Explication de mots japonais: ぜんぺん(前編)zenpen - first part - première partie こうへん(後編) kouhen - latter part - dernière partie こうへんのはじめから - From the beginning of the latter part , Depuis le début de la dernière partie こうへんのAめんを せっとしてください - Please set the A side of the latter part , S'il vous plaît définir le côté A de la dernière partie

When I open the kouhen(latter part) rom file in the file-open window, disk problem error 20 occurs. There is only disk1 in the disk selection menu. and There is no menu to select disk2. Using the automatic switch function causes error 50. This is a replacement between Side A and Side B, not actually replacing Disk 2.

My ROM files were obtained from No-intro. There was no [b] phrase that meant a bad rom file. Not only this game, other games have the same problem. I have only tested one of them.

thank you, merci

SourMesen commented 5 years ago

Are the FDS roms split into multiple files? If so, this is not supported by Mesen (and I don't think it's supported by most other NES emulators either)

If it's a single file, it should be roughly 128kb in size (assuming both disks were single sided).

dolbiia commented 5 years ago

Thank you for answer. Yes, FDS roms are split into multiple files. In fact, not only this game, but also other games other with DISK2 are the same.

For this game: Famicom Tantei Club Part II - Ushiro ni Tatsu Shoujo - Zenpen (Japan).fds 128kb Famicom Tantei Club Part II - Ushiro ni Tatsu Shoujo - Kouhen (Japan).fds 128kb

Other game (example): Tantei Jinguuji Saburou - Kiken na Futari - Zenpen (Japan).fds 128kb Tantei Jinguuji Saburou - Kiken na Futari - Kouhen (Japan).fds 128kb

Can you technically support multiple rom files in emulator? There is a ROM file which artificially merged two files, but it can not guarantee accuracy. It can also cause strange bugs in the middle of the game. Many FDS games in the form of multi-ROM files have bad file status. I hope to be able to support multiple ROM files in the future.

SourMesen commented 5 years ago

Supporting split roms for FDS is something I would rather avoid - they are less user friendly to use (either requiring naming conventions or manually selecting the files, which would be problematic for libretro). Supporting them would encourage people to distribute them in this format, which is not helpful.

In this case, I would suggest you manually merge the roms by appending the contents of the second file to the first and using that instead.

dolbiia commented 5 years ago

OK, If so, there is one more question. If you are designing to automatically switch from Disk 1 to Disk 2 using the automatic switch function of the FDS, can still encounter the problems you mentioned?

and I checked the No-intro full rom set. There are fewer games in the form of multi-rom files than I thought. Approximately 6 games so far I was mistaken because there were several good rom files and bad rom files even though it was the same one game.

difficulty now is that I do not know how to merge the two FDS files, and I actually played the merged ROM file (It is a file I got elsewhere), but some graphics are broken. Perhaps this file seems to merged bad rom files that were circulating a long time ago. The merged ROM files distributed on the Internet are in a bad dump state, making it difficult to play games. Those without programming knowledge are likely to find it difficult to play multiple rom games. tfds

multiple rom games list (6 games) - All are licensed games. Famicom Tantei Club Part II - Ushiro ni Tatsu Shoujo Time Twist - Rekishi no Katasumi de... Tantei Jinguuji Saburou - Kiken na Futari Famicom Tantei Club - Kieta Koukeisha Famicom Mukashibanashi - Yuuyuuki Famicom Mukashibanashi - Shin Onigashima

dolbiia1 commented 5 years ago

I have found a way to solve this problem. But it's not the ultimate way, it's temporary. It is a method to solve by merging two fds files. See the link below.

How to merge multiple rom files http://forums.no-intro.org/viewtopic.php?f=2&t=3360

SourMesen commented 5 years ago

To be honest, I think merging them is the way to go (it's the only way any of the existing NES emulators will support loading them).

Anything else would require a fair bit of changes for just a handful of games, and in the end, it wouldn't be any easier for the end user. You would either have to rename the files to follow a specific naming convention, or manually select the next .fds file in the middle of gameplay, neither of which is better than creating a single file and using that as you would every other FDS game.

rzumer commented 5 years ago

Supporting split roms for FDS is something I would rather avoid - they are less user friendly to use (either requiring naming conventions or manually selecting the files, which would be problematic for libretro). Supporting them would encourage people to distribute them in this format, which is not helpful.

You should not think of these two titles as being a "split ROM". They are individual disks that were sold separately. It is standard to distribute and use two different disk images as two different files, and (outside of other FDS emulators perhaps) it is non-standard to merge files due to lack of emulator support for disk swapping. I think that requiring users to merge different disk images into a single file manually is generally considered poor practice.

From a user-friendliness perspective, as someone familiar with disk-based PC systems, I find it more straightforward to be able to open a menu and change the loaded disk than to concatenate two disks into one file. I don't think that interrupting gameplay to change the disk is an issue, because the operation is the same on a real system. I'm sure that others have their own preferences, but one does not exclude the other.

Though I understand that supporting disk swapping has a cost, and your concerns are valid, it is very common on disk-based systems to require swapping between multiple disks, and every emulator that I know of for such systems supports live disk image swapping for that reason. Coming from other platforms, it definitely seems unusual to have to merge multiple disks into one file. It is possible that most people involved in NES/console emulation, especially non-Japanese who are not very familiar with FDS and disk-based systems, are not used to thinking of disk management, because the large majority of FDS titles are stored on a single disk, and disk swapping is not a "feature" of cartridges. However, merging multiple logical images into a single file is a "hack" that has been largely renounced in emulators for disk-based systems, and it is desirable for an emulator to support the standard format of a single file per disk.

Regarding naming convention vs. file selection, the latter is standard, and I think it is simpler. It seems to me that all that is needed for FDS is to allow changing the loaded file without resetting the emulator, so without delving into the system and emulator source code it doesn't strike me as a problem that is difficult to solve, but if there are system-specific technical difficulties around that, I am not aware of them.

As for libretro, it should be up to them to support disk swapping in a simple and standard way, as it is an important function for many other platforms (think PCs, many of which do not have supported libretro cores, which is likely partly due to poor API support on their part). In my opinion, the best solution would be to implement disk swapping in the standalone version, and let libretro settle things on their side before supporting it in the core.

I definitely have a strong preference for emulators supporting the standard format, and not the other way around. If you are open to it but prefer focusing on other things, maybe I can look into it some time in the future and submit a PR.

ghost commented 5 years ago

every fds emulator runs with merge disks.. whats wrong with that? its also not very hard to merge the disk than to create an unnecessary function just for nostalgia's sake. how many official released games are 2 disk or more anyways.

rzumer commented 5 years ago

If this wasn't clear enough in my previous comment, I don't think that "other [FDS] emulators do it that way" is a good reason to follow, because virtually every other emulator that handles disk (or tape) images supports multi-image swapping properly.