Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - m4x1k

Страницы: [1] 2 Далее
1
Прогресс ~60-70%. Извиняюсь, что не отвечаю, сами можете посмотреть, что пишут одно и то же. :neznayu:
К сожалению, всё как у всех. Начинал, когда я был свободен и молоден, сейчас я семеен и стар. Проблем никаких нет, только время/желание. Я сам очень мечтаю всё доделать, постараюсь никого не разочаровать. :)

2
Извиняюсь, что редко пишу здесь, стараюсь, чтобы тема не поднималась, пока не появится каких-либо больших новостей.

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

Последние новости:
— Планируется две версии: с полной озвучкой (очень постараюсь без колхоза) и с субтитрами для тех, кто ценит оригинальную озвучку (пока что без портретов персонажей). К сожалению, очень тяжело в удобоваримом виде оставить и текст, и портреты персонажей — внешний вид меня мало устраивает.

— Доломал ещё немного игру:
Разобрался с графикой. Там, где нужно, будет перевод текстур. Опционально в патче добавлю отмену цензуры, хоть её там и не много.
Отыскал рутину ввода текста с клавиатуры, есть вариант теперь и русскую, и английскую раскладки осуществить, но, скорее всего, остановлюсь только на русской раскладке, т. к. английская, как оказалось, и не требуется.
Разобрался с аудиоформатом, русская озвучка будет звучать немного более качественнее на выходе.
——
По переводу спорных названий, для тех, кто играл и желает помочь:


Это то, что вспомнил. Извините, что так долго всё. Если перевод ждут, то это лучшая мотивация для меня. Надеюсь, когда перевод выйдет, он вас не разочарует.


3
Кто-нибудь может помочь с информацией: как проще всего можно реализовать похожий фильтр голоса (роботизированный), который в игре у Метал Гира?

4
Ogr, я это и говорю. Как оно реализовано? Текстовое окно ведь затирает карту поверх, получается. То есть, на выходе из текстового окна весь план отрисовывается заново, чтобы вернуть, как было?

5
Объясните, пожалуйста, как реализовывается вывод текста, когда оба плана заняты графикой:
В моём случае интересует Phantasy Star II, оба плана уходят на отрисовку графики, но при нажатии на кнопку на план А рисуется меню с текстом, которое рисуется поверх плана А и Б, и которое в последствии легко убирается. Выглядит так, словно рисуется третий план, и, вроде бы, это не WINDOW. Как оно работает? :?

Приложил скрин. Plan A отрисовывает землю, Plab B отрисовывает объекты, которые могут быть поверх персонажей (дома, вывески и прочее).

6
Со шрифтом сейчас проблем нет. :neznayu: Есть весь алфавит Английский + Русский. Проблема лишь во времени. Из технических проблем: я пока что не дошёл до компьютера в игре, где нужно будет с виртуальной клавиатуры вводить данные. Пока не решил, как оно будет: ввод с английской раскладки или русской. И в том, и в том виде есть проблемы. Идеально сделать два набора, но, опять же, пока что не дошёл до этого момента.

По поводу озвучки: я это всерьёз рассматриваю. Естественно, без колхоза. Но это будет в самом конце дела.

7
m4x1k, ручками нужно делать, как в оригинальном Sonic, например. Никакой поддержки от SGDK. Видел объяснения несколько раз с картинками (это не специфично только для SGDK), суть в перезаписи столбцов/строк перед камерой. В Sonic записываются толщиной 2 тайла (16 пикселей), наверно для эффективности. На картинке зелёная область - экран, по центру - то, что было позади.
(Ссылка на вложение)
Я смотрел когда-то этот пример: Scrolling Map Demo (github), но что-то там было криво сделано, наверно обращение за пределы памяти, что видно в Plane Explorer/Viewer эмулятора. Кроме того, там тайлы/карта/палитры заданы в коде. Я делал загрузку прямо из Image (png), но для эффективности приходилось убирать сжатие, что увеличивало размеры рома. Как уже выше писал, к сожалению не знаю как просто сжимать только тайлы, без карты.
Спасибо большое. С сжатием, да, не ясно, почему карты RESCOMP до сих пор не поддерживает. Ни отдельно не загрузить, ни сжатие произвольно не выставить.

8
Sharpnull, понял, спасибо. А как можно реализовать динамическую подгрузку карты? Есть, к примеру, карта 128/128. План выставлен как 64/32. Карта грузится сразу целой (128/128) и постепенно смещается, или нужно разбивать карту на несколько отрезков (по 32/32) и загружать целиком каждый раз? Как это происходит в SGDK? Есть ли пример со скроллингом и подгрузкой у кого-нибудь?

9
Sharpnull, имелось ввиду именно редактор. Попробую Tiled, спасибо. :)
Объясните ещё нубу: вот имеется спрайт на экране, у него фиксированное поле 512х512. Есть ещё 20 спрайтов/npc. Если я скроллю экран и хочу, чтобы двигался только основной персонаж, то мне нужно каждому спрайту npc выравнивать координаты, чтобы он остался на фиксированной точке, всё верно? Или есть иной способ?

10
Ответ самого разработчика такой был:
Цитата
SGDK does not support C++ as it requires more binaries and libraries to get it work (actually a lot more). I always wanted to maintain SGDK size to the strict minimum requirement, also C++ add some overhead which might hurt for megadrive development...
Still i agree it would be nice to have C++ (and so OO programming) support, that may be something to thing about... I believe Chilly Willy already got C++ support on with 68k targeted gcc and he reported overhead was not that heavy. Problem is that i really want to stay on gcc 3.4.6 for SGDK as newers version are really awful in term of code generation for 68k target.

Я сам всю жизнь C++ изучал, никаких проблем с SGDK пока не встретил.

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

11
По ходу изучаю ещё вывод спрайтов. Подскажите, как обозначать коллизии бэкграунда для объекта? К примеру есть тайл-спрайт. Он двигается по плану и при встрече определённого тайла он туда не может пройти. Как это реализуется? Сам принцип понимаю, в массиве делаем для всей карты значения 0/1, где 0 идти нельзя, 1 можно. Но как вот само «заграждение» для движущего спрайта выставить?

if (colission == 0)
{
    //Спрайт упирается в стену.
}

Вот, как логику красного выражения можно записать? Не нашёл примеров, к сожалению.( На примере Соника просто выставлена граница экрана, он в неё упирается. А нужно, к примеру, произвольно карту коллизий (платформы, препятствия).

12
Там админ со своими тараканами. Я читал, что он с соплями удалял сайт, потом возвращал.
Sharpnull, у меня тоже что-то писал про бан, я подумал, что глюк какой-то. Но бана не было. На почту пришло сообщение, что нужна ручная активация от админа. А пока — на форум хочешь зайти, пишет то же самое. Писал по почте админу тоже — ноль внимания. Потом залез в тему:
http://gendev.spritesmind.net/forum/viewtopic.php?f=1&t=2594
и понял, что у Админа тамошнего точно есть какая-то особая любовь к вновьприбывшим. Вкратце: «Я сделал, а вы не цените». И это он писал, что основным приоритетом форума является разработка новых игр. А вот Stef как раз наоборот — постоянно отписывается в темах и помогает людям.

13
m4x1k, я об этом и говорил. Например из sgdk\sample\sprite:
    while (TRUE) {
        handleInput();

        updatePhysic(); // Внутри updateCamera() -> VDP_setHorizontalScroll(PLAN_A, fix32ToInt(-camposx));
        updateAnim();

        SPR_update();

        VDP_waitVSync();
    }
Анимация фона делается например так:
static u8 counter = 0; // Может быть общим для нескольких анимаций
void updateBGAnim(void)
{
    counter++;
    // Каждый 4-й кадр будет выполняться
    // ... или дробный счётчик
    if (!(counter & 0x3)) {
        // Анимация фона
    }
}

...
while(TRUE) {
    handleInput();

    updatePhysics();
    updateBGAnim();

    VDP_waitVSync();
}
Можно сделать и сложные системы событий. Вопрос, опять же, общий структурный, а не специфичный только для SGDK.
VDP_fade() работает также: VDP_initFading() инициализирует начальные значения, а на каждой итерации (если не async) while (VDP_doFadingStep()); обработка для одного кадра, где смещается цвет (есть свой счётчик шагов), внутри вызывается VDP_waitVSync(), чтобы дождаться VBLANK, следующего кадра.
Кстати, VDP_setHorizontalScroll()/VDP_setVerticalScroll() вроде стоит вызывать сразу после VDP_waitVSync(), может быть разрыв кадра. VDP_fade() тоже делает изменение CRAM (палитры) после VDP_waitVSync().
Вроде бы дошло, наконец. Для подобного нужно создать отдельные общие функции тех же скроллинга и анимации и уже из других подфункций по надобности вызывать их. Всё правильно понял?

Сегодня буду скроллинг переписывать. Я там его по куче раз вызываю, действительно ведь нораздо легче общую функцию написать было...

Спасибо огромное. :)

