I wanted to let everyone know about an upcoming NES emulator I'm programming and also ask for some help. The emulator is called NESFaCE and its website is http://code.google.com/p/nesface/. You can get in touch with me either here or there. There is no code uploaded at that site yet, but for what I need help with, you can refer to the code for one of the emulators NESFaCE is based on: NEStreme (http://www.cecs.csulb.edu/~hill/cecs497/nestreme/howto.html). I'm having problems with that site right now, so just Google NEStreme to find the source elsewhere if that site doesn't work.
My question is about how to program some of the mappers. I understand (pretty much) how mappers work on the NES, but I'm not completely sure how they are implemented in NEStreme. In particular, I'm having trouble figuring out how to use different combinations of swappable prg and chr rom bank numbers and sizes. It seems that the author of NEStreme had this problem, too. For example, playing any game that uses mapper 3 gives messed up graphics. It looks to me like this is because swapping is only done on the first half of mapper 3's swappable chr rom bank in the code for the mapper 3 dll. There is an analogous problem with prg rom; I wrote a dll for mapper 7 that can play some sound on Wizards & Warriors but no graphics. So, to summarize, I know what the problem is but not how to fix it. Do I just make a small change in the mapper dll (like doing some arithmetic to make things happen in the right address range) or do I need to change the hierarchy of setting up the banks in Io.cpp, or maybe something else?
Please let me know if you can help with this or if you want to help code the emulator in general; it's a more significant project than some other NES emulators because of its goals. Mainly, I'm aiming for 100% compatibility and code that's as simple as possible, but I've also got some features in mind that will really make NESFaCE stand out not only among NES emulators but among all emulators. Thanks in advance for your help.
My question is about how to program some of the mappers. I understand (pretty much) how mappers work on the NES, but I'm not completely sure how they are implemented in NEStreme. In particular, I'm having trouble figuring out how to use different combinations of swappable prg and chr rom bank numbers and sizes. It seems that the author of NEStreme had this problem, too. For example, playing any game that uses mapper 3 gives messed up graphics. It looks to me like this is because swapping is only done on the first half of mapper 3's swappable chr rom bank in the code for the mapper 3 dll. There is an analogous problem with prg rom; I wrote a dll for mapper 7 that can play some sound on Wizards & Warriors but no graphics. So, to summarize, I know what the problem is but not how to fix it. Do I just make a small change in the mapper dll (like doing some arithmetic to make things happen in the right address range) or do I need to change the hierarchy of setting up the banks in Io.cpp, or maybe something else?
Please let me know if you can help with this or if you want to help code the emulator in general; it's a more significant project than some other NES emulators because of its goals. Mainly, I'm aiming for 100% compatibility and code that's as simple as possible, but I've also got some features in mind that will really make NESFaCE stand out not only among NES emulators but among all emulators. Thanks in advance for your help.