yeah. You're in for a long ride.
mala game lists are pretty much a text file with some non-text values separating the data elements. it took me a few weeks and a lot of testing to be able to duplicate the sample lists that I had.
there's some sample source code on the mala home page about making the lists, but it's in delphi. I converted that into a structure in malalistdef.h in the romlister source, and most of your clues will be there. What it boils down to is that there's a header at the top of the file that defines the path and the title of the list and a few other items, then each entry is a duplication of the structure.
Each element inside the structure has it's own data:
Every string in the structure starts with a 06, then the size in bytes of the string itself, then the string. The string is not NULL terminated. Example: 06,08,"mystring"
Every BYTE value in the structure starts with a 02. Ie, if a game entry's # of buttons is 4, the data would be 02,04
Every LONG value in the structure starts with a 03. Ie, if a game entry's year was 1980, the data would be: 03, bc, 07
It's ugly. Even though the file is mostly text, you have to write it in binary.
If loadman ever changes the formatting, we're both screwed.

edit: byte swap.