PDA

Просмотр полной версии : Mod Loader 4 GS



breeze
19.10.2008, 12:40
Поделитесь плиз куском кода для загрузки и запуска мода в GS. Сорри время поджимает, разобраться и искать некогда, а работу выпустить срочно надо ;)

newart
19.10.2008, 12:56
http://opensourcezx.untergrund.net/a_games-astemex_gs_src.html

Добавлено через 4 минуты
"LDMD3"

breeze
19.10.2008, 13:16
Добавлено через 4 минуты
"LDMD3"

ну это уже лучше ;) а то разгребать кучу исходников как-то не очень весело...

Добавлено через 2 минуты
мдя... вот если бы исходниках было бы хоть пару комментариев, то было бы куда гораздо понятнее :(

Добавлено через 24 минуты

sendcom out (187),a
waitcom in a,(187)
rrca
jr c,waitcom
ret


это работа с портами GS ? а почему бы не сделать полную выборку через BC ? дабы не было шараханий данных по портам ? o_O

newart
19.10.2008, 13:40
А что там понимать?
Музыка разбита на 4 куска запакованых хрустом.
Грузится, распаковывается, кидается в GS.
В таблице указана длинна блоков в секторах.

Keeper
19.10.2008, 13:47
это работа с портами GS ? а почему бы не сделать полную выборку через BC ? дабы не было шараханий данных по портам ? o_O

Там адресация по младшему байту:
#B3/179 Data
#BB/187 Cmd

breeze
19.10.2008, 13:50
А что там понимать?

почему бы не сделать полную выборку через BC ? дабы не было шараханий данных по портам ? o_O


Музыка разбита на 4 куска запакованых хрустом.
Грузится, распаковывается, кидается в GS.
В таблице указана длинна блоков в секторах.

спасибо это и так понятно :) меня порты интересуют

Добавлено через 1 минуту

Там адресация по младшему байту:
#B3/179 Data
#BB/187 Cmd

и точно не будет проблем на ATM, Pentagon 2.2, Scorpion и других машинах с памятью больше чем 128к ?

newart
19.10.2008, 13:52
почему бы не сделать полную выборку через BC ? дабы не было шараханий данных по портам ? o_O
Это не ко мне. Код работы с GS цитирован из авторского описания.

Keeper
19.10.2008, 14:00
и точно не будет проблем на ATM, Pentagon 2.2, Scorpion и других машинах с памятью больше чем 128к ?

А какая разница? Заявлены именно эти два порта с адресацией по младшему байту, т.е. старший байт адреса игнорируется... ;)

breeze
19.10.2008, 14:02
А какая разница? Заявлены именно эти два порта с адресацией по младшему байту, т.е. старший байт адреса игнорируется... ;)

разница в том, что например "головобол" или ещё неторые GS у меня не идут на моём Pentagon'е !

Добавлено через 42 секунды

Это не ко мне. Код работы с GS цитирован из авторского описания.

О.К. спасибо хоть на этом, будем разбираться...

breeze
19.10.2008, 18:22
Вообщем разобрался я с сорцами NewArt'а , нашел ещё доку на сайте скорпионов, сделал свой вариант, с некоторым количеством комментариев:




DEVICE ZXSPECTRUM128

EMPTYTRD "bin/playmod.trd"

org #6000

; general sound:
gsCommand equ #bb ; write: #bb - command port
gsStatus equ #bb ; read: #bb - register status
gsData equ #b3 ; read/write - data port
;-------------------------------------------------------------------------

