PDA

Просмотр полной версии : Тетрис



tnt23
03.02.2019, 19:38
Вниманию неширокой общественности предлагается Тетрис, призванный подчеркнуть богатые возможности "Океана-240". При объеме менее немногим более 2Кбайт программа буквально нашпигована удачными техническими решениями: минималистичной графикой, скверным генератором случайных чисел и двоичным счетчиком достижений.
Отдельно стоит отметить полное отсутствие связи между набранными очками и темпом игры, а также выразительную звуковую палитру.

http://sensi.org/~tnt23/ok240/tet.png

Стрелки влево/вправо - смещение
Стрелка вверх - вращение
Стрелка вниз - приблизить дно
Пробел - уронить
F - перебор палитр
B - перебор фонов
ESC - выход

Грузить и запускать с адреса 100h.

Исходный код доступен здесь: https://github.com/timtashpulatov/ok240/blob/master/tet.asm

ivagor
04.02.2019, 13:05
Не играл, но осуждаю - зачем такой плохой ГСЧ? Честно говоря я и сам так делал, но давно и теперь осуждаю людей за свои прошлые ошибки.
Мне дизайн нравится, я так не умею.

tnt23
04.02.2019, 13:16
Point taken. Я сам плохо сплю по ночам из-за плохого ГСЧ, но мне очень хотелось получить хоть какой-нибудь уже работающий тетрис. С другой стороны наседает svofski с пожеланием 7 bag и других приятных фич, вроде Wall Kick.
В общем, пишем в бэклог пожелания, а я пока счет (пере)приделаю и звук.

tnt23
05.02.2019, 20:51
Минорное обновление:

