Munt Reloaded - Development

Developer's Forum for discussion of bugs, code, and other developmental aspects of the Munt Project.

Re: Munt Reloaded - Development

Postby BrillieMan » 2018-9-28 @ 14:00

While the Sample ROM and Control ROM may be easy enough to dump, dumping the cards is going to be a tad more challenging.


I have dumped some of these pcm-cards I have to see if I could make some with my own samples, to play on my Roland U-220. I'm still looking at how Roland compresses the samples. That's how I stumbled on this thread. Because I hope that the algorithm Roland used to compress samples for the MT-32 would be the same as for the D-110, and maybe also the U-110/U-220. They are all from the same time period. And as the MT-32 is very close to the D-110, the CM-32P is hopefully very close to the U-110.

If I can help in any way, please let me know. I am more than willing to share my info and data.
You do not have the required permissions to view the files attached to this post.
BrillieMan
Newbie
 
Posts: 3
Joined: 2018-9-28 @ 13:21

Re: Munt Reloaded - Development

Postby HunterZ » 2018-9-28 @ 16:16

Nice! You should consider putting the dumps on the Internet Archive so they can be preserved.
User avatar
HunterZ
l33t++
 
Posts: 6075
Joined: 2003-1-31 @ 19:04
Location: Seattle

Re: Munt Reloaded - Development

Postby sergm » 2018-9-29 @ 08:29

BrillieMan wrote:I'm still looking at how Roland compresses the samples. That's how I stumbled on this thread. Because I hope that the algorithm Roland used to compress samples for the MT-32 would be the same as for the D-110, and maybe also the U-110/U-220. They are all from the same time period. And as the MT-32 is very close to the D-110, the CM-32P is hopefully very close to the U-110.


At this point, we haven't dealt with CM-32P samples, so there isn't much I can help you with. The sample format may or may not be identical to the one used in MT-32, but I can describe it briefly in a hope that it may give you a clue.

Actually, in MT-32 the PCM samples are not compressed but converted sample-wise. Each 16-bit value stored is the "signed" base 2 logarithm of the linear sample with additional bit shuffling. The "signed" here means that the sign of the original sample is stored intact, and the logarithm is taken from the absolute value, obviously. The exact decoding algorithm can be seen in methods Synth::loadPCMROM() and LA32FloatWaveGenerator::getPCMSample().

I hope that helps :)
sergm
Oldbie
 
Posts: 739
Joined: 2011-2-23 @ 16:37

Re: Munt Reloaded - Development

Postby BrillieMan » 2018-9-29 @ 12:56

Thank you! That will help loads!

I was looking at the "bit shuffling" part:
Code: Select all
int order[16] = {0, 9, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 8};


And I was wondering: where this order information came from? Or what technique was used to see what bits are shuffled?
I am looking at the MT-32 Service manual and can't see any mismatching datalines. (at the moment)
Is the shuffling done inside the LA32?


@HunterZ, I am willing to share the data ("with people who have the cards themselves"), not that I don't want to share... But I don't want to get Roland on my ass for ©op¥right inƒring€m€nt.
BrillieMan
Newbie
 
Posts: 3
Joined: 2018-9-28 @ 13:21

Re: Munt Reloaded - Development

Postby sergm » 2018-9-29 @ 18:49

BrillieMan wrote:And I was wondering: where this order information came from? Or what technique was used to see what bits are shuffled?
I am looking at the MT-32 Service manual and can't see any mismatching datalines. (at the moment)
Is the shuffling done inside the LA32?


Sorry, this is not my part in the project :)
Anyway, I'm still able to give a hint. Similar issue I faced with the reverb chip too; the RAM address lines are bit-shuffled as well. Nevertheless, the reverb RAM is scanned with a certain period, and the addresses accessed in the consecutive cycles must increment or decrement by unity, so it was easy to deduce how the bits are actually shuffled.

When dealing with PCM samples, I assume the same technique may be applied. When choosing a sample with slow attack, the logarithmic values will behave similarly, so we don't expect jumps but slow amplitude increase. Also, since we had (yeah, it's now in the past :( ) an opportunity to take digital captures directly at the DAC input, we simply compared bitwise the capture with the output from our model, so it is quite accurate now. Indeed, digital captures can help a lot in emulation of any such hardware :)
sergm
Oldbie
 
Posts: 739
Joined: 2011-2-23 @ 16:37