Я зарегистрировался неделю назад на spritesminds, но там мне не подтвердили регистрацию. Либо забили, забыли, либо ещё что-то. :neznayu: Так бы там тоже людей можно было подоставать вопросами, а больше и мест-то нет в интернете...

14
Возможно, не так описал.

Вкратце:
int main()
{
     //Вызываю первую функцию.
     FUNKTION1();
}
static void FUNKTION1()
{
     while (1)
     {
          В функции задаю скроллинг экрана.
          VDP_setHorizontalScroll(PLAN_B, X--);


          //Если позиция -300, то выводим текст.
          if (X == -300)

          {
                   for (int i = 0; i < 128; i++)
                  {
                         ОБРАБАТЫВАЕМ СИМВОЛ;
                         ВЫВОДИМ СИМВОЛ;
                         ТАЙМЕР 2МС;
                  }

          }
     }

}

Вот такого плана действие. Смысл в том, что пока идёт красный цикл, то основной цикл в ступоре. Мне же нужно, чтобы всё работало равномерно. Похожее действие выполняет функция VDP_fadeIn -- она не ждёт своего завершения, а начинает фейдинг совместно с последующим действием в программе. Я просто не встречался до этого с такой проблемой, но мне кажется, что я совсем глупый вопрос задаю, возможно, он даже не решаем и я не могу делать так, как описано в примере. :neznayu:
------------------
Решил проблему передачей функции значения скроллинга. Если 0, не скроллим, если иное, то продолжаем скроллинг в новой функции. Но проблему это решает только со скроллингом. С анимацией заднего фона такие же проблемы будут.

15
Посмотрел. Почему ты думаешь, что медленно? К примеру, если выводить как в игрушках, на диалоговое окно, где 3 символа в высоту -- будет моментально. Код не маленький. :-\
Спасибо, постараюсь что-нибудь подчерпнуть.

Добавлено позже:
А как в SGDK сделать непрерывное выполнение одной функции из другой? Немного не понимаю самого процесса, возможно, я даже глупость спрашиваю, объясню подробнее.
Есть функция, вызванная из main, в ней план, который в цикле скроллится от координаты 0 до 100. В этом же цикле проверяем равняется ли координата 50, если равна, то запускаем функцию вывода текста. Функция текста в свою очередь выводит символы с паузой в 20мс. И в момент вывода текста стопорится скроллинг плана, пока вся функция вывода текста не завершится, при этом музыка, к примеру, продолжит играть. Как можно хотя бы в теории организовать одновременное выполнение подобных функций? :neznayu:

16
Начинал делать порт одной текстовой игры, сделал вывод текста со сглаживанием через копирование отдельных символов в тайлы. Главная проблема - медленно, полное заполнение экрана текста заметно (заполнял построчно), хотя можно отображать весь экран после заполнения VRAM, главное чтобы видеопамяти хватило. Задача несложная, но есть коварные моменты. Могу скинуть позже, только код не очень.
Со сглаживанием — это как?
Я начал писать свой вывод, но с удовольствием посмотрю твой выход в данной ситуации. Я делаю через битовое смещение тайла, вроде со всем разобрался, осталось всю математику только написать. :neznayu: В планах хочу сделать функцию, которая будет выводить текст на экран с большим выбором плюшек. Очень удивился, когда узнал, что только в Pier Solar запарились с подобным. Ведь подобное не только экономит место для большего вывода символов на экране, но и экономит место в видеопамяти: не нужно хранить целый шрифт, только те данные, которые будут использованы.

Хотел уточнить по поводу PLAN_WINDOW — какой смысл в нём вообще, если это тот же PLAN_A? У меня на окне почему-то не работает прозрачность — вместо прозрачности выводит цвет заднего фона PLAN_B. И вывод работает тоже как-то коряво. Карта 128х32 и PLAN_WINDOW при этом выводит на себя данные немного иначе, начинает затрагивать область за границей экрана, хотя код выводит только в пределах границ. С PLAN_A работает как надо. 

17
Подскажите, как работать с сырыми данными, которые через Rescomp (BIN) грузишь? Как он записывается?
Я загружаю в него данные (шрифт), затем мне нужно разбить всё это добро на массив по 32 байта (тайл 8 на 8). Как обращаться к этим данным?

Сперва пытался организовать это через TILESET, но так и не смог понять, как присвоить в массив определённый тайл, не загружая весь тайлсет в VRAM.

Помогите советом.

Какая-то хрень получается. Через Tileset делаю всё верно, но выходит ошибка.
Обозначаю ресурс:
TILESET vwf_font "gfx/font.bmp" NONE
Создаю переменную массива.
        u32 myTiles[2][8]=
        {{
            0x00000000,
            0x00000000,
            0x00000000,
            0x00000000,
            0x00000000,
            0x00000000,
            0x00000000,
            0x00000000
        },

        {
            0x00000000,
            0x00000000,
            0x00000000,
            0x00000000,
            0x00000000,
            0x00000000,
            0x00000000,
            0x00000000
        }};

Передаю массиву данные из тайлсета:
myTiles[0] = vwf_font.tiles[32/4*1];
Ругается на:
src\main.c|142|error: assignment to expression with array type|
В чём может быть проблема?
---------------
Решил проблему иным путём. Воспользовался memcpy.

18
что-то ты не так понял. маппер это чипы на картридже, т.е. таки "особенность" игры или игр, а не самой приставки.маппер типично детектится по коду игры в заголовке ROM-а, памяти выделяется столько сколько надогде ты вычитал такую глупость ? игра там реально 8 мегабайт
Про маппер немного напутал. Говорил это Chilly Willy и он имел ввиду, что это маппер самой Сеги, а не SSFII.

Про Pier Solar, я понятия не имею, как я так мог подумать... Я помню, что когда появились первые дампы, я ковырялся в игре и определённо помню, что у меня ввшло то, что я описал выше. Сейчас я смотрю РОМ, действительно, 8мб. Мистика какая-то. :blush: Либо я кривой дамп смотрел, либо того хуже — демку. У них тоже был свой маппер, или схожий с тем, что у SSFII?

19
В какой момент у вас  это происходит? Например, если открывать png, то палитра остаётся какой была. Ogr дал совет, как поступать, если у вас есть готовая палитра и вы хотите из RGB изображения сделать индексированное.
Происходит с самого начала. Я делаю скриншот с нужного мне ресурса (в моём случае — это эмулятор Neko Project) и у меня уже изначально палитра в таком порядке, где чёрный цвет не первый идёт. Это решается с помощью Save for web в Фотошопе, но я думал, есть более быстрые способы.

