Автор Тема: SGDK  (Прочитано 76362 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн megavolt85

  • Пользователь
  • Сообщений: 1464
  • Пол: Мужской
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #480 : 15 Апрель 2019, 20:59:43 »
Ну зачем грубить и оффтопить?

какие мы ранимые  :lol:
ну и где там оффтоп?
MetalliC всё по делу расписал, и в подтверждение его слов могу привести пример, GCC 4.7.3 довольно хорошо генерит код для SH4 (sh-elf), 5.2.0 оптимизирует лучше, но порой бывают баги, 7.1.0 оптимизирует просто вау, но не дружит с C++ и периодически всплывают баги со сложными конструкциями на C

но ведь это ложь)

сказка ложь, да в ней намёк ........
да, среди ПО с открытым исходным кодом есть шедевры и такого ПО не мало, но есть и то о чём говорит MetalliC

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #481 : 15 Апрель 2019, 22:04:42 »
в подтверждение его слов могу привести пример, GCC 4.7.3 довольно хорошо генерит код для SH4 (sh-elf), 5.2.0 оптимизирует лучше, но порой бывают баги, 7.1.0 оптимизирует просто вау, но не дружит с C++ и периодически всплывают баги со сложными конструкциями на C
разумеется, но речь ведь, в данном случае, шла не об этом

Оффлайн megavolt85

  • Пользователь
  • Сообщений: 1464
  • Пол: Мужской
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #482 : 15 Апрель 2019, 22:33:20 »
речь шла о компиляторе г++ как потенциальной замене для сгдк

 0_0 ты вообще понимаешь что такое SDK? судя по твоему посту не понимаешь вовсе
это как сравнивать мягкое с тёплым, каким образом ты собираешься заменить SDK компилятором  :lol:

и если ты используешь открытое ПО в своих проектах, то жлобить такие проекты - как минимум некрасиво

перечитай ещё разок GPL, использовать свободное ПО и изменять его в своих не коммерческих целях не возбраняется

Вот поэтому, я и написал...

поделки школьников это вершина айсберга, смотри шире
вот тебе пример из личного опыта, решили мы компашкой перевести дримкастовский Evil Twin на русский, ну как переревести, тупо взять перевод от ПК версии. Естественно форматы разные, нужен конвертер, накидал я по быстрому этот конвертер, ну и конечно сделал кросс платформенным, винда значит и линукс, но так как конвертил всё только я, софт катался только в линуксе. Импортировали озвучку и перевод и на этом всё. Спустя пару месяцев на меня выходит Поляк, он долгое время пилит свой кастомный перевод, понятное дело что на Польский, так как его проект длится несколько лет и завершение не близко, я ему предложил пойти по накатанной, взять перевод ПК версии, в итоге я скинул ему весе тузлы что писал, но под виндой всплыли баги, я пофиксил один, потом другой, но в итоге мне это надоело и я попросил скинуть все файлы озвучки, я конвертнул их и отправил назад.
Мораль сей басни проста, получай я с этого зарплату, можно было бы довести софт до идеала, а на голом энтузиазме мне просто лень было всё доделывать, тем более что на моей платформе софт прекрасно работает
« Последнее редактирование: 15 Апрель 2019, 22:54:26 от megavolt85 »

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Настройка SGDK
« Ответ #483 : 16 Апрель 2019, 00:33:15 »
 (close_tema) может давайте по теме?
щас модеры  набегут.
выкладывать ничо не буду, долго приводить в должный вид.
луче сразу игру напишу :cool:

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5127
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #484 : 16 Апрель 2019, 01:05:39 »
Цитата: worm от Вчера в 22:04:42
    речь шла о компиляторе г++ как потенциальной замене для сгдк

 0_0 ты вообще понимаешь что такое SDK? судя по твоему посту не понимаешь вовсе
это как сравнивать мягкое с тёплым, каким образом ты собираешься заменить SDK компилятором  :lol:
Вы проглядели для: g++ как замене для SGDK.

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #485 : 16 Апрель 2019, 01:36:59 »
Segaman, игра - это, конечно, хорошо, но как это поможет развитию сгдк и комьюнити? Пиши хотя бы на видео процесс создания игры)

