PDA

Просмотр полной версии : Вывод картинки на экран



Alex Clap
25.07.2010, 00:33
Сохраняю картинку нарисованную в БГЕ на диск(в эмуляторе Unreal Spectrum), формат scr, далее в бейсике-128 делаю следующее:
10 RANDOMIZE USR 15619: REM: LOAD "NAME" CODE 16384
20 RANDOMIZE USR 16384
и программа сбрасывается.
Пишу небольшую игру, подскажите как выводить картинки из бейсика, а так же музыку написаную в VT-II.

SAM style
25.07.2010, 00:51
20 RANDOMIZE USR 16384А это зачем? Голая картинка - это не исполняемый код. Пакуй лазерпаком - тогда подобным методом можно будет вывести их на экран.
С музыкой сложнее - для проигрывания надо 50 раз в секунду использовать плеер (таки да, голая музыка без плеера у тебя тоже не заиграет), а с этим обычный васик не справится.

goodboy
25.07.2010, 00:52
20 RANDOMIZE USR 16384

а вот этого делать не надо - картинка (если она не скомпрессирована) просто загружается в экранную область памяти и сразу видна

.................

чуток опередили с ответом

psb
25.07.2010, 00:58
надо так и так небольшой кусок кода. пусть картинки пакованные, тогда их можно будет выводить через USR xxx (хотя это будет не очень красиво), а музыку надо повешать на прерывания. т.е. запускаем музыку через USR xxx, а дальше управление возвращается в бейсик, а музыка играет сама.

Alex Clap
25.07.2010, 01:04
Картинки рисовал в ZX-Spectrum screen editore, сохраняются с расширением s.
Свои картинки я еще на диск не затолкал, а другие картинки с расширением s лазер-пак обрабатывать не хочет.
Я уже весь мозг сломал )))
Оператор screen$ никак не должен быть задействован?
Как загрузить картинку в экранную область памяти?

goodboy
25.07.2010, 01:23
длина (обычной не пакованной ) картинки 6912. расширение можно поменять почти любым коммандером при переименовании файла. а так ты всё делаешь правильно. 16384,6912

Vitamin
31.07.2010, 13:04
Играть музыку из бейсика можно, но кроме музыки практически ничего нельзя будет делать:



10 randomize usr 49152
20 randomize usr 49157
30 pause 1
40 goto 20


А вообще да, лучше забыть о бейсике и делать все кодом.

SAM style
31.07.2010, 14:17
Играть музыку из бейсика можно, но кроме музыки практически ничего нельзя будет делать:



10 randomize usr 49152
20 randomize usr 49157
30 pause 1
40 goto 20


А вообще да, лучше забыть о бейсике и делать все кодом.

Мне одному кажется, что в этой проге что-то не то?
Вызывать 49157 надо 50 раз в секунду, а не 1...

Vitamin
31.07.2010, 14:34
Мне одному кажется, что в этой проге что-то не то?
Вызывать 49157 надо 50 раз в секунду, а не 1...
Мне одному кажется, что аргумент pause в прерываниях меряется, а не в секундах? :-)

Лас
31.07.2010, 14:34
Мне одному кажется, что в этой проге что-то не то?
Вызывать 49157 надо 50 раз в секунду, а не 1...
В этой проге всё правильно. Значение Pause указывается не в секундах, а в кадрах. (с)Steven Vickers
http://www.worldofspectrum.org/ZXBasicManual/zxmanchap18.html

SAM style
31.07.2010, 17:04
А, ну да... Чего-то меня перекосило :), васиком давно не пользовался.

psb
31.07.2010, 17:19
а мне одному кажется, что некоторые плееры юзают IY и HL'?

null_device
01.08.2010, 11:55
Пишу небольшую игру, подскажите как выводить картинки из бейсика, а так же музыку написаную в VT-II.

По поводу проигрывания музыки, можно попробовать повесить ее на вторые прерывания.. Мои безобразия для этого тут (http://zx.pk.ru/showpost.php?p=256311&postcount=25).
----
Относительно вывода картинки (непакованной) из участка памяти, нужен примерно следующий код:

LD HL,add scr (адрес с которого у вас загружена картинка)
LD DE,16384
LD BC,6912 (или 6144, если картинка без атрибутов)
LDIR
RET

Vitamin
01.08.2010, 12:46
а мне одному кажется, что некоторые плееры юзают IY и HL'?
О да. Посему с 49157 это я погорячился:) 49158 надо и SoundTracker only :)

rasmer
01.08.2010, 13:35
О да. Посему с 49157 это я погорячился:) 49158 надо и SoundTracker only :)ASM тоже нормально из бусика работает...

Alex Clap
03.08.2010, 09:52
Спасибо ребята! Постигаю, понемногу получается :)

shuran33
22.08.2010, 15:19
А почему у меня картинка на экран выходит неправильно? Вроде и программа-то малюсенькая.... Не пойму.
Пишу в SjASMPlus1.07

SAM style
22.08.2010, 15:46
поменяй расширение картинки - с $c sjasm думает, что это hobeta и отрезает несколько байт вначале. код (и метка start) должны быть на #A000