По поводу размера, я так понял, нет возможности универсальной на данный момент. Мне размер нужен для большого объёма PCM. Вижу два пути:
1) Я почитал ещё раз про маппер SSFII, тот же Stef говорит, что это маппер самой Сеги, а не особенность одной игры. И что, теоретически, мы все можем использовать его. Теоретически это до 32мб объём данных, где в РОМе можно по мере необходимости подгружать данные по адресам. Одно лишь остаётся проблемой: как эмуляторы детектят саму игру с маппером и будет ли выделяться ли под неё больший объём памяти, или она фиксированно будет видеть игру с 5мб. К примеру, когда только вышел Pier Solar, он позиционировался как первый 64мбитный картридж, на деле же там, насколько я помню, РОМ 2мб, который дублируется в данных несколько раз. Ни о каких 8мб и не пахло.
2) Второй способ упомянутый режим Sega CD, который так же был показан в примере Stef’ом. Благо сейчас, наверное, большинство эмуляторов поддерживает эту функцию. В примере он сказал, что таким образом можно получить доступ не только к музыке, но и файловой системе. Возможно ли как-то будет читать и проигрывать PCM данные с диска с помощью SGDK? :neznayu:

И ещё вопрос: может, кто-то уже сталкивался. Каким образом можно проще всего организовать вывод собственного VWF (разноширинной шрифт) 8x16, 16x16? Сейчас при помощи функции можно выводить моноширинной шрифт 8x8, и самое неудобное — выводится всего два цвета. Может, у кого-то уже есть написанная функция?.. Или есть другой способ вывода? :-\

Спасибо всем за ответы.

А так, мне очень понравился SGDK, я честно лет 10 хотел научиться под Сегу делать хоть что-то, но думал, что это в сто раз сложнее. Оказалось всё очень понятно и доступно даже для новичков.

20
Что это?
VDP_interruptFade, тормозит выполнение функции.

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

Sharpnull, ответьте, если не сложно, ещё на пару вопросов.

Скажите, пожалуйста, а в sgdk поддержка Sega Cd присутствует, помимо аудиодорожек? Интересует именно увеличение объёма данных в игре. Сейчас на 4мб не разгуляешься. Я ранее читал, что на маппере от SSFII можно РОМ до 32мб сделать, есть в sgdk поддержка подобного?

Каким образом изображения редактируете? Через Фотошоп палитра постоянно выстраивается таким образом, что чёрный цвет оказывается самым дальним. И потом приходится вручную редактировать палитру, дабы выставить его первым. Есть какой-то более удобный способ?

21
Подскажите, плжалуйста, как в SGDK можно легче всего затемнить/осветлить цвет? К примеру, на заднем фоне есть вывеска, цвет палитры изначально неизвестен, поэтому загружать в цикле заранее готовые палитры не получится. На заднем плане, нужно сделать цикл, чтобы цвет моргал на три-четыре тона ярче, тускнее. От неё же блики на некоторые объекты. То есть не вся палитра должна меняться, а лишь несколько цветов из палитры заднего фона.
Все функции Fade работают по полной палитре и до полного затемнения экрана.

Сейчас сделал задуманное через прерывание Фейда. Более-менее на безрыбье, но темнится вся палитра в слоте. Ищу универсальный способ.

Теоретически можно для каждого цвета в палитре использовать SetColor, но там нужна замудрёная формула, которая будет по 9 битам из нынешнего цвета высчитывать оттенок ниже/выше...

22
Извините, что редко захожу. Я в ближайшее время выложу видео перевода первого получаса игры, оцените, покритикуете, возможно, что-то посоветуете. :) Потерпите немного.
Текста в игре очень много, на каждое действие в игре по 3-4 варианта описания.

23
Ребят, редко появляюсь здесь. Проект жив. Я перевожу под настроение, через силу не могу себя заставить, к сожалению. :)
Guyver, с хакингом разобрался уже, пока технических проблем больше нет.