- более приличный ГСЧ (https://zx-pk.ru/threads/23100-generator-psevdosluchajnykh-chisel.html?p=705136&viewfull=1#post705136)
- звучки

Бинарник в первом сообщении обновлен. Играбельно с адреса 1000h 100h.

ivagor
05.02.2019, 21:10
Хороший тетрис, планируется ли универсальная версия и для "старого" конфига и для fdd (или две отдельные версии)? А то в конфиге fdd клавиатура и звучки не работают.

tnt23
05.02.2019, 21:40
Чтобы звучки работали, нужно определять, на каком BIOS мы запущены, и писать Freq и Duration в разные места. Ну или пользоваться выводом ESC O, но это может оказаться чуток медленно. (Ну или вовсе наплевать на BIOS и пищать вручную)

А вот по поводу клавиатуры непонятно, используются вполне себе системные вызовы KBDSTAT (0e006h) и KBDREAD (0e009h).

gurfunkel
05.02.2019, 21:48
Какой эмулятор использовать? Bashkiria-2m? В нем чёто не завелся...

tnt23
05.02.2019, 21:58
Какой эмулятор использовать? Bashkiria-2m? В нем чёто не завелся...

Да, с конфигурацией Okean-240. У меня все работает (с) даже в линуксе под wine:

67975

- - - Добавлено - - -

- добавил перебор палитр кнопкой 'F'. Завораживающее зрелище!

ivagor
05.02.2019, 22:09
tnt23, возможно стоит добавить в архив файл .emu, чтобы просто дропнуть его в эмулятор, нажать F5 и вперед. Через отладчик мало кто захочет запускать.

Попробовал свою старую прикидочную програмку. Она реагирует на клавиатуру только в конфиге fdd (прямой опрос, без biosa), т.ч. я где то там наврал, что делал под первый конфиг.
Разработчикам океана за такие выкрутасы мое фэ.

tnt23
05.02.2019, 22:56
tnt23, возможно стоит добавить в архив файл .emu, чтобы просто дропнуть его в эмулятор, нажать F5 и вперед. Через отладчик мало кто захочет запускать.

Попробовал свою старую прикидочную програмку. Она реагирует на клавиатуру только в конфиге fdd (прямой опрос, без biosa), т.ч. я где то там наврал, что делал под первый конфиг.
Разработчикам океана за такие выкрутасы мое фэ.

Добавил в архив tet.emu.

А что за прикидочная программа? Мне представляется, что конфиг fdd в части ВН59 и клавиатуры ничем не должен отличаться от конфига без fdd. Разве что строб подтверждения клавиатуре в разных биосах посылается разными битами.

ivagor
06.02.2019, 08:47
Там ничего интересного, просто опрашивается клавиатура и при нажатии курсорных клавиш и пробела рисуются полоски на экране. Наверняка переделать под "старый" конфиг можно за пару минут, но пока желания (да и необходимости) нет.

tnt23
06.02.2019, 10:27
Все равно было бы интересно взглянуть. Я бы попробовал засинхронизировать такой код с обратным ходом луча, полезно для последующих применений.

ivagor
06.02.2019, 10:58
tnt23, я несколько потерялся, что ты надеешься увидеть в моей поделке? Ты же и клавиатуру опрашиваешь и рисуешь на экране. Тем более у меня для конфига fdd, а у тебя реал "старой формации" (т.е. опрос клавиатуры не будет работать).
Кстати у меня вопрос, а как ты в реал грузишь программы?

tnt23
06.02.2019, 12:04
tnt23, я несколько потерялся, что ты надеешься увидеть в моей поделке?

Всегда интересно посмотреть-поучиться, как это бывает сделано у других.


как ты в реал грузишь программы?

Через директиву 'L' Монитора. Она принимает через последовательный порт стандартный HEX, который отлично выпекает "Прекрасный Ассемблер". Только штатно в "Океане" это делается на скорости 4800 (медленно и печально), я себе подпатчил Монитор для скорости 19200.

ivagor
06.02.2019, 12:16
Насчет поделки я подумаю, но особого желания нет. Там скорее всего копипаста из пзу, похвастаться нечем.


Через директиву 'L' Монитора. Она принимает через последовательный порт стандартный HEX
А чем передаешь?
Не исключено, что средствами emu можно сделать перехват типа магнитофонного и грузить из файлов HEX.

tnt23
06.02.2019, 12:37
А чем передаешь?
Не исключено, что средствами emu можно сделать перехват типа магнитофонного и грузить из файлов HEX.

Передаю терминальной программой по вкусу, в моем случае TeraTerm. Простое копирование в COM-порт по идее тоже бы должно работать, но не работает, то ли "Океан" не успевает отгребать на скорости 19200, то ли Windows буферизирует поток как-то.

Можно сделать и загрузку HEX, конечно, но какой смысл? они более рыхлые, т.к. это семибитное ASCII кодирование бинарника, с указанием адресов загрузки.

ivagor
06.02.2019, 12:49
Можно сделать и загрузку HEX, конечно, но какой смысл?
Сейчас грузить в конфиг с fdd можно из образов дисков okd. А цивильного способа загрузки в безfddшный конфиг нет.

b2m
06.02.2019, 15:30
А цивильного способа загрузки в безfddшный конфиг нет.
Хак дня (добавить в EMU.ext)


ok : loader {
config="Okean-240"
loadmem="mem"
loadaddr=100
cmd[0].delay=1200
cmd[0].start=100
}

Файлы с расширением .ok будут запускаться с адреса 100h.

svofski
06.02.2019, 17:24
Я наконец собрался попробовать. Получился уже очень играбельный Стаках! Звучки приятно радуют.

Пожелания:
0. больше хохломы. Цвета еще есть в запасе для разных фигур?

Что до самой игры, вот мой тетрис аксептанс лист:
1. n-bag rng
2. wall kicks
3. вращение в обе стороны
4. фигура лочится не при касании дна, а на следующем шаге
5. автоповтор
6. опционально -- отрисовка проекции текущей фигуры на дно
7. не отследил, как ведется счет. должны быть бонусы или множители за комбо разного размера

Пункты [2,3,4] позволяют загонять фигуры ходом коня в иначе недоступные места.

tnt23
06.02.2019, 18:30
svofski, спасибо за целительный отзыв. Особенно рад, что звучки пришлись по уху.

Про цвета - их в отдельно взятой палитре негусто. Переключать палитры в пределах ширины фигуры (4*8=32 пиксела) я в текущем состоянии сознания не умею, да и в будущем едва ли смогу.

Хохломы нет, но есть Уорхол:

67986

По остальным фичам, в моем детстве тетрис был не таким теплым и дружелюбным, но можно дать пользователю выбор: твой тепличный набор (можно даже с Undo), или Суровый Челябинский Вариант.

(позже прокомментирую весь аксептанс лист)

- - - Добавлено - - -

b2m, а поддержку второй страницы видео-ОЗУ можно попросить? (или я уже просил?)

svofski
06.02.2019, 19:01
Переключать палитры на лету не надо, это как-то жестковато для тетриса. Уорхол-палитра уже неплохо. Я думал, если не получается одарить каждую фигуру своим цветом, может быть что-нибудь в стиле один цвет для забетонированных фигур (допустим цвет бетона, как сейчас) vs цвет летящей фишки. Когда фишка присоединяется к Боргу, свой цвет она утрачивает. Чтобы был какой-то контраст в игровом поле.

Но может быть все же получится сделать шашечками RGB-палитры какие-то псевдоцвета, как делали в некоторых играх на БК. R, G, B, R+G, R+B, G+B, R+2G+B -- на студийном-то поди должны хорошо смотреться.

b2m
06.02.2019, 19:35
поддержку второй страницы видео-ОЗУ можно попросить?
Так есть же вроде, если старший бит =1, то отображается область с адреса 4000h (по крайней мере именно этот адрес стоит в конфиге).

tnt23
06.02.2019, 20:12
4. фигура лочится не при касании дна, а на следующем шаге
5. автоповтор
6. опционально -- отрисовка проекции текущей фигуры на дно
7. не отследил, как ведется счет. должны быть бонусы или множители за комбо разного размера

Пункты [2,3,4] позволяют загонять фигуры ходом коня в иначе недоступные места.

4 - вроде сейчас так и есть? фигура при касании дна не прилипает, ее еще можно чуть-чуть успеть подвигать, пока на следующем шаге она не проверит, что под ней проваливаться некуда, и тогда уже вморозится.

5 - это зависит от клавиатурного контроллера по крайней мере в не-fdd конфигурации (т.е. со старым Монитором).

6 - наверное, можно добавить (как? в виде стрелочки под стаканом?)

7 - счет, даром что двоичный, ведется примитивно: каждая полная строка +1 к счетчику.

(Мне эстетически не нравится, как сейчас происходит схлопывание нескольких строк; лучше было бы превратить это в маленький мультик: схлопнул строку - блямкнул - сдвинул стакан, чтобы у играющего повышалось выделение серотонина. И еще концовка игры скомкана. Вообще у меня к нынешней версии и еще есть претензии)

- - - Добавлено - - -


Так есть же вроде, если старший бит =1, то отображается область с адреса 4000h (по крайней мере именно этот адрес стоит в конфиге).

Ага, просто я пробовал щелкать экраны и результат отличался от ожиданий. Скорее всего, что-то не так делал.

- - - Добавлено - - -


один цвет для забетонированных фигур (допустим цвет бетона, как сейчас) vs цвет летящей фишки

У меня сложилось впечатление, что сейчас так и есть. Падает красная тетраминина, упирается в сугроб и сливается с ним в экстазе. Или поясни, плиз.


Но может быть все же получится сделать шашечками RGB-палитры какие-то псевдоцвета, как делали в некоторых играх на БК. R, G, B, R+G, R+B, G+B, R+2G+B -- на студийном-то поди должны хорошо смотреться.

Шашечками попробовать можно. Вот, например, фон в стакане сделан шахматкой черного с белым. Через полчаса игры глаза у меня начинают стекленеть, например, но можно нащупать другие комбинации. Тут неподалеку есть редактор битмапчиков для "Океана", можно предлагать на конкурс свои варианты, или слать скриншоты с хорошенько пропатченным стаканом.

На студийном неожиданно плохо смотрится быстрое переключение видеостраниц. Может, у него люминофор какой-то особенно склерозистый.

svofski
06.02.2019, 21:38
4 - вроде сейчас так и есть? фигура при касании дна не прилипает, ее еще можно чуть-чуть успеть подвигать, пока на следующем шаге она не проверит, что под ней проваливаться некуда, и тогда уже вморозится.
Может быть дело в эмуляторе или в чем еще, но у меня она вмораживается моментально.

Про цвета я ступил. Правда, у тебя красный контур у активной фигурки.


5 - это зависит от клавиатурного контроллера по крайней мере в не-fdd конфигурации (т.е. со старым Монитором).
А что, у Океах нельзя определить нажата или отжата в настоящий момент клавиша?


6 - наверное, можно добавить (как? в виде стрелочки под стаканом?)
В виде призрачной фигуры, которая лежит на дне там, где бы она была, если бы ее в настоящий момент бросили.

А ты видел тетрис, кроме как в Челябинске? Полистай ютубы по теме. Это спорт, как сборка кубика Рубика, и у него довольно серьезные и требовательные к своему спортивному снаряду фанаты.

b2m
06.02.2019, 21:41
Может быть дело в эмуляторе или в чем еще, но у меня она вмораживается моментально.
Ты наверно пробелом бросаешь. Если ждать, пока сама дойдёт, то нормально. Хорошо бы, чтобы и по пробелу не сразу "вмораживалась"...

tnt23
06.02.2019, 22:19
Хорошо бы, чтобы и по пробелу не сразу "вмораживалась"

Для этого есть стрелочка вниз. Опять же, в тех тетрисах, на которых я рос (ДВК, СМ ЭВМ), пробел вроде бы приваривал фигуру намертво.

- - - Добавлено - - -


А что, у Океах нельзя определить нажата или отжата в настоящий момент клавиша?

В первой АКА канонической АКА журнальной версии клавиатура - внешний черный ящик, выставляющий в порт 7 бит нажатой когда-то клавиши, сопровождая его стробом. В ответ "Океан" отвечает другим стробом, после чего клавиатура с облегчением свой строб снимает.

Только в поздней ревизии клавиши УС и СС заведены на отдельные линии порта B, но в остальном, по-моему, мультитач так и не появился.

- - - Добавлено - - -


В виде призрачной фигуры, которая лежит на дне там, где бы она была, если бы ее в настоящий момент бросили.

Гедонический какой-то тетрис получится, аркадийский. Может, еще grid сделать?


А ты видел тетрис, кроме как в Челябинске? Полистай ютубы по теме. Это спорт, как сборка кубика Рубика, и у него довольно серьезные и требовательные к своему спортивному снаряду фанаты.

В Челябинске тетрамино делали из двутавровых балок, чтобы ветром не сносило. Но мой кругозор постоянно расширяется, и отлично, что у нас здесь есть серьезный и требовательный к инвентарю фанат :)

