С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Titus, процитирую сам себя "интересно и полезно" и я надеюсь не только мне. Для меня это достаточная мотивация, учитывая свободное время которое есть у меня.
Я слышал что у каких-то паскальных средств разработки на УКНЦ поддержан режим работы с графикой. Про С я ничего такого не слышал и если их нет, то и смысла особого не вижу (!разработать самому средство разработки! да еще чтоб потом тормозило...)
Я думаю, когда начну код выкладывать, народ что нибудь начнет советовать/комментировать..
Последний раз редактировалось mbojenov; 05.02.2013 в 13:47.
ZX Evolution
На УК-НЦ, так-же как и на ДВК (PDP) - есть несколько вариантов транслятора программ написанных на паскале в ассемблер - это файл PASCAL.SAV
Исходник с расширением .PAS транслируется командой
с системного устройства: PASCAL <OUTFILE>=<INPUTFILE>
на выходе получаем OUTFILE.MAC (только если errors = 0 )
который после прогона через транслятор Ассемблера MACRO.SAV
командой MAC OUTFILE
получаем файл с расширением .OBJ (независимо от количества ошибок)
Который нужно скомпилировать в исполняемый, соединив его с библиотекой
языка ПАСКАЛЬ _ PASCAL.OBJ
с помощью файла LINK.SAV
LIN OUTFILE,PASCAL (так-же через запятую указываются другие необходимые
для компиляции объектные библиотеки процедур и функций)
Спрайты в ПАСКАЛЕ.
Было (есть) два готовых решения для работы со спрайтами.
Первое на базе загрузчика UKLOAD - может и удобное - никогда не пользовался
Зеленоградцы написали свой движок и прибавили к нему граф.редактор спрайтов.
Этот вариант утерян и пока не обнаружен (даже частично). При написании игры (своей) я использовал второй вариант, но у меня там скроллинг был реализован в рамках пошаговой стратегии, что не требовало особой динамики, только что-бы
обеспечить обзор карты. УК-НЦ спрайты рисует быстро (прямоугольники). Опять таки есть всякие хитрости (вроде как). Зеленоградский движок не требовал предварительно запускать или загружать каких-то программ в память ПП, то есть был "честным", второй момент - самое "выгодное" в плане быстродействия графики, это режим экрана (текстового) 40x24. Был так-же разработан шаблон - минимальной программы на ассемблере, где помимо процедур и функций чисто графических, добавлялись удобные с параметрами МАКРОСЫ для смены страниц и планов, установки палитры, вывод спрайтов, работа с клавиатурой, проигрывание муз.(НОТ). Как-то так.
---------- Post added at 14:43 ---------- Previous post was at 14:34 ----------
ДА! Оптимальные размеры прямоугольника - любые значение кратные 8 )
Последний раз редактировалось hobot; 05.02.2013 в 14:38.
Его надо еще приводить в человеческий вид, оптимизировать под архитектуру без индексной адресации. Я пока сам его не запущу, никому не дам:
Я думаю, что вам не много будет пользы от такого ужаса:
Скрытый текст
Код:void sub_BB9B() { for(x=8; x != 0xFF; x--) { // LDX #8 loc_BB9D: m.byte_8 = x; // STX m.byte_8 a = (&m.byte_2A)[x]; // LDA m.byte_2A,X if(a==0) continue; // BEQ loc_BBF9 if(a & 0x80) { // ASL A BCC loc_BBAC void sub_BAC8(); sub_BAC8(); // JSR sub_BAC8 continue; // JMP loc_BBF9 } // loc_BBAC: y = (&m.byte_2A)[x] - 1; // LDY m.byte_2A,X DEY if(y != 0) { // BEQ loc_BBCE (&m.byte_2A)[x]++; // INC m.byte_2A,X add16((&m.byte_93)[x], (&m.byte_7A)[x], m.byte_775, 0); // LDA m.byte_93,X CLC ADC m.byte_775 STA m.byte_93,X LDA m.byte_7A,X ADC #0 STA m.byte_7A,X a = (&m.byte_2A)[x]; // LDA m.byte_2A,X if(a != 0x30) goto loc_BBED; // CMP #$30 BNE loc_BBED (&m.byte_2A)[x] = 0; // LDA #0 STA m.byte_2A,X continue; // JMP loc_BBF9 } // loc_BBCE: x += 0xD; // TXA CLC ADC #$D TAX m.byte_0 = 0x50; // LDA #$50 STA m.byte_0 m.byte_2 = 6; // LDA #6 STA m.byte_2 m.byte_1 = 3; // LSR A STA m.byte_1 a = 0; // LDA #0 void subx_BFDC(); subx_BFDC(); // JSR subx_BFDC x = m.byte_8; // LDX m.byte_8 a = (&m.byte_AC)[x]; // LDA m.byte_AC,X if(a == 5) (&m.byte_2A)[x]++; // CMP #5 BNE loc_BBED INC m.byte_2A,X loc_BBED: loc_BBED: void loc_F14F(); loc_F14F(); // JSR loc_F14F void sub_F1A2(); sub_F1A2(); // JSR sub_F1A2 void sub_E23E(); sub_E23E(); // JSR sub_E23E void loc_E68D(); loc_E68D(); // JSR loc_E68D } // loc_BBF9: DEX BPL loc_BB9D } // RTS void hideAllSprites_8220() { y = 0; // LDY #0 void hideAllSprites_int_8225(); hideAllSprites_int_8225(); // BIT m.byte_4A0 => continue } void hide1toFFsprites_8223() { y = 4; void hideAllSprites_int_8225(); hideAllSprites_int_8225(); // continue } // Установка для всех спрайтов координаты Y равной 248 (а высота экрана 240) void hideAllSprites_int_8225() { a = 0xF8; // LDA #$F8 do { // loc_8227: (&m.sprite_y_200)[y] = a; // STA $200,Y y += 4; // INY INY INY INY } while(y!=0); // BNE loc_8227 } // RTS[свернуть]
Музыкальную часть я кстати уже перевел на 8080 и выложил в раздел Апогея, если что.
Последний раз редактировалось vinxru; 05.02.2013 в 15:43.
Последний раз редактировалось palsw; 05.02.2013 в 16:39.
Радио-Губитель Канал на YouTube
Оригинальный Марио - это старые всем знакомые уровни, поведение монстров, управление, музыка, дохрена уровней всё это в 32 Кб исходного кода и 16 Кб графики.
---------- Post added at 14:53 ---------- Previous post was at 14:52 ----------
Казалось бы, любой компьютер с ОЗУ 48 Кб смог бы потянуть эту игру.
Нет скролла, ну и фиг с ним. Можно поэкранно переключаться.
---------- Post added at 15:01 ---------- Previous post was at 14:53 ----------
Игра изнутри похожа на архиватор. Все уровни игры бы не влезли в память, поэтому уровни описываются кодом (формулами). И уровень может генерироваться только слева на право. Именно поэтому в Марио нельзя ходить назад.
Кстати говоря, если уж в этой теме зашёл разговор о портировании игр на УК-НЦ,
хотелось бы спросить у профи, программистов, насколько возможно в теории перенести различные версии Lode Runner c БК0010 на УК-НЦ ?
Спасибо! )
Да клад и перенесли и свою версию сделали! Что замечательно.
Переносить нужно как Клад, без всяких эмуляторов - там есть на одной из
дискет New_Lode - Titus утверждает, что можно играть в ч\б.
Но мой опыт показывает обратное - играть невозможно по причине например того,
что реакция на кнопки там слишком тормозная.
Это было-бы конечно просто супер иметь отдельные LR.SAV и прочие вариации,
что бы чисто из под системы запускать! )
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)