Разработка и ромхакинг > Ромхакинг
GINCS Studio
3DSchumacher:
GINCS Studio - бесплатная полнофункциональная среда разработки текстовых приключений для SEGA Megadrive/Genesis с использованием движка GINCS. Я написал эту программу для облегчения страданий при портировании The Longest Journey. Сначала мучался с Notepad++, затем написал свою кастомную подсветку синтаксиса к Visual Studio 10, но это все было не то, одни костыли. Потому решился замутить свою IDE под GINCS, с подсветкой и кейвордами ;)
Это первая версия программы, в ней присутствуют недоработки, возможны ошибки и т.д, но уже сейчас в ней можно заниматься созданием полноценных игр.
Особенности программы:
* Создание нового пустого проекта со всей необходимой структурой и файлами
* Загрузка существующего проекта целиком
* Подсветка синтаксиса в скриптах
* Создание новых скриптов с автоматическим добавлением их в проект
* Удаление скриптов из проекта
* Список использованных меток в текущем скрипте с быстрым переходом к метке по двойному клику на ней
* Список использованных триггеров (не завершено, пока только отображение без сортировки и фильтрации/навигации)
* Дерево всего проекта слева
* Встроенный просмотрщик (двойной клик на изображении) и конвертер PCX файлов (использован сторонний Irfan View)
* Моментальная компиляция и запуск проекта прямо в студии (использован сторонний эмулятор Kega Fusion)
Системные требования:
* .NET Framework 4.0
* Microsoft Windows XP SP3 (32-bit and 64-bit* editions), Microsoft Windows Vista SP2 (32-bit and 64-bit* editions), Windows 7 (32-bit and 64-bit* editions), Windows 8 (32-bit and 64-bit* editions)
* 10 Мб свободного места на диске.
* Обязательное отсутствие пробелов в пути к папке с программой. Для тех, кто в танке, поясняю: это значит нельзя запускать с рабочего стола. Желательно копировать папку в корень диска (недоработка сборщика движка GINCS)
* - компиляция и запуск проекта в х64 системах пока невозможен, особенность GINCS. Возможно кто-то возьмется перекомпилировать сборщик под х64. Но вы всегда можете скомпилировать проект в виртуальной машине.
Скриншот:
Скачать можно тут: http://emulation.at.ua/publ/developing/sega_megadrive_genesis/gincs_studio/11-1-0-71
Размер: 3.5 Мб
Ti_:
--- Цитата: 3DSchumacher от 22 Ноября 2013, 13:02:17 ---но без всинк "рвет" не очень красиво (иногда)
--- Конец цитаты ---
Ну вот смотри:
Лог-файл эмулятора (1кадр). Лог начинается с начала кадра.
Vblank начинается тут:
строка: 4965
--- Код: ---00:0364 52 B9 ADDQ.L #1,($00FF97D6)
--- Конец кода ---
Собственный обработчик vblank в гинце (мне казалось его нету вообще).
Заканчивается тут: строка 5041:
--- Цитата ---00:037E 4E 73 RTE
--- Конец цитаты ---
После этого сразу запускается, та самая функция: 00:0C98. То есть некий всинк есть.
К сожалению и лог сам эмулятор тоже выдает через Ж (вырезаются тонны повторных команд). Но её можно увидеть по и много в начале файла и до 633.
--- Код: ---00:0D00 38 80 MOVE.W D0,(A4)
--- Конец кода ---
а ещё тут тоже что-то пишет 2001 - уже в середине файла(кадра)
--- Код: --- 00:079E 38 90 MOVE.W (A0),(A4)
--- Конец кода ---
А ещё можно заметить что какой-то придурок, включил строчное прервыние, которое по всему логу тоже есть.
--- Код: ---00:0362 4E 73 RTE
--- Конец кода ---
- видать чтобы ещё тормозов добавить.
3DSchumacher:
Действительно. Но как-то этот его обработчик вбланк не совсем удачно работает. Точнее выходит, что всинк какбэ работает, но кадр все равно отрисовывается с произвольной позиции, где успело, там и начало. А начиная рисовать, допустим, со средины кадра, вся верняя его половина соответственно превращается в один огромноый артефакт аж пока его не перерисует в следующем кадре, да и то, если успеет. Прерывание строчное отключить не проблема, хотя врят-ли это сильно улучшит ситуацию.
Ti_:
--- Цитата: 3DSchumacher от 22 Ноября 2013, 14:12:59 ---Действительно. Но как-то этот его обработчик вбланк не совсем удачно работает. Точнее выходит, что всинк какбэ работает, но кадр все равно отрисовывается с произвольной позиции, где успело, там и начало.
--- Конец цитаты ---
Обработчик обратывает своё, то что ему нужно. Что именно ведемо только Гарольдо. А заканчивает свои дела уже ближе к концу vblank'а. Пересылка же картинки получается после него - небольшой кусок оставшегося vblank + всё остальное уже во время отрисовки экрана и очень долго не менее 1/3.
3DSchumacher:
Хм... надо попробовать поставить там джамп и посмотреть что будет без этого "обработчика"...
Ti_:
--- Цитата: 3DSchumacher от 22 Ноября 2013, 14:42:16 ---Хм... надо попробовать поставить там джамп и посмотреть что будет без этого "обработчика"...
--- Конец цитаты ---
Надо прописать по 0x36A - 4e73 (rte), возврат , а не джамп.
3DSchumacher:
кака была кака есть, отличий не заметил. Ща посложнее анимацию замучу
Добавлено позже:
Вот пожатая: http://emulation.at.ua/smd/developing/gincs_big_animation_compressed.zip
Вот непожатая: http://emulation.at.ua/smd/developing/gincs_big_animation_noncompressed.zip
артефачат обе атомно, не смотря на то, что все кадры в непожатом виде укладываются в 5 кб
Ti_:
--- Цитата: 3DSchumacher от 22 Ноября 2013, 14:56:00 ---артефачат обе атомно, не смотря на то, что все кадры в непожатом виде укладываются в 5 кб
--- Конец цитаты ---
Ну, во-первых 5кб это с dma. 'Процессорно' будет в 2раза меньше, около 2-3кб, и то при том, что каждая строчка будет этим заниматься, например каждая строчка перекидывает 4 байта :
--- Код: ---lea $c00000,a1 ; vdp data
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
move.l (a0)+,(a1)
и т.д.
--- Конец кода ---
В гинце же это выглядит так, всего 1 строчка перекидывает 2 байта (0xD00), остальные вспомогательно (всякие там счётчики размеров карты, циклы, сброс адреса после каждого ряда и прочее) :
--- Код: ---ROM:00000CAA next_column: ; CODE XREF: sub_0_C98+74j
ROM:00000CAA cmp.w arg_6(a6),d4
ROM:00000CAE beq.s loc_0_D0E
ROM:00000CB0 move.w d6,d0
ROM:00000CB2 mulu.w (word_0_FF97D4).l,d0
ROM:00000CB8 add.w arg_0(a6),d0
ROM:00000CBC lsl.w #1,d0
ROM:00000CBE add.w arg_C(a6),d0
ROM:00000CC2 moveq #0,d1
ROM:00000CC4 move.w d0,d1
ROM:00000CC6 move.l d1,d3
ROM:00000CC8 movea.l #$C00004,a3
ROM:00000CCE move.l d3,d0
ROM:00000CD0 and.l #$3FFF,d0
ROM:00000CD6 add.l #$4000,d0
ROM:00000CDC moveq #$10,d1
ROM:00000CDE lsl.l d1,d0
ROM:00000CE0 move.l d3,d1
ROM:00000CE2 moveq #$E,d2
ROM:00000CE4 lsr.l d2,d1
ROM:00000CE6 add.l d1,d0
ROM:00000CE8 move.l d0,(a3)
ROM:00000CEA movea.l #$C00000,a4
ROM:00000CF0 moveq #0,d5
ROM:00000CF2
ROM:00000CF2 write_line: ; CODE XREF: sub_0_C98+6Ej
ROM:00000CF2 cmp.w arg_4(a6),d5
ROM:00000CF6 beq.s loc_0_D08
ROM:00000CF8 movea.l d7,a0
ROM:00000CFA move.w (a0),d0
ROM:00000CFC add.w arg_E(a6),d0
ROM:00000D00 move.w d0,(a4) ; vdp_data
ROM:00000D02 addq.l #2,d7
ROM:00000D04 addq.w #1,d5
ROM:00000D06 bra.s write_line
ROM:00000D08 ; ---------------------------------------------------------------------------
ROM:00000D08
ROM:00000D08 loc_0_D08: ; CODE XREF: sub_0_C98+5Ej
ROM:00000D08 addq.w #1,d6
ROM:00000D0A addq.w #1,d4
ROM:00000D0C bra.s next_column
--- Конец кода ---
Sprill:
Жаль, что нельзя сделать больше цветов в шрифте. Тогда можно было бы сделать иконки предметов, благо в файле FONT полно не нужных символов. Что-то типа этого:
Ti_:
--- Цитата: Sprill от 23 Ноября 2013, 18:55:38 ---Жаль, что нельзя сделать больше цветов в шрифте. Тогда можно было бы сделать иконки предметов, благо в файле FONT полно не нужных символов. Что-то типа этого:
--- Конец цитаты ---
Хм, а что собственно мешает сделать больше?
3DSchumacher:
ну шрифт однобитный подгружается. Мешает, как обычно, необходимость переписывать гинкс :)
TiberiyLTim:
Sprill, Так можно сделать и без изменения шрифта - просто задник делай ниже и на каждом фоне рисуй иконки в цветах фона. Либо делай монохромные.
Sprill:
--- Цитата: TiberiyLTim от 24 Ноября 2013, 18:39:46 ---Либо делай монохромные.
--- Конец цитаты ---
Скорее всего так и сделают...
Sprill:
Не большая информация по поводу Broken Sword'a: работа идет, но из-за малого количества времени + ещё моя лень, говоря честно, даже не могу точно сказать, когда будет первая версия. Скорее всего январь/февраль следующего года, но не обещаю. Поскольку игра не разбита на этапы/эпизоды, я разобью её приблизительно на 10 или 12 эпизодов. Первый закончится после того, как Джордж спустится в канализацию. После прохождение каждого эпизода, будет выдаваться пароль. Сейчас игра ест 1мб и это только 15-процентов готовой игры. Надеюсь, что всё поместится в 4мб.
Sprill:
3DSchumacher, хочу спросить: планируешь ли сделать команду, как обратный отсчёт? В сломанном мече есть моменты, когда нужно успеть сделать что-то за определённое время. Например: отнести предмет в определённое место как можно быстрее. Если не успел - ничего не получится.
3DSchumacher:
Sprill, нет, никаких существенных изменений в gincs больше не планируется.
По поводу моего бесконечного путешествия: вчера прилетел из тайланда, сутки спал, теперь активно взялся за допиливание. Идет работа со звуками. По сути игра уже давно на финишной прямой, но эта прямая оказалась очень длинной :). Из-за нововведений в гинкс пришлось переписать с нуля большую часть скриптов...
3DSchumacher:
Потихоньку возвращаюсь к разработке Longest Journey, GINCS и B.O.S.S. Думаю, никому не надо объяснять, чем мы все тут в Украине были заняты последние три месяца (ребята Небесной Сотни, мы не забудем)... теперь появилось свободное время... просто решил написать тут, что ничего не заброшено, все проекты расконсервированы, возвращаемся в нормальное русло и рабочий график
TiberiyLTim:
Ждём обновлений среды и ещё больше движка!
lupus:
3DSchumacher, героям слава.
lupus:
Судя по всему, Гарольд воодушевился интересом к GINCS и решил запилить нечто подобное для sms:
http://pscd.ru/news/2320-sozdanie-igr-na-sega-master-system.html
cptPauer:
Держу пари, русских квестов под такой движок не будет. Популярность SMS на просторах СНГ - никакая.
Навигация
Перейти к полной версии