24
m4x1k, как успехи)?
Пока, к сожалению, порадовать нечем. :blush: Я перевожу в свободное от работы время. Бывает, что перевод неделями стоит без действий. В принципе, это ожидаемо было.

25
Scarabay, поверх выводя — отключается, по каким-то причинам, сопутствующая анимация. Причину не смог выяснить, где-то что-то перетирает. Портреты удаётся выводить только по одному, к сожалению. В нижней части экрана используются другие 64 цвета, три блока из которых уходит по одному на каждый портрет. В верхней части я могу выделить лишь один блок 16-цветовой палитры, остальные идут на спрайты и бэкграунды. К сожалению, лучше уже не представляю как это реализовать, игра и так в оригинале на 200% палитру выжала.
Mefistotel, без обид, но это на данный момент не требуется.
Ogr, нет смысла их уменьшать на данном этапе.

Я написал лишь потому, что тему подняли. Глядя в соседнюю тему по Danganronpa — не хотелось бы, чтобы здесь было что-то подобное. Как только я закончу с текстовой частью, я отпишусь здесь снова. Тем, кто хочет помочь или предложить что-то касательно перевода — пишите в личные сообщения.

26
Grongy, текст вывести не проблема. :) Проблема в том, что он изначально не должен быть там. К примеру, если в сценах Гиллиан/Джейми можно перекинуть изображение выше/ниже, то в сцене со строением Снетчера тексту вообще места нет. Есть множество возможных уловок, но я пока не решил, как использовать это лучше. Добавление субтитров через эмулятор не рассматривается, т. к. основной платформой для игры выбирается настоящая Sega CD.
С технической части пока что вопросов нет. Не добрался ещё до компьютера JORDAN, но, думаю, русский ввод реализовать получится.

27
Перевод продолжается. :) Не думал, что будет так долго, но торопиться тоже не хочется.
Тем, кто проходил игру, имеет смекалочку и хочет помочь:
По поводу шрифта — в игровом файле, что содержит шрифт, места с гулькин нос. Пришлось очень сильно попотеть с переносами данных, чтобы уместить и русский, и английский алфавит. Плюс были использованы ухитрения, чтобы большие буквы (Ж, Щ, Ю и т. д.) не ограничивались шириной одного тайла (8 пикселей).
Учту все пожелания, если есть идеи по переводу каких-либо мест, то пишите в личные сообщения.

28
Случилась маленькая неприятность — поломался мой верный конь, автомобиль. Все силы пока на него. :blush:
По проекту — на днях решится всё. Позволит ли игра мне без лишних выкрутасов выводить одновременно портреты и текст. Я нашёл сноски шрифта в видеопамяти, можно переносить в любое место. Проблема в том, что места лишнего в видеопамяти практически нет, плюс при считывании данных не по адресу появляются лишние артефакты. :lol: Но все решаемо, лишь бы игра не выкинула ещё пару фокусов.

29
Игра само собой не будет все доступные 128 цветов использовать. Сверху практически всегда вся палитра занята — первый слот под системные нужны (шрифт), остальные три — бэкграунд. А снизу 4 слота палитры — первый так же на системные нужды, и три используются на портреты, каждому персонажу (их 3 выводится максимум) по свои 16 цветов.
Тут писали, смысл как в Сонике 2 со сплитскрином. Отсюда и артефакты на настоящем железе. Но опять же, Конами извернулась неплохо.)

Физически не получится сразу три портрета выводить, слишком много цветов. Сейчас постараюсь сделать так, чтобы во время речи выводился портрет того, кто говорит. Если получится, то меня это полностью устроит.

30
Игра использует два набора палитры, для нижнего экрана и верхнего. Сверху нормальная, а снизу дополнительная. Это позволяет игре показывать больше цветов на одном экране, 128, а не 64. В этом проблема. Портреты используют цвета, который верхний экран не содержит. Пока не решил чего делать, но что-нибудь придумаем. ^_^

Страницы: [1] 2 Далее