« Последнее редактирование: 16 Апрель 2019, 01:47:13 от worm »

Оффлайн megavolt85

  • Пользователь
  • Сообщений: 1464
  • Пол: Мужской
    • Просмотр профиля
Настройка SGDK
« Ответ #486 : 16 Апрель 2019, 13:49:06 »
g++ как замене для SGDK.

не устраивает оптимизация более старых версий компилятора ? -> возьмите более новую.

игра - это, конечно, хорошо, но как это поможет развитию сгдк и комьюнити?

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

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

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

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9387
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Настройка SGDK
« Ответ #487 : 16 Апрель 2019, 17:32:10 »
Ну а металлик начал разглагольствовать о том, что все открытое ПО - это полное г. Оффтоп? Оффтоп
какиенах разглагольствования ? ты интересовался почему мало адекватного открытого ПО - я ответил, верней озвучил одну из причин.

я вон кучу багов в KOS нашёл и что думаешь хоть что то добавили, то Крабу религия не позволяет, то это противоречит моральным устоям отцов основателей самой KOS, то менять не нужно ибо по словам Краба у него и так всё нормально работает и никакие доводы его не переубедят.
это кстати еще одна типичная болячка опенсорца - до лампочки сколько ты там багов нашел, мэйнтейнеру лень их править, или возможно он забил на этот проект и уже нифига не помнит что там и как в этом KOS.
так что спасение утопающих - дело рук самих утопающих, в этом случае обычно прокатывает самостоятельная правка багов, и создание Pull request на GitHub, тогда от лентяя-мэйнтейнера требуется минимум телодвижений - лишь жмакнуть кнопку "Merge Pull request".
к слову, за всю историю KOS таких героев было аж трое - https://github.com/ljsebald/KallistiOS/pulls?utf8=%E2%9C%93&q=

Оффлайн megavolt85

  • Пользователь
  • Сообщений: 1464
  • Пол: Мужской
    • Просмотр профиля
Настройка SGDK
« Ответ #488 : 16 Апрель 2019, 20:23:41 »
к слову, за всю историю KOS таких героев было аж трое

какой кровью дались эти правки, а вспомни с каким боем далось изменение режимов чтения привода, я поднял кипишь, а SWAT потом долго пытался донести это до Краба, к слову эти режимы так и остались убогими, я даже дизасм сисколов отослал Крабу, а воз и ныне там  :lol:

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Настройка SGDK
« Ответ #489 : 16 Апрель 2019, 21:07:00 »
  может давайте по теме?
Напоминаю, что автор темы я. А следовательно разрешаю вести свободное общение на любые темы (кроме футбольчика, дноты и прочей голубятины :cop:).

Оффлайн m4x1k

  • Пользователь
  • Сообщений: 36
    • Просмотр профиля
Настройка SGDK
« Ответ #490 : 17 Апрель 2019, 05:05:16 »
Объясните, пожалуйста, как реализовывается вывод текста, когда оба плана заняты графикой:
В моём случае интересует Phantasy Star II, оба плана уходят на отрисовку графики, но при нажатии на кнопку на план А рисуется меню с текстом, которое рисуется поверх плана А и Б, и которое в последствии легко убирается. Выглядит так, словно рисуется третий план, и, вроде бы, это не WINDOW. Как оно работает? :?

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

Оффлайн Ogr

  • Пользователь
  • Сообщений: 7473
    • Просмотр профиля
Настройка SGDK
« Ответ #491 : 17 Апрель 2019, 05:43:17 »
А рисуется меню с текстом, которое рисуется поверх плана А и Б, и которое в последствии легко убирается. Выглядит так, словно рисуется третий план, и, вроде бы, это не WINDOW.
gensKMod показывает что оно таки на плане а рисуется:



Оффлайн m4x1k

  • Пользователь
  • Сообщений: 36
    • Просмотр профиля