tnt23
08.02.2019, 22:53
Переписал процедуру сдвига в сторону ускорения, играть со звуком стало поприятнее.

Обновил архив в первом сообщении.

svofski
10.02.2019, 04:04
Немного оффтопа:

Когда-то, году в 2006, у меня был телефон Нокла Series 40, который был жутко бестолковый, потому что в нем не было Тетриса (cобственно с непонимания значимости тетриса и началось угасание фирмы Нокла). Но тогда я временно этот недостаток восполнил, написав Бардак. Если бы я знал тогда про Океах-240, я бы конечно не стал ничего писать для Series 40, но я-то не знал. Он меня долго выручал, пока я этот телефон не постирал. Серию 40 нынче уже не найдешь, но, вдохновившись трудами tnt23, я перетащил Бардак за три красноглазых вечера с кромешного j2me на няшный libgdx и вот что получилось:
http://sensi.org/~svo/bardak/
(Наверное требуется умеренно современный браузер, ну и вообще, потому что отрисовка через WebGL)

tnt23
20.02.2019, 13:04
Добавил геймовер с аудио- и видео-спецэффектами.

Denn
21.02.2019, 00:13
Интересно, а возможно сабж на Орион портировать?... :v2_dizzy_turn:

tnt23
21.02.2019, 01:13
Интересно, а возможно сабж на Орион портировать?... :v2_dizzy_turn:

Должно быть несложно, главное заменить машинно-зависимые процедуры типа PaintBitmap на "орионские". Ну звук ерунда, клавиатура тоже.

Denn
21.02.2019, 14:18
Исходный код доступен здесь: https://github.com/timtashpulatov/ok240/blob/master/tet.asm

Пытаюсь переводить на знакомый мне ассм...


1). А что означает:

db64 AAAAAAAAAAAAAMcAJyjHAAAAAAAAAAAAAADMANJSTAAAAAAAAA AAAAAAOQI4CTIA

??

- - - Добавлено - - -

и ещё дурацкие вопросы :)


2). Что означает: "CTAKAH: equ . " ?

Можно ли заменить на: "CTAKAH: equ $ " ?


3). Тут пустой DB:

StickTune:
db

что должно быть в качестве параметра(ов)?


4). Неопределённая переменная CurPos:

Row:equ CurPos
Col:equ CurPos+1

Что в ней должно быть?


5). Правильно ли я заменил на РКшный манер:

KBDSTAT: equ 0F812h; 0E006h
KBDREAD: equ 0F81Bh; 0E009h
CHAROUT: equ 0F809h; 0E00Ch ; вывести символ из регистра C

???


- - - Добавлено - - -

До финиша немного осталось... ))

https://pp.userapi.com/c850620/v850620451/c0ede/bDV9SS-Is3c.jpg

tnt23
21.02.2019, 15:11
Пытаюсь переводить на знакомый мне ассм...

Попробуй лучше вот так: https://svofski.github.io/pretty-8080-assembler/?https://raw.githubusercontent.com/timtashpulatov/ok240/master/tet.asm



1). А что означает:

db64 AAAAAAAAAAAAAMcAJyjHAAAAAAAAAAAAAADMANJSTAAAAAAAAA AAAAAAOQI4CTIA

Означает "вставить бинарник, закодированный в формате BASE64". Конкретно в этом месте у меня вставлены битмапчики надписей "SCORE" и "NEXT".




2). Что означает: "CTAKAH: equ . " ?

Можно ли заменить на: "CTAKAH: equ $ " ?

Означает "присвоить метке CTAKAH текущий адрес компиляции". Наверное, можно и equ $.



3). Тут пустой DB:

StickTune:
db

что должно быть в качестве параметра(ов)?

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





4). Неопределённая переменная CurPos:

Row:equ CurPos
Col:equ CurPos+1

Переменная CurPos довольно-таки определенная, находится она в самом конце листинга. Видимо, труъ ассемблерные компиляторы неодобрительно смотрят на ссылки вперед.




5). Правильно ли я заменил на РКшный манер:

KBDSTAT: equ 0F812h; 0E006h
KBDREAD: equ 0F81Bh; 0E009h
CHAROUT: equ 0F809h; 0E00Ch ; вывести символ из регистра C

???

Скорее всего, правильно :)

- - - Добавлено - - -

Есть важный момент, который нужно уяснить, это сходства или различия организации видеопамяти Океана и Ориона. В Океане видеопамять растет из левого верхнего угла байтами вниз, заполняя по мере увеличения адресов колонки вправо. При этом в цветном режиме каждая точка (полоска из 8 точек) на экране раскрашивается двумя битами (байтами) из видеопамяти, отстоящими друг от друга на 256.

