User Tag List

Страница 2 из 7 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 63

Тема: ChibiAkumas

  1. #11

    Регистрация
    25.08.2012
    Адрес
    г. Красноярск
    Сообщений
    1,245
    Спасибо Благодарностей отдано 
    343
    Спасибо Благодарностей получено 
    369
    Поблагодарили
    261 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    В PDP-11 есть регистры общего назначения R0-R5, и они чисто 16-битные. Даже если читать байт командой movb, то старший (знаковый) бит этого байта размножается на старший байт 16-битного регистра. Так что вся арифметика 16-битная, простого доступа к старшему байту регистров нет, можно только обменять байты регистра местами командой swab и замаскировать данные логическими операциями. Так что худо-бедно можно, но не фонтан.
    не совсем понимаю почему 16ти битная арифметика стала недостатком, проясните.
    Все о БК ДВК УКНЦ VAX Alpha

    Архив ПО для ретрокомпьютеров

    предоставляю бесплатный хостинг на PDP-11.RU для проектов о ретрокомпьютерах

  2. #12

    Регистрация
    05.04.2016
    Адрес
    г. Мончегорск, Мурманская обл.
    Сообщений
    414
    Спасибо Благодарностей отдано 
    98
    Спасибо Благодарностей получено 
    68
    Поблагодарили
    45 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SuperMax Посмотреть сообщение
    не совсем понимаю почему 16ти битная арифметика стала недостатком, проясните.
    У z80, да и у 8086 можно непосредственно модифицировать оба байта в слове, обращаясь к каждому из них как к отдельному регистру.

    А на PDP-11, чтобы изменить байт в регистре, при этом оставив старший байт неизменным, необходимо использовать пару команд
    Код:
    CLRB Rd
    BISB (Rs)+,Rd
    Так же необходимо выполнять команду SWAB чтобы получить доступ ко второму байту. И отлеживать где какой байт внутри регистра.
    Помимо оверхеда, это еще и не очень удобно.
    Добавляет неудобства ещё то, что в оригинале ChibiAkumas очень много самомодифицируещегося кода.

    Речь не о недостатках и преимуществах, а просто о том, насколько просто транслировать код одного процессора, в код другого.

    Этот пользователь поблагодарил randomizer за это полезное сообщение:

    Oleg N. Cher(31.03.2020)

  3. #13

    Регистрация
    25.08.2012
    Адрес
    г. Красноярск
    Сообщений
    1,245
    Спасибо Благодарностей отдано 
    343
    Спасибо Благодарностей получено 
    369
    Поблагодарили
    261 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от randomizer Посмотреть сообщение
    У z80, да и у 8086 можно непосредственно модифицировать оба байта в слове, обращаясь к каждому из них как к отдельному регистру.
    Речь не о недостатках и преимуществах, а просто о том, насколько просто транслировать код одного процессора, в код другого.
    теперь понятно. просто не надо "транслировать" - надо писать исходя из ассемблера PDP-11.
    я хорошо помню как я писал под x86 и переплевался от его убогости после PDP-11 тк мышление заточено под 16-ти разрядный процессор и его возможности.
    а вот если привыкнуть и осознать возможности - продукт будет получаться качественнее и легче ибо не будет натягивания совы на глобус.
    Все о БК ДВК УКНЦ VAX Alpha

    Архив ПО для ретрокомпьютеров

    предоставляю бесплатный хостинг на PDP-11.RU для проектов о ретрокомпьютерах

  4. #14

    Регистрация
    13.07.2018
    Адрес
    г. Переславль-Залесский
    Сообщений
    710
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    41 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Согласен на 100% с SuperMax.
    Плевался точно так же на x86...
    Код PDP-11 намного компактнее выходит.
    А уж что касается операционок на х86, так что-то подобное RSX-11 появилось как WIN NT и OS/2...
    Короче, я разбаловался на PDP-11
    Последний раз редактировалось Alex; 30.03.2020 в 17:35.

  5. #15

    Регистрация
    05.04.2016
    Адрес
    г. Мончегорск, Мурманская обл.
    Сообщений
    414
    Спасибо Благодарностей отдано 
    98
    Спасибо Благодарностей получено 
    68
    Поблагодарили
    45 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SuperMax Посмотреть сообщение
    теперь понятно. просто не надо "транслировать" - надо писать исходя из ассемблера PDP-11.
    Ну, как повелось, те кто знают как надо, не особо что-то делают

    А я в свое время загорелся повторить опыт Никиты по переносу игры со Спектрума на УКНЦ.
    Выбрал только Amstrad CPC, т.к. там есть четырехцветный видеорежим и конечно игры под него.
    Правда на ассемблере до этого не писал. Поэтому не было ни привычек, ни предпочтений.
    Изучал ассемблер сразу для двух разных процессоров. А потом читал на одном, писал на другом.
    То как надо, уже в процессе стало яснее ясного.

    И целом да, для PDP-11 код получается лаконичней. Но при работе с данными побайтово, появляются исключения.

    Эти 2 пользователя(ей) поблагодарили randomizer за это полезное сообщение:

    nzeemin(30.03.2020), Oleg N. Cher(31.03.2020)

  6. #16

    Регистрация
    13.07.2018
    Адрес
    г. Переславль-Залесский
    Сообщений
    710
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    41 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    С байтами надо правильно работать. Понимать, что алгоритм работы с байтом - затратен. Проще работать с последовательностью байтов в памяти, а регистр с хранением двух байт - нереален. Правильно один регистр в качестве указателя байтового, на объект второй как собственно аккумулятор для требуемых действий. И сразу не нужны никакие битовые операции для работы Хотя самый правильный способ, продумать алгоритм таким образом, чтобы работа именно с байтами была минимизирована. Стараться работать со словами. Всё будет сильно быстрее. Одна словная пересылка будет более чем в два раза шустрее, чем две байтовых ... На сколько именно - вопрос сложный. Зависит от конкретной модели процессора. Конечно, в алгоритм придётся изменения вносить

    Этот пользователь поблагодарил Alex за это полезное сообщение:

    randomizer(24.07.2022)

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17

    Регистрация
    05.04.2016
    Адрес
    г. Мончегорск, Мурманская обл.
    Сообщений
    414
    Спасибо Благодарностей отдано 
    98
    Спасибо Благодарностей получено 
    68
    Поблагодарили
    45 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прошло каких то пару лет, и большая часть движка игры реализована)
    демо с первым уровнем
    Управление курсорными клавишами, и УПР - смартбомба, F и Y стрельба.
    Помню что выбирал клавиши так, чтобы из коды отпускания не пересекались.

    Звук только на AY, используются два чипа, один для музыки, второй для звуковых эффектов.
    Но в этой сборке отправка данный на AY выключена.
    Только сейчас подумал, что можно же было автообнаружение звуковой платы сделать

    Движок игры получился 6Кб, прям идельно помещается в области памяти выше 56К.
    Пробовал его туда переместить, сразу заметно так игра ускоряется. Так что очень сложно играть становится.
    Замерял сколько времени требуется чтобы пролистать весь уровень, получилось что с движком в доп. памяти, уровень прокручивается на 30% быстрее.
    Большой соблазн его там и оставить. Сразу память появляется под второй кадр для всех спрайтов, да и маска для затирания фона влезет)
    Но в эмуляторе нет поддержки доп. памяти.

    Кстати, толи это проблема QT версии эмулятора (на другой не проверял), толи ещё что.
    Когда удерживаешь клавишу, примерно через секунду регистрируется её отпускание, хотя она по прежнему нажата.
    На реальном машине всё четко работает.

    И опять же, только в эмуляторе, бывает что возникает ошибка загрузка данных с диска с кодом
    102 "Не найден сектор с заданным номером"

    Причём чтобы убрать эту ошибку, достаточно увеличить размер блока данных на одно слово.
    При этом количество занимаемых блоком данных секторов не меняется.
    Да, и чтобы убрать эту ошибку, я увеличиваю размер на одно слово не загружаемого блока данных, а того, который загружается перед ним.
    Т.е. сначала загружается движок игры, а потом сразу же за ним уровень игры.
    Эта ошибка возникает при загрузке уровня, а чтобы её убрать, увеличиваю размер движка на одно слово.
    А на реальной машине всё норм.
    aberrant_hacker

    Эти 3 пользователя(ей) поблагодарили randomizer за это полезное сообщение:

    nzeemin(17.07.2022), Oleg N. Cher(19.07.2022), SuperMax(18.07.2022)

  9. #18

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,386
    Спасибо Благодарностей отдано 
    1,700
    Спасибо Благодарностей получено 
    2,217
    Поблагодарили
    871 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от randomizer Посмотреть сообщение
    Прошло каких то пару лет, и большая часть движка игры реализована)
    демо с первым уровнем
    А можно сразу скриншоты для ознакомления или же видео на ютубе?

  10. #19

    Регистрация
    05.04.2016
    Адрес
    г. Мончегорск, Мурманская обл.
    Сообщений
    414
    Спасибо Благодарностей отдано 
    98
    Спасибо Благодарностей получено 
    68
    Поблагодарили
    45 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так она прекрасно рабоет в эмуляторе, для ознакомления)

    А если интересно как она работает на реальном железе с движком в доп. памяти, то вот.
    aberrant_hacker

  11. #20

    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    1,410
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    178
    Поблагодарили
    138 сообщений
    Mentioned
    21 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от randomizer Посмотреть сообщение
    Так она прекрасно рабоет в эмуляторе, для ознакомления)

    А если интересно как она работает на реальном железе с движком в доп. памяти, то вот.
    Спектрум какой-то.
    БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO

Страница 2 из 7 ПерваяПервая 123456 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •