VOGONS


ESFM reverse-engineered

Topic actions

First post, by jwt27

User metadata
Rank Oldbie
Rank
Oldbie

Hi all,

Haven't visited these forums in a while, but I've been working on something
that I know some of you will find interesting.
You've read the title so you know what it is. I figured out the ESFM register
map. As far as I'm aware, this hasn't been done before.

I published everything I discovered in a github repository, here:

https://github.com/jwt27/esfm

There may still be some small details left to find, but what I have so far
should be enough to write a complete driver and editor.

Just wanted to share that. Happy new year everyone!

Reply 3 of 24, by Joseph_Joestar

User metadata
Rank l33t
Rank
l33t
jwt27 wrote on 2023-01-01, 17:19:

I figured out the ESFM register
map. As far as I'm aware, this hasn't been done before.

Thank you very much for documenting this!

BTW, we've been testing some games with native ESFM support in this thread. It can sound really nice when the developers use it properly.

PC#1: Pentium MMX 166 / Soyo SY-5BT / S3 Trio64V+ / Voodoo1 / YMF719 / AWE64 Gold / SC-155
PC#2: AthlonXP 2100+ / ECS K7VTA3 / Voodoo3 / Audigy2 / Vortex2
PC#3: Athlon64 3400+ / Asus K8V-MX / 5900XT / Audigy2
PC#4: i5-3570K / MSI Z77A-G43 / GTX 970 / X-Fi

Reply 4 of 24, by igna78

User metadata
Rank Member
Rank
Member

Truly many compliments and a huge thank you
I am sure that the gift you have given to the whole community will be appreciated by all considering the possibilities it will give 😄

Reply 6 of 24, by jwt27

User metadata
Rank Oldbie
Rank
Oldbie

Thanks everyone, appreciate the compliments. I just found some more registers and will document these shortly.

Joseph_Joestar wrote on 2023-01-01, 19:05:

Thank you very much for documenting this!

BTW, we've been testing some games with native ESFM support in this thread. It can sound really nice when the developers use it properly.

I think all games mentioned there use the same Miles Sound System driver, so they all use the same preset bank. If there are any games that do use a different driver I would be very interested to know.

Reply 8 of 24, by jwt27

User metadata
Rank Oldbie
Rank
Oldbie
the3dfxdude wrote on 2023-01-01, 21:09:

Is there any more reason we know now of why the sound is muffled when using native ESFM? Is this a driver bug?

I assume you mean muffled PCM voices? The FM synth has nothing to do with that. The PCM part of these chips is actually well documented, and they have adjustable filters. My guess is that the Miles driver just sets the cutoff frequency too low. So yes, that would be a driver bug, and it should be possible to patch it.

Reply 9 of 24, by Joseph_Joestar

User metadata
Rank l33t
Rank
l33t
the3dfxdude wrote on 2023-01-01, 21:09:

Is there any more reason we know now of why the sound is muffled when using native ESFM? Is this a driver bug?

If you mean the behavior that Phil demonstrates in this video around the 7:08 mark, that's related to digital audio when the card is working in its proprietary AudioDrive mode. This is different from the native ESFM support which refers to FM synth music.

From my observations, the muffled sound issue only occurs with games which use the HMI Sound System, such as Tomb Raider, Red Alert and Daggerfall. It doesn't happen in games which use the Miles Sound System.

PC#1: Pentium MMX 166 / Soyo SY-5BT / S3 Trio64V+ / Voodoo1 / YMF719 / AWE64 Gold / SC-155
PC#2: AthlonXP 2100+ / ECS K7VTA3 / Voodoo3 / Audigy2 / Vortex2
PC#3: Athlon64 3400+ / Asus K8V-MX / 5900XT / Audigy2
PC#4: i5-3570K / MSI Z77A-G43 / GTX 970 / X-Fi

Reply 10 of 24, by Joseph_Joestar

User metadata
Rank l33t
Rank
l33t
jwt27 wrote on 2023-01-01, 21:00:

I think all games mentioned there use the same Miles Sound System driver, so they all use the same preset bank. If there are any games that do use a different driver I would be very interested to know.

I don't know of any non-Miles DOS games that can use native ESFM.

BTW, if you haven't already seen this, the ESS 1869 datasheet (available on Phil's website) has some info on ESFM, starting from page 41.

PC#1: Pentium MMX 166 / Soyo SY-5BT / S3 Trio64V+ / Voodoo1 / YMF719 / AWE64 Gold / SC-155
PC#2: AthlonXP 2100+ / ECS K7VTA3 / Voodoo3 / Audigy2 / Vortex2
PC#3: Athlon64 3400+ / Asus K8V-MX / 5900XT / Audigy2
PC#4: i5-3570K / MSI Z77A-G43 / GTX 970 / X-Fi

Reply 12 of 24, by the3dfxdude

User metadata
Rank Member
Rank
Member
jwt27 wrote on 2023-01-01, 21:59:
the3dfxdude wrote on 2023-01-01, 21:09:

Is there any more reason we know now of why the sound is muffled when using native ESFM? Is this a driver bug?

I assume you mean muffled PCM voices? The FM synth has nothing to do with that. The PCM part of these chips is actually well documented, and they have adjustable filters. My guess is that the Miles driver just sets the cutoff frequency too low. So yes, that would be a driver bug, and it should be possible to patch it.

Yes. PCM AudioDrive I suppose. But I guess fixing the muffled sound would be for another time for someone who wants to look into the driver.

Reply 14 of 24, by jwt27

User metadata
Rank Oldbie
Rank
Oldbie
Joseph_Joestar wrote on 2023-01-01, 22:38:

BTW, if you haven't already seen this, the ESS 1869 datasheet (available on Phil's website) has some info on ESFM, starting from page 41.

I've seen that. It only mentions that a "native" mode exists - there's no info on how to use it, or even what it's capable of...

Reply 15 of 24, by Joseph_Joestar

User metadata
Rank l33t
Rank
l33t
jwt27 wrote on 2023-01-02, 17:19:

I've seen that. It only mentions that a "native" mode exists - there's no info on how to use it, or even what it's capable of...

My bad, I just noticed that the register descriptions listed there are only applicable for the emulation mode.

PC#1: Pentium MMX 166 / Soyo SY-5BT / S3 Trio64V+ / Voodoo1 / YMF719 / AWE64 Gold / SC-155
PC#2: AthlonXP 2100+ / ECS K7VTA3 / Voodoo3 / Audigy2 / Vortex2
PC#3: Athlon64 3400+ / Asus K8V-MX / 5900XT / Audigy2
PC#4: i5-3570K / MSI Z77A-G43 / GTX 970 / X-Fi

Reply 17 of 24, by leecher

User metadata
Rank Newbie
Rank
Newbie

I reverse engineered the WDM ES1969 driver which uses the ESFM registers (see NATV.CPP), and compiled a 64bit driver from it, in case anyone is interested:
https://github.com/leecher1337/es1969/

Reply 19 of 24, by bakemono

User metadata
Rank Oldbie
Rank
Oldbie

It's fantastic that the info is out now, but I have to say it's also a bit disappointing that the ESFM still doesn't have the ability to reproduce algorithms 2,3,4 from the 4-op Yamaha chips. When I saw the thread title I was thinking an ESFM-enhanced VGM player might be in the cards, but it looks like there is still no way to feed two modulators into a single carrier. Detune is missing, which would limit accuracy as well.

again another retro game on itch: https://90soft90.itch.io/shmup-salad