Denn
21.02.2019, 15:41
Попробуй лучше вот так: https://svofski.github.io/pretty-8080-assembler/?https://raw.githubusercontent.com/timtashpulatov/ok240/master/tet.asm

Я на Орионе делаю, интернет я туда прикрутил, но браузер ещё не сделал... :)



Означает "вставить бинарник, закодированный в формате BASE64". Конкретно в этом месте у меня вставлены битмапчики надписей "SCORE" и "NEXT".

Длинные последовательности символов это имена файлов бинарников или их "тела"?



Означает "присвоить метке CTAKAH текущий адрес компиляции". Наверное, можно и equ $.

Я всегда в таких случаях просто пишу имя метки и двоеточие, EQU не требуется..



Переменная CurPos довольно-таки определенная, находится она в самом конце листинга. Видимо, труъ ассемблерные компиляторы неодобрительно смотрят на ссылки вперед.

Смотрел три раза, два из которых поиском. нету нигде определения. Ещё раз проверил прямо на сайте - нет.



Есть важный момент, который нужно уяснить, это сходства или различия организации видеопамяти Океана и Ориона. В Океане видеопамять растет из левого верхнего угла байтами вниз, заполняя по мере увеличения адресов колонки вправо.

Тут один в один с Орионом. И даже адрес начала экрана полностью совпадает.



При этом в цветном режиме каждая точка (полоска из 8 точек) на экране раскрашивается двумя битами (байтами) из видеопамяти, отстоящими друг от друга на 256.

А вот тут различия, но с цветом потом поколдую...

tnt23
21.02.2019, 15:45
Длинные последовательности символов это имена файлов бинарников или их "тела"?

Это их "тела". Чтобы не писать db и дальше не перечислять тридцать два байта.


Я всегда в таких случаях просто пишу имя метки и двоеточие, EQU не требуется..

Ну... двоеточия в "Прекрасном Ассемблере" факультативны, вот я и распустился :) но вообще респект за компиляцию прямо на таргете!


Смотрел три раза, два из которых поиском. нету нигде определения. Ещё раз проверил прямо на сайте - нет.

Точно, ты прав. Это рудимент, оставшийся от редактора битмапов. На CurPos ссылаются Row и Col, которые все равно нигде не используются. Грохну.

ivagor
21.02.2019, 15:46
Есть еще отличие от графики ориона - байты в другую сторону смотрят.

tnt23
21.02.2019, 15:55
Есть еще отличие от графики ориона - байты в другую сторону смотрят.

Да, это довольно неприятное было открытие.

Denn
21.02.2019, 16:02
Это их "тела". Чтобы не писать db и дальше не перечислять тридцать два байта.

А, понятно, т.е. это если "по-русски" стандартное: DB 'ABCD...etc'

Стринги в одинарных кавычках, короче ))



Ну... двоеточия в "Прекрасном Ассемблере" факультативны, вот я и распустился :) но вообще респект за компиляцию прямо на таргете!

Я не про двоеточия, а про то, что просто указание метки в тексте сопсно является её объявлением с присвоением текущего счётчика адреса ;)
Оператор EQU нужен для инициализации значением выражения.



Точно, ты прав. Это рудимент, оставшийся от редактора битмапов. На CurPos ссылаются Row и Col, которые все равно нигде не используются. Грохну.

Ок. Я пока не вникал, просто тупо привожу к виду, который успешно скомпилируется. А дальше уже "включу голову" и буду адаптировать к Ориону.

- - - Добавлено - - -


Есть еще отличие от графики ориона - байты в другую сторону смотрят.

Это как? %)

Т.е. крайняя левая верхняя точка это не D7, а D0 ?

tnt23
21.02.2019, 16:03
А, понятно, т.е. это если "по-русски" стандартное: DB 'ABCD...etc'

Стринги в одинарных кавычках, короче ))

Скорее панталоны, чем стринги, потому что в кавычки сложно запихнуть произвольное 8-битное значение, например, 0x01 или 0xff.


Я не про двоеточия, а про то, что просто указание метки в тексте сопсно является её объявлением с присвоением текущего счётчика адреса
Оператор EQU нужен для инициализации значением выражения.

Ээээ. Ну ок.

Denn
21.02.2019, 16:07
tnt23, комментарии конечно доставили! Спасибо, местами ржал от души )))))

П.С. а вот это "; Score (.)(.)" то, что я думаю или нет? ))

ivagor
21.02.2019, 16:13
Т.е. крайняя левая верхняя точка это не D7, а D0 ?
Да, таких компьютеров мало, но океан один из них.

Denn
21.02.2019, 16:33
Ну, наконец-то!

https://pp.userapi.com/c850036/v850036292/139085/WAFNnn01cZY.jpg

- - - Добавлено - - -

Напрямую не взлетело...

https://pp.userapi.com/c852220/v852220442/c2d5b/uarGCZdgENU.jpg

Бум разбираццо :)

tnt23
21.02.2019, 18:17
П.С. а вот это "; Score (.)(.)" то, что я думаю или нет? ))

Это есть такой хороший одноименный журнал про это самое :)

- - - Добавлено - - -


Ну, наконец-то!

А три ошибки переполнения?

Denn
21.02.2019, 18:37
А три ошибки переполнения?

Это просто предупреждения, тут всё ок.

tnt23
21.02.2019, 18:46
Ну тогда отладчик в конечности и вперед :)

OrionExt
21.02.2019, 18:47
Denn, Время у тебя освободилось? по тролить? Вот почему когда дело касалось реальной щуки. Переноса игры Агент007(98%) на Орион, тебя не было?

Denn
21.02.2019, 19:06
OrionExt, я не в курсе про Агент007. И запросов не поступало.

- - - Добавлено - - -


Ну тогда отладчик в конечности и вперед :)

Закомментировал в начале инициализацию экрана (всякие записи в порты) и дело пошло:

https://pp.userapi.com/c848620/v848620604/1363e1/5XH-lqdxLco.jpg

- - - Добавлено - - -

Такое ощущение, что экран родного ПК ширше, чем Орионовский...

tnt23
21.02.2019, 19:07
Denn, включи графический режим 1.

Denn
21.02.2019, 19:09
Глючит безбожно, вероятно в запрещённое ОЗУ пишет. В итоге "улетело в космос" :)
Наверное это цвет куда-то не туда залез...

- - - Добавлено - - -


Denn, включи графический режим 1.

В Орионе это 4-цветный, каждый пиксель своим цветом. Точно он нужен?

tnt23
21.02.2019, 19:35
В Орионе это 4-цветный, каждый пиксель своим цветом. Точно он нужен?
Я думал, тебе цветной тетрис нужен, а не монохромный.

Denn
21.02.2019, 19:54
Я думал, тебе цветной тетрис нужен, а не монохромный.

У меня по-умолчанию в Орионе 16-цветный режим, а 4-цветный опционально. Но для начала хотя бы в монохроме заработало..

tnt23
21.02.2019, 19:57
Denn, дак попробуй режим 1 все же ж.

Denn
21.02.2019, 20:08
А какой размер экрана используется в игре: 512х256 или 256х256 ?

tnt23
21.02.2019, 21:01
А какой размер экрана используется в игре: 512х256 или 256х256 ?

Цветной режим в "Океане-240" - 256 на 256 точек.

tnt23
22.02.2019, 11:52
Приделал анимацию повышения уровня, и что-то я не так понимаю про флаг Carry.

Имеем в аккумуляторе небольшое приращение, 1 или 2. Складываем его со счетчиком достижений:


lda Score
mov c, a
lda Delta
add c
jc LevelUpgradeFun

И если переполнилась чаша терпения счетчика, то показываем игроку мультик с волком и корзиной яиц.

Это хорошо работает для случая FF+1 (получаем в аккумуляторе 0 и взведенный Carry), но почему-то не работает для случая FF+2 (получаем 1 и отсутствие Carry). WTF?

Плохо смотрел в отладчик.

Denn
22.02.2019, 12:25
tnt23, переполнение работает честно. Главное только не делать приращение с помощью команд INR ;)

tnt23
22.02.2019, 12:37
В данном случае я проморгал переход через экватор в другом месте, и подходил к моменту сложения уже с пустым флагом переноса.

- - - Добавлено - - -

Denn, как успехи с портированием на "Орион-128"? удалось воткнуть режим 1 и повтыкать в красоту неописуемую?

Denn
22.02.2019, 13:01
Denn, как успехи с портированием на "Орион-128"? удалось воткнуть режим 1 и повтыкать в красоту неописуемую?

С этим я развлекаюсь на работе, в офисно-фоновом режиме :) Сейчас пока дело встало на паузу, немного не до того, потом продолжу ;)

П.С. с удивлением заметил за собой, что стал слишком много читать про Океан-240... прям хоть собирай ))

- - - Добавлено - - -


Цветной режим в "Океане-240" - 256 на 256 точек.

Судя по картинке на орионовском экране 384х256, не влезает 1/3-я часть картинки справа, из чего делаю вывод, что оно пытается рисоваться в 512х256.
А "улёты в космос" как раз есть следствие записи в ОЗУ выше EFFFh.

tnt23
22.02.2019, 14:02
Судя по картинке на орионовском экране 384х256, не влезает 1/3-я часть картинки справа, из чего делаю вывод, что оно пытается рисоваться в 512х256.

Да нет же. В "Океане" всего два графических режима: монохромный 256 строк по 512 пикселей в строке, и цветной, тоже 256 строк по 256 пикселей в строке. Памяти используется одинаковое количество. Видео-ОЗУ располагается с адреса 0xC000 и до 0xEFFF.

Чтобы "влезла" часть картинки справа, нужно на "Орионе" включить видеорежим 1.

Denn
22.02.2019, 14:08
Чтобы "влезла" часть картинки справа, нужно на "Орионе" включить видеорежим 1.