Настройка SGDK
« Ответ #492 : 17 Апрель 2019, 06:49:34 »
Ogr, я это и говорю. Как оно реализовано? Текстовое окно ведь затирает карту поверх, получается. То есть, на выходе из текстового окна весь план отрисовывается заново, чтобы вернуть, как было?

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #493 : 17 Апрель 2019, 12:20:39 »
m4x1k, вы вовремя вмешались - тема чуть окончательно не превратилась в свалку бугуртов разнообразных сказочников и их подхалимов))

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Настройка SGDK
« Ответ #494 : 18 Апрель 2019, 11:11:04 »
То есть, на выходе из текстового окна весь план отрисовывается заново, чтобы вернуть, как было?

 как бэ, это очевидно.

Меня больше интересует иной вопрос. Как засунуть нарисованную в TiledMapEditor'e карту в Сигу при условии, если массив карты будет содержать 256*256 тайлов (что в совокупности невероятных 2048*2048 пикселей).
Напомню, что лимит обоёх плейнов -  64*64 тайла. То есть то, что перегонит rescomp из png картинки будет лишь в этой области.
Забивать вручную двумерный массив char-ов тоже адок.
Да и ещё с коллизией как быть ?

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #495 : 18 Апрель 2019, 12:08:10 »
Меня больше интересует иной вопрос. Как засунуть нарисованную в TiledMapEditor'e карту в Сигу при условии, если массив карты будет содержать 256*256 тайлов (что в совокупности невероятных 2048*2048 пикселей).
а еще, как потом создать коллизии к карте. Ну допустим, создал я png карту уровня из тайлов, дальше что? персонаж (возьмем демо сцанника) будет реагировать только на заданный в main.c пол. Мне что, вручную высчитывать координаты и шпиговать исходники кучей условий? Где карта коллизий, Карл? Где нормальный спрайтовый движок? А кое-кто еще хочет, чтобы я на этом игру пилил...

Оффлайн megavolt85

  • Пользователь
  • Сообщений: 1464
  • Пол: Мужской
    • Просмотр профиля
Настройка SGDK
« Ответ #496 : 18 Апрель 2019, 12:46:38 »
Забивать вручную двумерный массив char-ов тоже адок.

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

Где карта коллизий, Карл? Где нормальный спрайтовый движок?

 0_0 ты в своём репертуаре.
Движок пишется разработчиком игры под его конкретные задачи.
Хочешь написать свою игру, пиши сначала движок, не знаешь как написать, открывай чужой проект и учись

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Настройка SGDK
« Ответ #497 : 18 Апрель 2019, 13:00:03 »
неленитесь и потратьте неделю на написание тулзы для ваших уровней
а уровень с большой тайловой картой просто кусками за областью экрана надо рисовать.
посмотрите как другие игры это делают

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Настройка SGDK
« Ответ #498 : 18 Апрель 2019, 13:27:37 »
посмотрите как другие игры это делают

Другие делают одноэкранные аркадки, а-ля "змейка".
Разве что в демке пингвина карта хранится в геймейкеровском формате (но это не точно).
Но сорсы там ориентированы ещё на олд-версию СДК.

Добавлено позже:
П.С. в видосе том нерациональное израсходование памяти (одинаковый набор тайлов на разные куски, а считаются как уникальные).
И опять же, смена экранов как на спектруме. А если это будет непрерывный скролл, и на каждый такой кусок нужно тратить время? Наверняка будет рывками.

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Настройка SGDK
« Ответ #499 : 18 Апрель 2019, 21:42:39 »
Есть ещё такое вот

https://gendev.spritesmind.net/page-mdppy.html

Интерфейс у mappy неудобный по сравнению с Tiled-ом. Но благо есть импорт из изображения.

Только вот на практике я не могу разобраться. Есть кто шарящие в этом чате ? Каков алгоритм действий, от и до, как засунуть в сегу полученную карту с последующим скроллом.
Знаю, что можно сохранять 2д массив.
Но как прокешировать нужные тайлики в VDP, а после по тому массиву их раскидать во время прокрутки слоя?

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5127
    • Просмотр профиля