Re: Munt Reloaded - Development

Postby BrillieMan » 2018-10-05 @ 19:17

Thanks again! A bit busy so excuse for the late reply, but I'll be measuring tracing circuit boards and logic probing... And when/if I find something useful I'll keep you all posted. Have a nice weekend.
BrillieMan
Newbie
 
Posts: 3
Joined: 2018-9-28 @ 13:21

Re: Munt Reloaded - Development

Postby Lord Nightmare » 2018-10-08 @ 02:32

HunterZ wrote:Nice! You should consider putting the dumps on the Internet Archive so they can be preserved.

I'd love to see these sample roms as well, if possible.
EDIT: Ok, I get it, no asking for roms on this forum.

LN
Last edited by Lord Nightmare on 2018-10-08 @ 15:16, edited 1 time in total.
"When life gives you zombies... *CHA-CHIK* ...you make zombie-ade!"
Lord Nightmare
Newbie
 
Posts: 32
Joined: 2003-9-19 @ 04:11
Location: PA, USA

Re: Munt Reloaded - Development

Postby Lord Nightmare » 2018-10-08 @ 03:39

balrog wrote:If anyone wants to see a decap image, here you go:

https://dl.dropbox.com/s/ellocl0ig0dfc9 ... 3.jpg?dl=1

This is not perfect, but I was able to image it well enough to extract the ROM tables. These are nearly identical to the Yamaha OPL2/3 tables from https://docs.google.com/document/pub?id ... n1rIm42nwo .

They can be generated with the following equations:


the table that has a very visible curve:
f(x) = x == 0 ? 8191 : -1024*log(sin((x+0.5)*pi/1024))/log(2)

The other table has two tables within it:
g(x) = (1-2^(-(x+1)/512))*8192-1
g_delta(n) = 15-(g[n]-g[n-1])


The equations above are not bit-accurate to the decapped sine, exp and exp delta tables. Here's a program which bit-accurately reproduces the 3 tables, and even creates two ascii-art images which 1:1 match the rom arrays on the LA32 die:
https://www.dropbox.com/s/myv5258rgsw61 ... gen.c?dl=0

LN
"When life gives you zombies... *CHA-CHIK* ...you make zombie-ade!"
Lord Nightmare
Newbie
 
Posts: 32
Joined: 2003-9-19 @ 04:11
Location: PA, USA

Re: Munt Reloaded - Development

Postby Dominus » 2018-10-08 @ 13:23

Please be nice to each other. And while many would like the Roms, Vogons is not the right place for it.
User avatar
Dominus
DOSBox Moderator
 
Posts: 7644
Joined: 2002-10-03 @ 09:54
Location: Ludwigsburg

Re: Munt Reloaded - Development

Postby Mok » 2018-10-14 @ 13:58

HunterZ wrote:
SLON wrote:What I have long wanted to ask... Will there ever be support of CM-64?

The only difference between CM-64 and CM-32L is that the CM-64 also includes CM-32P functionality, which is not used by any games as far as I know.

While I have seen plenty of bad MT-32 drivers that send random junk on channels 10-15, what about early Sierra SCI0 games? These definitely send a lot of data on channels 10-15. Is it really random stuff and they disable CM-32P functionality? I have never used CM-64 so cannot check anything myself.
User avatar
Mok
Newbie
 
Posts: 69
Joined: 2003-1-11 @ 11:59

Re: Munt Reloaded - Development

Postby NewRisingSun » 2018-10-15 @ 05:36

Of course it's not random. It's data for the AdLib and PC speaker. Instead of filtering it out, MT-32 sends it to the MIDI device and uses a System Exclusive Message to have it not played back.
NewRisingSun
Oldbie
 
Posts: 798
Joined: 2005-9-02 @ 02:26

Re: Munt Reloaded - Development

Postby Mok » 2018-10-15 @ 07:26

NewRisingSun wrote:Of course it's not random. It's data for the AdLib and PC speaker. Instead of filtering it out, MT-32 sends it to the MIDI device and uses a System Exclusive Message to have it not played back.

That's what I call '"random" :) So they disable it, ok. I have never bothered to take a look at the init code in there, thanks for the info.
User avatar
Mok
Newbie
 
Posts: 69
Joined: 2003-1-11 @ 11:59

Previous

Return to MT-32 Development

Who is online

Users browsing this forum: No registered users and 1 guest