Во всех видеорежимах у Ориона размер картинки одинаковый: 384х256. Меняецца только интерпретация байтов в ОЗУ.

ivagor
22.02.2019, 14:13
Чтобы на орионе влезла вся океанская картинка 256x256 нужно четные столбцы - в одну плоскость, нечетные столбцы - в другую плоскость. Получившиеся промежутки конечно надо убрать, "собрать" вместе столбцы каждой плоскости.

Denn
22.02.2019, 14:18
Чтобы на орионе влезла вся океанская картинка 256x256 нужно четные столбцы - в одну плоскость, нечетные столбцы - в другую плоскость. Получившиеся промежутки конечно надо убрать, "собрать" вместе столбцы каждой плоскости.

Вот оно как!

Надо где-то нарыть картинок от Океана, поупражняться с программированием конвертера для Ориона.

tnt23
22.02.2019, 16:09
Ну или просто переписать процедуру PaintBitmap под "Орион-128". Она довольно несложная.

Denn
22.02.2019, 17:47
Ну или просто переписать процедуру PaintBitmap под "Орион-128". Она довольно несложная.

В данном случае разумеется так и будет. Просто я сразу глобально смотрю (компик понравился).

tnt23
22.02.2019, 17:58
Надо где-то нарыть картинок от Океана, поупражняться с программированием конвертера для Ориона.

Глянь здесь - https://zx-pk.ru/threads/14176-kompyuter-quot-okean-240-quot.html?p=998053&viewfull=1#post998053

Denn
23.02.2019, 15:43
Глянь здесь - https://zx-pk.ru/threads/14176-kompyuter-quot-okean-240-quot.html?p=998053&viewfull=1#post998053

Но там не океановские картинки выложены. Я вывожу их напрямую на Орионе, и они с правильной ориентацией битов в байте, а по идее должно быть перевёрнуто.

ivagor
23.02.2019, 16:05
Но там не океановские картинки выложены. Я вывожу их напрямую на Орионе, и они с правильной ориентацией битов в байте, а по идее должно быть перевёрнуто.
Конвертер под специалист делал, я их при выводе переворачиваю. Если нужны океанские картинки, то можно просто сохранить экранную память в файл через отладчик, приложил архив.
Я, кстати, так БКшные картинки вытаскивал из эмулятора БК, чтобы их потом в эмуляторе океана смотреть. БК с океаном почти близнецы братья по графическим возможностям, даже пиксельклоки совпадают.

Denn
13.03.2019, 00:27
Если нужны океанские картинки, то можно просто сохранить экранную память в файл через отладчик, приложил архив.

Наконец-то удалось добраться до картинок. Вот что получилось на Орионе:

https://pp.userapi.com/c849036/v849036724/14a79f/lOQ8txC0NJM.jpg

https://pp.userapi.com/c849036/v849036724/14a7a7/rDl2rXfpHFU.jpg


Не пойму, верно или нет? Какая-то "расчёска" наблюдается, прямо как при некачественной оцифровке ТВ-сигнала на писи :)

Использую на Орионе режим №4, никакого спец преобразования цвета не делаю, только "реверс" битов (всех) и "расфасовка" FG и BG по страницам ОЗУ.
Картинку отцентрировал, по краям полоски - это артефакты от мусора в экранном ОЗУ от родного 16-цветного режима.

Код вывода:


; *** Загрузка экрана ПК "ОКЕАН-240" ***
;  (C) 2019 Denn /SPb/
; Версия: 1.0a

; Создано: 12.03.2019
; Изменено: 12.03.2019

mode 3 ; режим трансляции (1..3)
cpu 0 ; инструкции: 0=i8080, 1=z80
file LDSCR$ ; имя выходного файла
page 0 ; рабочая страница ОЗУ

@DEBUG:EQU 0 ; 1 - режим отладки программы

BUFFER:EQU 0
B_SCR: EQU 0C800h

SvBYTE:EQU 0F839h; запись байта в доп.стр. ОЗУ

ORG 8000h ; а/п программы

; настройка проверки аппаратной части:
HW_TYPE:EQU 0; 0 - без проверки платформы, 1 - Орион-128, 2 - Орион-ПРО
HW_RAM:EQU 0; 0 - без проверки об'ема ОЗУ, 1=64, 2=128, 4=256, 8=512 Кб ОЗУ требуется

; настройка проверки версии ОС:
OS_VERSION:EQU 39h; 0 - без проверки, иначе - требуемый номер версии

INCL START.L ; размещается в самом начале кода!


; *** Интерфейс п/п ОС DSDOS ***

INCL DSDOS.L
; консольный ввод-вывод
INCL CONIO.L
; файловая система, диски
INCL FILE.L


; *** Библиотеки ***

if @DEBUG
INCL DEBUG.L
endf


B_NAME:DB 'PARROTS '
;B_NAME:DB 'SHIP1 '