start
ld a,#01
out (#fe),a ; here we go!

ld a,#f3 ; warm reset general sound
call sendCommand

ld a,#03
out (#fe),a ; inialized


ld hl,modBegin
ld de,modEnd-modBegin

call uploadModule

ld a,#04
out (#fe),a ; module uploaded !

in a,(gsData) ; get module Number
out (gsData),a ; select module ?

call playModule


ld a,#05
out (#fe),a ; module selected ?

ei
loop halt

jr loop

;------------------------------------------------------------------------

playModule ld a,#31 ;#31 Play module
call sendCommand
ret

;------------------------------------------------------------------------

uploadModule ld a,#30 ; #30 Load Module
call sendCommand

ld a,#d1 ; #d1 Open Stream
call sendCommand

getNext ld a,(hl)
waitReady in b,(c)
jp p,ready
in b,(c)
jp m,waitReady ; wait for ready general sound

ready out (gsData),a
inc hl
dec de
ld a,d
or e
jr nz,getNext ; loop for the next data

finalize in b,(c)
jp m,finalize ; wait for upload last byte

ld a,#d2 ; #d2 Close Stream
call sendCommand
ret

;------------------------------------------------------------------------

sendCommand ld c,gsCommand
out (gsCommand),a ; command port
waitResponse in a,(gsStatus) ; wait ready
rrca
jr c,waitResponse
ret
;------------------------------------------------------------------------

org #8000

modBegin
;incbin "rc\noname.mod"
incbin "rc\output.mod"
modEnd nop

end

;SAVESNA "bin\snapshot.sna",#6000

SAVETRD "bin/playmod.trd","player.C",start,modEnd-start

LABELSLIST "C:\My ZX\emuTools\unreal/user.l"


однако есть нюанс :( к сожалению не могу сейчас проверить на реале, но вот в EmuzWin всё играет как-бы нормально, но с небольшими претензиями к звуку, в Unreal Speccy (пробовал и 0.3.6 и версию 0.3.7) если ставить эмуляцию Z80 трек жутко тормозит и хрипит :( если поставить BASS - то проблем никаких нет :rolleyes: чё это за хрень не ясно :(
может кто код на реале с GS запустить и сказать играет нормально или есть траблы ?

DDp
19.10.2008, 20:24
...в Unreal Speccy (пробовал и 0.3.6 и версию 0.3.7) если ставить эмуляцию Z80 трек жутко тормозит и хрипит :(
...
может кто код на реале с GS запустить и сказать играет нормально или есть траблы ?

Запустил на реале. Никакой разницы с Unreal-ом (0.37.1, Z80-эмуляция GS).
Это потому, что GS-ный плеер плохо(неправильно) играет чип-модули.

-------------

Чип-модули лучше всего играет Z-Player 3.2 (by Muchkin).
Но даже в нём этот модуль немного подхрипывает на втором паттерне.

breeze
19.10.2008, 20:48
Запустил на реале. Никакой разницы с Unreal-ом (0.37.1, Z80-эмуляция GS).

тоесть всё также тормозит и хрипит ?


Это потому, что GS-ный плеер плохо(неправильно) играет чип-модули.

эээ... это который прошит в самой GS'ке в ПЗУ ?



Чип-модули лучше всего играет Z-Player 3.2 (by Muchkin).
Но даже в нём этот модуль немного подхрипывает на втором паттерне.

эээ... погоди, что-то я не совсем понимаю, разве этот плеер не просто загружает модуль и отдаёт команду play GS'ке ? :eek:

DDp
19.10.2008, 20:57
тоесть всё также тормозит и хрипит ?
абсолютно так же

эээ... это который прошит в самой GS'ке в ПЗУ ?
да

эээ... погоди, что-то я не совсем понимаю, разве этот плеер не просто загружает модуль и отдаёт команду play GS'ке ? :eek:
Нет, он загружает ещё и свой плеер (я так полагаю команды #13 и #14).

А так бы можно было соорудить NeoGS на зверски мощном проце... ан-нет - стоИт z80 (совместимость!).

breeze
19.10.2008, 21:09
Нет, он загружает ещё и свой плеер (я так полагаю команды #13 и #14).

мдааааа....... убил, наповал... :sleep: ясно, халявы не будет :(


А так бы можно было соорудить NeoGS на зверски мощном проце... ан-нет - стоИт z80 (совместимость!).

ну и видимо софтверный плеер грузиться тоже :(

короче ж.... (_o_) причём полная... :mad:

ясно, спасибо за разъяснения...

sv
20.10.2008, 09:20
хмм...а у меня головобол работает..
и доп память юзает причём..

psb
20.10.2008, 10:10
а почему бы не сделать полную выборку через BC ?
это совершенно бесполезно + кучу времени потратишь зря. а если у тебя что-то не работает, то надо искать проблему в правильности подключения.. ну или еще в чем-то другом.


Нет, он загружает ещё и свой плеер
он загружает не свой плеер, а разлупивалку.
тема с хрипом чип-модулей уже настолько избита, что я даже не знаю, стоит ли повторять еще раз о том, что надо делать...
самое простое: загрузите вы модуль через тот же Z-Player, выйдите, загрузите Riff-Tracker и сохраните модуль с нормальными сэмплами. всё!

п.с. НИКОГДА НЕ ПРОВЕРЯЙТЕ В ЭМУЛЯХ РАБОТУ GS ЧЕРЕЗ BASS.DLL!!!

Evgeny Muchkin
20.10.2008, 11:43
Непонятность с данным конкретным модулем объясняется тем, что в нем используются октавы, которые ГС не умеет проигрывать. Так что, какой плеер не используй, как его в ГС не грузи, все равно просто так без поллитры он нормально не заиграет :) Плюс в нем еще пара чипованых сэмплов есть, но как их забороть psb уже поведал.

breeze
20.10.2008, 12:16
это совершенно бесполезно + кучу времени потратишь зря. а если у тебя что-то не работает, то надо искать проблему в правильности подключения.. ну или еще в чем-то другом.

ну значит будем это обсуждать в другой теме :rolleyes:


он загружает не свой плеер, а разлупивалку.

подробнее можно, что это такое и в чём разница между тем что прошито и тем, что загружается ? вообще рад бы увидеть пример на asm :cool:


тема с хрипом чип-модулей уже настолько избита, что я даже не знаю, стоит ли повторять еще раз о том, что надо делать...

верю, но если бы у меня был GS с тех самых времён как только он появился на свет, возможно я и был бы в курсе, а так увы спустя столько времени решил выпустить поделку и столкнулся с кучей непоняток :(


самое простое: загрузите вы модуль через тот же Z-Player, выйдите, загрузите Riff-Tracker и сохраните модуль с нормальными сэмплами. всё!

тоесть разлупиловка корректирует семплы ? :eek:


п.с. НИКОГДА НЕ ПРОВЕРЯЙТЕ В ЭМУЛЯХ РАБОТУ GS ЧЕРЕЗ BASS.DLL!!!

это был чисто риторический вопрос :eek:

Добавлено через 1 минуту

Непонятность с данным конкретным модулем объясняется тем...

ну в примере что я выкладывал далеко не тот модуль ;) но суть немного стала ясна.

psb
20.10.2008, 14:43
подробнее можно, что это такое и в чём разница между тем что прошито и тем, что загружается ?
в gs загружалка мода только засасывает модуль и как есть кладет его в память. после загрузки модуля происходит его инициализация, т.е. вычисляется, где лежат какие сэмплы, паттерны.
загружалка в Z-Player'е после всего этого просматривает модуль на наличие коротких сэмплов, делает эти сэмплы длиннее за счет копирования и переинициализирует плеер.
технически - это код на асме Z80, который загружается в озу gs и запускается.


вообще рад бы увидеть пример на asm
большого смысла нет, проще исправить модуль и запаковать - меньше мороки. но
1. можно раскопать плеер
2. можно подглядеть в новую прошивку gs (там разлупыватель встроен)
3. в любом случае код этого разлупывателя не так прост.

а так увы спустя столько времени решил выпустить поделку и столкнулся с кучей непоняток
но ведь поиск хотя бы по форуму никто не отменял?
просто меня добивает вот такое:
-ребята, че-то у меня модуль в гске тормозит
-аа, наверное там глюк в плеере, в прошивке много глюков
-а че делать?
-а фиг знает (как вариант - выкинуть гс/пользоваться басс.длл в эмуле)

получается, если такие люди как Evgeny Muchkin перестанут вновь и вновь обьяснять что это, как это можно обойти (хотя кучу раз уже это описано), то вы все бросите? или будете проводить исследования, из-за чего одни моды правильно играют, а другие нет? а потом еще статью напишете в новый журнал о своих открытиях? даааа... имхо, если уж взялся за что-то, то соизволь изучить немного информации по этому самому.

п.с.извиняюсь за такой тон, но... наболело...

breeze
20.10.2008, 16:13
п.с.извиняюсь за такой тон, но... наболело...

я всё понимаю, и сам не люблю когда по двести раз переливают из пустого в порожний, но поверь мне прежде чем отвечать в таком извиняющимся тоне достаточно было просто обратить внимание на одну мааааленькую строчку:


cорри время поджимает, разобраться и искать некогда, а работу выпустить срочно надо

то можно было действительно просто помочь, а не учить жизни. Например, Evgeny Muchkin так и поступил, взял и потратил кусок личного времени на разбирательство с этим модом, за что ему огромное спасибо. Потому что это важно здесь и сейчас, а будет у меня время позже могу и разобраться и статью написать. Обидно когда люди путают нубские вопросы с действительной просьбой о помощи и любой вопрос встречают в штыки не хочешь, не отвечай, не трать свои нервы и чужое время.

Всем спасибо тема закрыта!