Вы бы меньше бы языком чесали, а лучше бы взяли и помогли. Например дизассамблировали и разобрались в каком нибудь плеере MSX, что бы как то облегчить жизнь Мику.
Вы бы меньше бы языком чесали, а лучше бы взяли и помогли. Например дизассамблировали и разобрались в каком нибудь плеере MSX, что бы как то облегчить жизнь Мику.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Я бы помог но с программированием у меня чуть более чем "никак"тем кто силен в этом рекомендовал бы начать с MOD плеера.
А с чем сложности то? Я просто не понял пока... Вроде по регистрам специально сделали совместимым, код плеера должен работать, только выдели его из какой-нибудь игры (я просто никогда с MSX не имел дел, не знаю какие там особенности).
И почему обязательно от MSX отталкиваться? Зачем дизассемблировать что-то, если есть Си код с комментариями? OPL4 ведь из мира PC пришел, там тоже есть его поддержка, вот в linux весьма хорошо синтез и через opl3 и через opl4 поддержан, инструменты в ПЗУшке YRW801 расписаны.
Скрытый текст
ZX Spectrum +2 +divIDE + BDI
Profi 1024k plus
Scorpion ZS-256 Turbo+
ZX Evolution rev.C2+NeoGS+SDCard HxC Floppy Emulator
ZX Evolution rev.C2+ZXM-SoundCard Extreme+ZXM-MoonSound
AVR ZX Spectrum V2.0
Орион 128[свернуть]
Скрытый текст
ZX Spectrum +2 +divIDE + BDI
Profi 1024k plus
Scorpion ZS-256 Turbo+
ZX Evolution rev.C2+NeoGS+SDCard HxC Floppy Emulator
ZX Evolution rev.C2+ZXM-SoundCard Extreme+ZXM-MoonSound
AVR ZX Spectrum V2.0
Орион 128[свернуть]
Всё же доработка NeoGS - это задача для программера-железячника. А таковые как правило предпочитают заниматься своими проектами. Вот потому-то воз и ныне там. Но, тем не менее, разработчики NeoGS по большему счёту свою задачу выполнили. Дали народу возможность приобрести новодельную GS-совместимую карточку с дополнительными плюшками. За что группе NedoPC огромное спасибо.
А в случае с ZXM-MoonSound нужен только программист, которые либо дизассемблирует готовые прожки и адаптирует их под Спекки, либо разберётся с мануалами и напишет свой плеер.
Ежели таковые профи-спецы в этой теме есть, от всего сердца прошу помочь Мику в наполнении железки софтом.
Раз уж чипов YMF278 у японца ещё много, в случае добротной софтовой поддержки MoonSound, есть большая вероятность, что производство карты может продолжить MV1971. Я же, увы, смогу лишь заняться бета-тестом и баг-репортом, ибо в программировании не силён.
Это тоже классное направление и тоже нужное!
Трекерные модули я упомянул лишь потому, что ZXM-MoonSound тоже сможет большинство из них проиграть. Да и легендарная Амига ими известна. А это тоже ретро.
И да, мне не попадалось практически ни одного коряво звучащего трекерного модуля (мог не понравится лишь жанр либо не подойти плеер), а вот мидишек, написанных как курица лапой, встречал с избытком.
Дык метр сэмплов уже в пзу Мунсаунда прошит, зачем их подгружать? А так-то да, меня в этой карточке тоже больше интересует FM музыка, или FM+PCM (есть вроде на MSX такие модули).
Ну как бы есть музыка, которая написана для MSX и спрашивается причем тут линукс и PC, если плеер на MSX.
Вот к примеру на MSX есть файлы MWM и MWK. Спрашивается как может помочь линукс и Си с комментариями?
Насколько я вот понял MWK зягоняются в внешнее ОЗУ YMF278 и представляют собой по всей видимости любительские сэмплы, а MWM непосредственно сама музыка.
Если не так сложно по вашему, ну запилите что ли плеер или демку.
1) Исходники на Си помогут проигрывать midi файлы используя сэмплы через Wavetable синтезатор OPL4. Ну и понять какие-то моменты в коде того же MWM плеера, - по двум книгам всегда легче учиться.
2) Если требуется плеер именно для воспроизведения MWM на z80, то зачем дизассамблировать какой-то бинарник, если есть исходники? Хотя я может быть туплю, но вот смотрю я на WAVEDRV.LZH, там .asm файлы, правда в каком-то жутком формате (какой-то MSX ассемблер Compass что-ли?). В общем посмотрел на этих файлы, быстро на коленке сделал скрипт для конвертации, в итоге что-то более менее читаемое получилось (хотя и кажется будто некоторые строки переставлены или это у авторов стиль такой размазывать комментарии по коду, плюс там конце похоже какая-то важная информация, но возиться не стал), вот фрагменты:
Я прикладываю архив с тем, что ковырял (простите за unix-овые переводы строк), но определенно нужно использовать не эти файлы, а обратиться к знающим MSX людям, чтоб они идентифицировали используемый ассемблер и перегнали его в текстовый формат. Ибо повторюсь, я MSX файлы вот-вот только впервые увидел.Код:basic.txt ... --- Load MWM file --- ; 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 mbload: ld a,(DOSinit) or a jp z,initerror ld ix,04c64h call basic_call push hl ld ix,067d0h ; get filename call basic_call push hl pop ix call build_fcb ; build right FCB call curbank_FE push af call open_file ; open song file or a jp nz,loderr ld hl,songdata_bank1 ; select first song bank ld (load_bank),hl ld a,(hl) call selbank_FE ... --- Load MWM file --- ; 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 mbload: ld a,(DOSinit) or a jp z,initerror ld ix,04c64h call basic_call push hl ld ix,067d0h ; get filename call basic_call push hl pop ix call build_fcb ; build right FCB call curbank_FE push af call open_file ; open song file or a jp nz,loderr ld hl,songdata_bank1 ; select first song bank ld (load_bank),hl ld a,(hl) call selbank_FE ... ;------------------------------------ ;--- Set OPL4 for SRAM read/write --- ;------------------------------------ ; In: EHL = SRAM address ; Out: C = wave data port set_opl4_wrt: ld c,2 ; enable SRAM access ld a,10001b call opl4_out_wave inc c ld a,e and 111111b call opl4_out_wave inc c ld a,h call opl4_out_wave inc c ld a,l call opl4_out_wave ld a,6 out (WVIO),a ld c,WVIO + 1 ret ... start_mus_cnt: di ld hl,0fd9Ah ld de,old_int ld bc,5 ldir ; save interrupt hook ld a,(0f342h) ld (Page_nmb),a ld hl,opl4_int_han ld de,0fb04h ld bc,9 ldir ld hl,0FD9Ah ;Init On Hook 0FD9Ah a Jump to empty RS232 area ld (hl),0C3h ; JP inc hl ld (hl),004h ; 04 inc hl ld (hl),0FBh ; FB ld a,2 out (0c4h),a ld a,(xhzequal) or a jr z,Speed60Hz cp 1 jr nz,Speedxhz ld a,248 jr Speedxhz Speed60Hz: ld a,208 Speedxhz: neg out (0c5h),a opl4_wait ; wait if Turbo-R ld a,4 out (0c4h),a opl4_wait ; wait if Turbo-R ld a,00100001b out (0c5h),a ei ret opl4_int_han: in a,(0C4H) ; Put this shit in the RS232 area rla ; this is to prevent 50 or 60 CALLFs ret nc ; to the replayer rst 030h Page_nmb: db 0 dw play_int ret ... ;--- initialise OPL4 registers --- init_opl4: ld a,5 out (FMIO+2),a opl4_wait ; wait if TURBO R ld a,3 out (FMIO+3),a ld c,2 ld a,10000b jp opl4_out_wave ; init Wave ROM stuff ...
Я и не говорю, что это легко. Просто пытаюсь в меру сил помочь, как могу...
У меня нет ни OPL4 карты (ни под спековский ZX Bus, ни под ISA), нет и куда её вставлять (останки своего давно неработающего своего Ленинграда-2 я заботливо иногда с одной полки переставляю на другую).
Так что на такой подвиг я пока не готов, но потихоньку зрею. Всему своё время...
Скрытый текст
ZX Spectrum +2 +divIDE + BDI
Profi 1024k plus
Scorpion ZS-256 Turbo+
ZX Evolution rev.C2+NeoGS+SDCard HxC Floppy Emulator
ZX Evolution rev.C2+ZXM-SoundCard Extreme+ZXM-MoonSound
AVR ZX Spectrum V2.0
Орион 128[свернуть]
Ну это судьба большинства новодельных плат.
Меня уже устраивает то, что под TS-конфой из коробки отлично крутятся mod'ы. Да и в новых демках, где GS поддерживается, звук есть. SAA, кстати, тоже под TS-конфой зазвучал. Будут портированы плееры под ZXM-MoonSound с MSX - уже большое дело! А дальше видно будет.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)