I am working on getting the moonblaster wave player (MWM files) to work. I want to modify the code:
* Does not need "call" statements from basic
* Music will be playing from the VDP interrupt
* No loading functions (all songs will be < 16KB)
* I will handle my own memory mapping
So I do not want to use the "mbload" function since I will be compressing the MWM files.
The remarks state the following about that:
; Note: The routine below is a bit complex because it supports
; songs > 16K. However, if you know that your song will always be < 16K you
; can simplify it a lot:
; - read the header and trash it!
; - read the rest of the file
; - modify the play_nextpos routine so that 3 is added to the pattern address
I cannot get that to work. I am also not sure what is meant with the last remark. If I load the file myself at #8000 and set the songdata_adres to 8006 it will play something, but it is more or less random sounds. I already disabled memory mapping functions. If I use mbload to load the file at 8000 it plays correctly.
Also, every player I saw only suppors "old" format MWM files. There is a check on the header which uses:
header_txt: db "MBMS",010h,8
But all files I create have a header like this:
header_txt: db "MBMS",010h,7
The player does just exists with an error "Not a (compatible) MB file!".
The only way to get the player working is loading the 1.16 version MWM file in the 1.04 editor and saving it in the old format. I also need to use the "mbload" routine, since it seems to load 3 bytes at offset #17d elsewhere (load_buffer).
So my question is: Does anybody have a moonblaster wave player assembly code that is "cleaned up" and compatible with the new header?