REVERT:
LXI D,BUFFER
MVI B,40h ; 20h
MVI L,0

MEMRV0:
LDAX D
MOV H,A
XRA A
DAD H
RAR
DAD H
RAR
DAD H
RAR
DAD H
RAR
DAD H
RAR
DAD H
RAR
DAD H
RAR
DAD H
RAR
STAX D
INR E
JNZ MEMRV0
INR D
DCR B
JNZ MEMRV0
RET


; *** Основной код программы ***

START:
LXI H,B_NAME
CALL SET_FILE_NAME
LXI H,BUFFER
LXI B,1
CALL FILE_LOAD
RC
CALL REVERT
CALL ShowIMG
MVI A,4
OUT 0F8h
JMP INPUT_KEY


ShowIMG:
LXI D,BUFFER
LXI H,B_SCR
MVI B,20h

ShowFG:
LDAX D
MOV M,A
INR E
INR L
JNZ ShowFG
INR H
INR D
INR D
DCR B
JNZ ShowFG

LXI D,BUFFER+0100h
LXI H,B_SCR
MVI B,20h

ShowBG:
LDAX D
MOV C,A
MVI A,1
CALL SvBYTE
INR E
INR L
JNZ ShowBG
INR H
INR D
INR D
DCR B
JNZ ShowBG
RET

END

ivagor
13.03.2019, 07:52
Не пойму, верно или нет?
Цвета перепутаны, красные строки надо поменять на зеленые.


Какая-то "расчёска" наблюдается
Это такой вариант конверсии. Более "традиционные" картинки можно брать на БК0010.

tnt23
13.03.2019, 13:14
Denn, как там процесс переноса "Тетриса" на Орион? :) а то скука заедает, начинаю отвлекаться.

68416

ivagor
13.03.2019, 13:48
Извините, я вклинюсь не про тетрис.
tnt23, если у тебя пока есть время и если в твоем океане работают магнитофонные вход и выход попробуешь загрузить/выгрузить? В emu я попробовал, выгружает и загружает рам-диск чуть больше чем за полторы минуты, это круто. Мне интересно, будет ли работать перекрестная загрузка, т.е. прочитает ли океан wav из эмулятора и прочитает ли emu океанский wav. Если нужен пример wav из emu, то попозже могу выложить (там на рам-диске только IBASIC).
И насчет картинки. Уже писал, но повторюсь, что RGBстрочный режим для океана еще круче выглядел бы в режиме 512, но отладить в эмуляторе без привязки к битам КСИ и ССИ такую штуку я не могу, тут слово за реальщиками.

tnt23
13.03.2019, 15:18
Мне интересно, будет ли работать перекрестная загрузка, т.е. прочитает ли океан wav из эмулятора и прочитает ли emu океанский wav. Если нужен пример wav из emu, то попозже могу выложить (там на рам-диске только IBASIC).

Давай попробую. Вывод на магнитофон у меня точно работает, а ввод не проверял.


RGBстрочный режим для океана еще круче выглядел бы в режиме 512, но отладить в эмуляторе без привязки к битам КСИ и ССИ такую штуку я не могу, тут слово за реальщиками.

Давай нетленку, потестим на реале. (Если в виде сорцов, то можно сделать файл для коллаборационизма тут - https://github.com/timtashpulatov/ok240)

Denn
13.03.2019, 16:24
Denn, как там процесс переноса "Тетриса" на Орион? :) а то скука заедает, начинаю отвлекаться.

Пока на паузе. Я тут занялся дизассемблированием монитора Океана, пока "весь там" :)

Тетрис добью, но позже.
Теперь хоть разобрался с экранной областью Океана. Можно хоть 100 раз читать доки, но вот пощупать живьём на Орионе - это для меня сразу понимание вопроса на 200%!

П.С. в ВК чёто игноришь меня.. =)

- - - Добавлено - - -


Извините, я вклинюсь не про тетрис.

Тоже извиняюсь... я тут создал группу (https://vk.com/ocean240) , пользуясь случаем приглашаю всех океанологов и им сочувствующих =)

ivagor
13.03.2019, 18:34
Denn, меня в соцсетях (кроме zx-pk.ru) нет.

Denn
13.03.2019, 18:56
Denn, меня в соцсетях (кроме zx-pk.ru) нет.

В группах СС очень удобно размещать и - главное - систематизировать информацию. Там автоматом бесплатный хостинг для картинок, схем, файлов, который не "протухнет" со временем. Очень просто и удобно выкладывать информацию.
На форуме очень сложно что-то находить, и со временем перестают работать ссылки на картинки, к сожалению.

tnt23
13.03.2019, 19:25
П.С. в ВК чёто игноришь меня.. =)

Дык я в ВК тоже нечасто бываю, сорян :)

Daniil Chislov 86
13.03.2019, 21:56
я в ВК тоже нечасто бываю
так мы тебе и поверили =) в 8 утра последий раз

простите за оффтоп