How to send my own text to MT-32

Topic actions

  • This topic is locked. You cannot reply or edit posts.

First post, by =zum=

User metadata
Rank Newbie

Hello, i've been interested by mt-32 possibility to display personalized text on LCD, so my first thought was to edit the .syx with notepad, but then, on my mt-32, appeared "exc. buffer overflow".

I've tried everything, even edit the sysex code by itself with midi-ox

For example:

F0 40 10 16 12 20 00 00 2A 20 53 50 41 43 45 20
51 55 45 53 54 20 49 49 49 20 2A 20 13 F7

Stands for " Space Quest 3 "

Now, for example the value 45 is "e" (i don't remember what really is), i change it to whatever, 43, that is supposed to be "c", any combinations i try, ends with the annoying "exc. buffer overflow", is there someway to display personalized text to mt-32 without failing?

And if i can't, you can explain me why?


Reply 1 of 6, by Dominus

User metadata
Rank DOSBox Moderator
DOSBox Moderator

you could look at the Exult sourccode at http://exult.sf.net, when mt32 is enabled Exult displays its own text in the display.

Windows 3.1x guide for DOSBox
60 seconds guide to DOSBox
DOSBox SVN snapshot for macOS (10.4-11.x ppc/intel 32/64bit) notarized for gatekeeper

Reply 2 of 6, by =zum=

User metadata
Rank Newbie

Sorry, but i haven't found anything that can be sending text to module! I checked every file with notepad but nothing! Also, i'm not very familiar of programming (let's say it, i'm not familiar at ALL).

So, if i can use other ways...

P.s. Also i would like to say that isn't an exc. buffer overflow error!
But instead a "Exc checksum error" !!!!!!

Reply 3 of 6, by Lennart

User metadata
Rank Newbie

I've been trying to get my own messages displayed on the screen as well and I managed to do it. The Checksum error that you get is quite normal: the checksum is in fact a byte which is calculated by calculating the sum of previous bytes of the message. If you edit the message that will be displayed on the screen, the checksum should be changed as well. If the MT-32 detects a checksum that just isn't what it is should be (i.e. the sum of the bytes doesn't match the specified Checksum-byte), it assumes that the transfer has failed and displays that error. So in order to display your own messages you need to be able to calculate that checksum.

A message for the MT-32 LCD-screen consists of the following parts:
F0 (start of sysex-message)
41 (Roland manufacturer ID)
10 (device ID)
16 (model ID)
12 (command ID)
20 (20 00 00 indicates that you want to display something on the MT-32 screen)
Then there are 20 bytes in total that make up the 20 characters that get displayed on the LCD-screen. Each byte is in hex, so you must know what the HEX-code is of every character. Just Google for "ASCII-HEX converter" and you should find some sites, where you just input regular text and get the hex-codes back.
Then comes the checksum message, which is the sum of 20 00 00 and the bytes from your text message. I personally don't know how to manually calculate it, but just Google for "Roland checksum program" and you should be able to find something. Type 20 00 00 + the bytes from the text into a program and let it calculate the checksum for you.
F7 (end of sysex-message)

I hope I've been of any help and I wish you
F0 41 10 16 12 20 00 00 20 20 20 20 20 47 6F 6F 64 20 6C 75 63 6B 21 20 20 20 20 20 27 F7
Edit: I put in an extra space by accident, this message should work now 😀

Last edited by Lennart on 2007-07-01, 20:57. Edited 1 time in total.

Reply 6 of 6, by MiniMax

User metadata
Rank Moderator


DOSBox 60 seconds guide | How to ask questions
Lenovo M58p | Core 2 Quad Q8400 @ 2.66 GHz | Radeon R7 240 | LG HL-DT-ST DVDRAM GH40N | Fedora 32