Настройка SGDK
« Ответ #500 : 19 Апрель 2019, 00:27:46 »
ALKOSHA, немного дилетантских мыслей.
Здесь уже обсуждалось, если нужно 256x256 тайлов (2048x2048 пикселей), rescomp должен съесть как Image. После в начале уровня (этой карты) из Image подгружается TileSet, палитры. Когда персонаж движется, на границы 1-2 тайлов подгружается полоска карты впереди через VDP_setMapEx() и подобные. Я не знаю какое ограничение на размер Image, если используется сжатие, то всё упрётся в RAM, и кроме того будет медленный скроллинг.

Если хотите только уникальные тайлы на всю игру, то чтобы использовать сжатие для тайлов, можно загрузить их как TileSet. Карту придётся сгенерировать, как Map и использовать VDP_setMapEx() или как обычный массив u16 с VDP_setTileMapDataRectEx(). Эти функции позволят подгружать вертикальные полоски без лишних циклов. Отдельно придётся позаботиться о палитре.

Генерацию карты можно сделать из Tiled (там вроде свой формат есть). На каждый уровень (где, допустим, 256x256 тайлов) будет свой Map или массив u16. Сложность с TileSet: VDP_loadTileSet() подгружает все тайлы, а чтобы выбрать некоторые со сжатием, придётся самому распаковывать и подгружать через VDP_loadTileData(). По карте невозможно узнать какие тайлы нужны. Значит придётся хранить для каждого уровня данные об используемых TileSet'ах (будут трудности, если используется сжатие, если нет, то можно хранить один TileSet на все уровни). Фактически, для каждого используемого тайла на уровне нужен индекс в VRAM, который находится в карте (Map, u16), и где его брать. Например:
struct TileZ {
    u16 indexTileSet; // Индекс/смещение из TileSet
    u16 tileSetID;    // Какой TileSet
};
TileZ level1[] = { {1, 0}, {3, 0} };
Будем считать индекс в VRAM индексом массива level1, тогда идём по массиву и подгружаем подряд в VRAM (начиная с какой-нибудь позиции, TILE_USERINDEX например). indexTileSet нужно умножать на 32 в байтах или 8 если по u32.

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

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

Segaman, не знал, что спецификация от SMD есть на русском, забавно.
« Последнее редактирование: 19 Апрель 2019, 00:37:32 от Sharpnull »

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4477
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
Настройка SGDK
« Ответ #501 : 19 Апрель 2019, 12:50:23 »
А следовательно разрешаю вести свободное общение на любые темы
Кто на аве? :lol:

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #502 : 20 Апрель 2019, 13:13:54 »
Чет гуано плюсы...



Либо С не включает в код нужную для вывода библиотеку, либо я дурак, либо плюсы кал. Не надо их в сгдк :lol:
вангую, сейчас мегавольт вылезет, чтобы вставить свои 3 копейки xD

Оффлайн Skay

  • Пользователь
  • Сообщений: 4120
  • Пол: Мужской
    • Просмотр профиля
Настройка SGDK
« Ответ #503 : 20 Апрель 2019, 23:36:07 »
Да.. тест супер. взять рандомно бездумно сделать что то. А потом говорить плюсы кал  <_<
Либо С не включает в код нужную для вывода библиотеку
серьезно? разнциы не видишь в том что написал? ну удачи. дальше продолжай сравнивать библиотеки  :lol: про "C++ C-style" вообще молчу
« Последнее редактирование: 21 Апрель 2019, 09:34:21 от Skay »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5127
    • Просмотр профиля
Настройка SGDK
« Ответ #504 : 21 Апрель 2019, 00:42:42 »
worm, странно, у меня https://godbolt.org/ выдаёт одинаковый код примера printf("Hello, World!"); для C и C++.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Настройка SGDK
« Ответ #505 : 21 Апрель 2019, 12:47:18 »
worm, юзая стандартные библиотеки ты всегда будешь что-то среднее получать.
мне вот пришлось даже оператор new с delete определять вручную, так как на сежке нет стандартов С++
что несомненно я считаю огромным плюсом (хорошая игра слов  :) )

