In this photo, it looks like a wire is connected to pin 2 of the RA1.
RA1-2_2.jpg
I'm assuming that pin pin 2 of the RA1 is connected to pin 13 U5. This doesn't make sense, however I can't explain the wire I've marked red in the picture above.
Can anyone check if this is true?
Hi sgc! How's it going with this board? Did you manage to resolve this last issue?
Hi sgc! How's it going with this board? Did you manage to resolve this last issue?
Recently a video was released on the LGR Youtube channel about the IMFC: https://youtu.be/lyIBfjsTZcQ. The screenshot from this video clearly shows that the RA1.2 pin is used.
According to my layout, the only place the wire from this pin can go is the ISA AEN line. No matter how hard I tried, I could not get another option. Therefore, I decided to stop at this option and ordered a test board from the factory. As soon as the board comes, I'll try to build that.
Is there some github or something of this project? I would like to try to assemble one myself, even if there are some flaws in this version 😀
You can find the KiCad project here: http://svn.stdio.ru/svn/trunk/imfc_clone/hardware/
I have already assembled the board completely. Once the card even played in games Space Quest 3 and Silpheed.
However, as soon as I wanted to capture it on video, device stopped working. Now I understand the issue with the help of a logic analyzer. It looks like software bugs and the drivers don't want to run on relatively fast machines.
a) How on earth did you figure out the layout of the top sub layer (In1.Cu)? The grounding seems wild to me! Are you sure about this?
No, not sure. Of course, I couldn't see the inner layers in the photos. The result of my work is a reconstruction based on speculation.
Key Ideas:
- The board has four grounds: Digital, Analogue, DAC and Chassis
- The corresponding circuit is connected only to its ground
- The grounds are connected to each other only through one point
Based on the available photos and these rules, I tried to layout the ground. Perhaps a little wrong. I also found one mistake in element ZD1.
b) It seems that while your card closely resembles the revision C of the IMFC, the fix in the layout around C26 is from the rev D. Did you find other differences between the two revs (besides the switch to a mask rom)?
This project is not a copy of a specific revision of the board, but an attempt to reconstruct the device itself.
The good quality photographs available were barely enough to reconstruct the circuit. The connection of a large part of the wires had to be thought out based on the programming documentation. Therefore, it turned out to be impossible to copy the board 100%. Especially to compare revisions.
c) You wrote that the card doesen't work as intended but you think that it is dependent on the speed of the PC. How do you know?
I recorded the exchange protocol of the card with the software using a logic analyzer, and did not find any problems with the card. But in the driver disassembler from Sierra, I found a delay function based on empty loops:
1; --------------- S U B R O U T I N E --------------------------------------- 2 org 08a2h 3sub_8A2 proc near 4 push di 5 xor di, di 6loc_8A5: 7 inc di 8 cmp di, 0FFFFh 9 jb short loc_8A5 10 pop di 11 retn 12sub_8A2 endp
d) Do you have a bill of materials of this? Some things (the inductors, the weird through-hole-resistor-like-looking-capacitors, the strange quarz X2 ...) are really hard to find/identify...
Thanks for the reply!
Did you already correct the error on ZD1 in your schematic/board? What was the error?
Interesting find with the delay loop. So they already knew this problem.
Where did you find the 11.8MHz crystal? They seem impossible to find ...
Oh, and where is this 3 pin filter capacitor needed that you linked in the previous post?
Interesting find with the delay loop. So they already knew this problem.
Unfortunately, the problem remains. The fix helped only when starting the game under Windows. Under DOS, games still freeze. I will investigate further. I'll try to connect the logic analyzer directly to the ISA bus.
At the moment, the music card is still in the process of debugging.
It turned out that the device was in conflict with the Sound Blaster! The Blaster does not use all address lines for decoding, so it began to occupy the bus along with the IMFC, and prevented it from working. There were no software problems with the drivers, it turns out.
It's alive! https://youtu.be/Qtrv1dVRlp8?si=iWqK-Klu9iQlyCnD
It turned out that the device was in conflict with the Sound Blaster! The Blaster does not use all address lines for decoding, so it began to occupy the bus along with the IMFC, and prevented it from working. There were no software problems with the drivers, it turns out.
It's alive! https://youtu.be/Qtrv1dVRlp8?si=iWqK-Klu9iQlyCnD
Ah yea, I had the exact same issue when I had both a GameBlaster clone and an IMFC in the same machine!
Anyway, great work, it seems it runs the software just fine now!
Too bad there was never an AIL driver for this card, I really like the OPP sound chip. The only thing that sucks about this card design is that the Yamaha 2164 registers aren’t exposed directly on the ISA BUS so everything has through MIDI
I am the second lucky owner of the board from scg, thanks to him for the work done on creating a replica.
I assembled my board from the parts I have available, so it does not look very similar to the Yamaha original 😀
However, it works great just like scg's board.
Too bad there was never an AIL driver for this card
Yes, but the situation can be improved. For example, using a modified version of SoftMPU for IMFC. As a rule, any games that use AIL work with the SoftMPU, even those that use the protected mode of the processor and the DOS 4GW extender. For example Warcraft 2, Heroes 2. And I even tried to experiment a little with it. The main problem is to create a conversion table from the General Midi instruments to the IMFC instruments available in the ROM banks, someething like this:
1struct GM_to_mfc_t 2{ 3 int bank; 4 int instr; 5}; 6 7struct GM_to_mfc_t GM_to_mfc[128] = { 8// Piano 9{4, 1}, //1. Acoustic Grand Piano -> 4/1:Uprt Piano 10{4, 2}, //2. Bright Acoustic Piano -> 4/2:SoftPiano 11{4, 12}, //3. Electric Grand Piano -> 4/12:El Grand 2 12{4, 13}, //4. Honky-tonk Piano -> 4/13:Honkey 1 13{4, 21}, //5. Electric Piano 1 -> 4/21:ElecPiano1 14{4, 22}, //6. Electric Piano 2 -> 4/22:ElecPiano2 15{3, 26}, //7. Harpsichord -> 3/26:Harpsichrd 16{3, 25}, //8. Clavi -> 3/25:Clavichord 17// Chromatic Percussion 18{4, 47}, //9. Celesta -> 4/47:Celeste 19{3, 20}, //10. Glockenspiel -> 3/20:Glockenspl 20{6, 33}, //11. Music Box -> 6/33:Xylophone2 (?)
I created this table very approximately, focusing on the text matches of the names of the instruments, sometimes a little by ear, and sometimes using random 😀
Another table is needed for the 10 (or 9 from zero) General Midi drum channel. I also sketched it partly by ear, partly from random.
So, this is result: https://www.youtube.com/watch?v=0F6IBEr9z0Y (Sorry for quality)
Yes, I certainly hear that the music is very strange, and I think this is due to hastily and not neatly compiled conversion tables. Perhaps if you make a more accurate comparison of instruments, focusing on the MT-32, and not on General MIDI, then the music will sound better.
If suddenly someone is interested, then I posted the source codes of the experimental version of SoftMPU as well as the DOSMID player here: https://github.com/Tronix286/IMFC
Tronixwrote on 2023-08-19, 19:14:I am the second lucky owner of the board from scg, thanks to him for the work done on creating a replica.
I assembled my board […] Show full quote
I am the second lucky owner of the board from scg, thanks to him for the work done on creating a replica.
I assembled my board from the parts I have available, so it does not look very similar to the Yamaha original 😀
However, it works great just like scg's board.
P1140149.jpg
P1140151.jpg
P1140152.jpg
Nice!
Tronixwrote on 2023-08-19, 19:14:Yes, but the situation can be improved. For example, using a modified version of SoftMPU for IMFC. As a rule, any games that use […] Show full quote
Yes, but the situation can be improved. For example, using a modified version of SoftMPU for IMFC. As a rule, any games that use AIL work with the SoftMPU, even those that use the protected mode of the processor and the DOS 4GW extender. For example Warcraft 2, Heroes 2. And I even tried to experiment a little with it. The main problem is to create a conversion table from the General Midi instruments to the IMFC instruments available in the ROM banks, someething like this:
1struct GM_to_mfc_t 2{ 3 int bank; 4 int instr; 5}; 6 7struct GM_to_mfc_t GM_to_mfc[128] = { 8// Piano 9{4, 1}, //1. Acoustic Grand Piano -> 4/1:Uprt Piano 10{4, 2}, //2. Bright Acoustic Piano -> 4/2:SoftPiano 11{4, 12}, //3. Electric Grand Piano -> 4/12:El Grand 2 12{4, 13}, //4. Honky-tonk Piano -> 4/13:Honkey 1 13{4, 21}, //5. Electric Piano 1 -> 4/21:ElecPiano1 14{4, 22}, //6. Electric Piano 2 -> 4/22:ElecPiano2 15{3, 26}, //7. Harpsichord -> 3/26:Harpsichrd 16{3, 25}, //8. Clavi -> 3/25:Clavichord 17// Chromatic Percussion 18{4, 47}, //9. Celesta -> 4/47:Celeste 19{3, 20}, //10. Glockenspiel -> 3/20:Glockenspl 20{6, 33}, //11. Music Box -> 6/33:Xylophone2 (?)
I created this table very approximately, focusing on the text matches of the names of the instruments, sometimes a little by ear, and sometimes using random 😀
Another table is needed for the 10 (or 9 from zero) General Midi drum channel. I also sketched it partly by ear, partly from random.
So, this is result: https://www.youtube.com/watch?v=0F6IBEr9z0Y (Sorry for quality)
Yes, I certainly hear that the music is very strange, and I think this is due to hastily and not neatly compiled conversion tables. Perhaps if you make a more accurate comparison of instruments, focusing on the MT-32, and not on General MIDI, then the music will sound better.
If suddenly someone is interested, then I posted the source codes of the experimental version of SoftMPU as well as the DOSMID player here: https://github.com/Tronix286/IMFC
If there are no failures in a week, then it will be possible to say that it works. 😀
In addition, Tronix has a second assembled copy of the board, and it has been in working order for a long time.
It remains only to check the external MIDI port. Unfortunately, I don't have any MIDI devices, so I'll have to use a simple loopback test.
I'll deal with this soon.
I tested the midi port - it works.
I posted the archive with the KiСAD project and the archive with the scheme and gerbers in the first post of the thread.
Thanks to everyone who helped me.