кстати столкнулся с проблемой. код вида:
const ObjectName * const objList [] = {
  &object1,
  &object2
};
почему-то вопреки всему хранит список указателей на обьекты в ПЗУ, которые указывают в ОЗУ, где они указывают в ПЗУ.
ROM 00000DF0: 0x00FF0004,0x00FF0008
RAM 00FF0004: 0x00000E1C, 0x00000E20
т.е. всё что заключено в скобки попадает в ОЗУ.
может кто-то знает, как отправить содержимое скобок (так как оно константно! вон я кconst два раза даже указал) в ПЗУ? :)

Добавлено позже:
в ообщем классы с виртальными методами, как ни крути, а константными и хранящимися в роме сделать никак не выходит.
переделал в структуры с указателями на функции, отказавшись тем самым от прелестей С++  :-\
« Последнее редактирование: 21 Апрель 2019, 13:53:27 от Segaman »

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #506 : 22 Апрель 2019, 06:29:42 »
серьезно? разнциы не видишь в том что написал? ну удачи.
Начинать надо было с "дальше продолжай сравнивать библиотеки" - аргумент. Но когда полыхает, аргументы - не главное, правда?) К тому же, я написал о своем предположении, что дело в библиотеке.

про "C++ C-style" вообще молчу
когда в районе ниже поясницы повышена температура, придирайся к словам - ведь для некоторых это единственная возможность почувствовать себя умным перед собеседником)
Лайфхак: 1) отсеиваешь все признаки прожженного стула, оставляешь только аргументы 2) профит - собеседник чувствует себя идиотом. (иначе просто наоборот получается)

странно, у меня https://godbolt.org/ выдаёт одинаковый код примера printf("Hello, World!"); для C и C++
Действительно, проверил - без инклудов код одинаковый. написал тестовую программку со сложением и массивом, 0 отличий :neznayu:

юзая стандартные библиотеки ты всегда будешь что-то среднее получать
Ну пока у меня рука не набита свои писать - приходится использовать что есть)

в ообщем классы с виртальными методами, как ни крути, а константными и хранящимися в роме сделать никак не выходит.
переделал в структуры с указателями на функции, отказавшись тем самым от прелестей С++
Ну Стеф не зря именно С выбрал - я, может, и невежда в этом плане, но он-то знает что делает... Более того, возможно вся оптимизация связана как раз с более новой версией GCC - ты не проверял?
« Последнее редактирование: 22 Апрель 2019, 06:49:05 от worm »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5127
    • Просмотр профиля
Настройка SGDK
« Ответ #507 : 22 Апрель 2019, 07:54:19 »
в ообщем классы с виртальными методами, как ни крути, а константными и хранящимися в роме сделать никак не выходит.
Может потому что это не POD и объекты всё равно придётся создавать во время выполнения, вызывать конструктор.

Оффлайн Skay

  • Пользователь
  • Сообщений: 4120
  • Пол: Мужской
    • Просмотр профиля
Настройка SGDK
« Ответ #508 : 22 Апрель 2019, 09:45:36 »
worm, как удобно всех кто фейспалмит от твоих действия обвинять в полыхании  :lol: но ты же выучил новое слово и по другому не умеешь, во всех темах где тебя тыкают носом в лужу, ты обвиняешь что у других полыхает  :lol:
printf("Hello, World!"); для C и C++.
так с чего им отличаться если printf это функция из сишной библиотеки.
Плюсы плюсов не только в библиотеках, но ив новых возможностях, а сравнивать как будет отличаться код при печати строки, рисовании вектора и тд - глупо же. ну ей богу %)

Оффлайн megavolt85

  • Пользователь
  • Сообщений: 1464
  • Пол: Мужской
    • Просмотр профиля
Настройка SGDK
« Ответ #509 : 22 Апрель 2019, 13:57:37 »
Более того, возможно вся оптимизация связана как раз с более новой версией GCC

неужели хоть одна умная мысль пытается пробиться в твою голову. отмотай на страницу назад и перечитай ещё разок пост MetalliC'a, он тебе это неделю назад ещё сказал
новые копиляторы для старых процов помимо оптимизации приносят новые глюки, так что я бы 10 раз подумал использовать новые компиляторы или не стоит