Разработка и ромхакинг > Ромхакинг и программирование

SGDK

(1/39) > >>

ALKOSHA:
В архиве поставляются экзэмплы с проектами для код-блокса, но там надо как минимум сменить компилятор в toolchain.
А так как мне код-блокс нужен так же для minGW gcc , постоянно переключаться между компиляторами не вариант.

Полагаю, проще будет всё сделать bat-никами для сборки проекта.

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

Добавлено позже:
Попробовал как здеся : https://www.youtube.com/watch?v=BKELheqTb_U. Застопорился на том моменте, где чувак скопипастил с вики вот этот скрипт :
--- Код: ---%GDK_WIN%\bin\make -f %GDK_WIN%\makelib.gen
--- Конец кода ---

У того чувака понеслась жара в  виде кучи строчек в консоли.
У меня же просто сообщает о том, что команда не корректна.

Правда у того чела XP, а у меня 7-ка. Но думаю, вряд ли в этом дело.

Добавлено позже:
Так же попробовал на D:\ перекинуть СДКу ( соответственно изменив переменные среды)

Если что, я под правами админа, и чтение\запись на диск ц разрешено.

Добавлено позже:
Ага. Всего-то нужно было перезагрузить комп, чтоб переменные среды инициализировались.

Добавлено позже:
HELLo world пашыт.

Осталось как минимум разобраться со спрайтами и тайлами.

Добавлено позже:
О, и ещё вопрос. Допустим, есть переменная типа float. Я хочу посмотреть её содержимое. Но VDP_drawText выводит только стринги.
Как конвертануть float в стринг в этом компиляторе ?

Добавлено позже:
Щас ради эксперимента сделал перемещение текста.

--- Код: ---for(i=0;i<20;i+=1){
VDP_drawText(" SIEG HEIL", i, 13);
VDP_waitVSync();
}

--- Конец кода ---

Чего-то сомнительный фрейм-рейт. с этой вертикальной синхронизацией. На уровне синклер-васика на хз-спектруме .
Без неё на несколько порядков шустрее.

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

blackbird_ru:
ALKOSHA, вейт ставить нужно в самом конце твоего кода, это нужно чтобы подождать следующего фрейма и не просчитывать логику стопицот раз за фрейм.

Добавлено позже:
И да, не юзай флоаты.
Они не нативны и убивают производительность.
http://code.google.com/p/sgdk/wiki/SGDK_Math

ALKOSHA:
Хммм.... fix16  тождественен целочисленному значению.

При итерации в 0.1 - ничего не прибавляется, а только при итерации 1 меняется значение переменной.

Добавлено позже:
И ещё тут с тайлами не совсем понятно. А точнее с конвертированием в bmp-файл.

Скомпилировал я сорс genitile (в папке "тулзы").
Теперь пробую  %GDK_WIN%\achtung\data\genitile.exe -map %GDK_WIN%\achtung\data\moon.bmp
выдаёт сообщение *ABORTED* not any input file found

причём пробовал так же
 %GDK_WIN%\achtung\data\genitile.exe -map %GDK_WIN%\achtung\data\moon.png
 %GDK_WIN%\achtung\data\genitile.exe -map %GDK_WIN%\achtung\data\moon.jpg

Добавлено позже:
Закинул родную bmp-шку, resource и main.

Добавлено позже:
А, дошло. Надо было папку out удалить , и заново скомпилить.

Но это с родной бмп-шкой.
А как свою впендюрить?

Добавлено позже:
Подойдёт любой конвертер в 4-ёх битное bmp ? Или тут какая-то специфика (в палитрах, например) ?

Добавлено позже:
Сохранил в фотошопе в 4-ёх битку, всё нормально собрало.

Буду пробовать ещё на другие разрешения пикчи.

ALKOSHA:
Скачал с вики  тутор по спрайтам. Компилятор ругается на _spritedef (undeclarated <first use in this function>)

Добавлено позже:
Если кому-то тема по спрайтам интересна, вот решение проблемы с объявлением типа:

http://gendev.spritesmind.net/forum/viewtopic.php?p=15637&sid=8f811615f9c9b6ded072a2f6b3fc3275#15637

ALKOSHA:
Пацаны, помогите со спрайтами, плиииз.
Соник из экзэмпла нормально выводится.
А вот свой спрайт чего-то не получается вывести.

Мой коТ:

--- Код: ---#include <genesis.h>


struct genresTiles
{
u16 *pal; //pointer to pal data
u32 *tiles; //pointer to tiles data
u16 width; //width in tiles
u16 height; //height in tiles
u16 compressedSize; //0 in this demo, more coming soon
};
extern struct genresTiles title;

struct genresSprites
{
u16 *pal; //pointer to pal data
u32 **sprites; //pointer to sprites data
u16 count; //nb sprites
u16 width; //width of each sprite in pixels
u16 height; //height of each sprite in pixels
u16 size; //since we use width/height in pixel, useful info on sprite size
//TODO : size is not SGDK compliant, you need to use size>>8
// will be fixed in coming release
};
extern struct genresSprites bat1;


#define TILE1 1

int main( )
{
SpriteDef mySprite;

u8 frame = 0;

VDP_setPalette(PAL1, title.pal);

// load tiles in VRAM
//  arg0 = tiles data
//  arg1 = index for first destination tile
//  arg2 = number of tiles to load
//  arg3 = use DMA (1) or not (0)
VDP_loadTileData(title.tiles, TILE1, title.width*title.height, 0);

// VDP_fillTileMapRectInc(BPLAN, TILE_ATTR_FULL(PAL1, 0, 0, 0, TILE1), 0, 0, title.width, title.height);

VDP_resetSprites();
VDP_setSprite(0, 0, 0, bat1.size>>8, TILE_ATTR_FULL(PAL1,1,0,0,TILE1), 1 /* 0 */);

       
        // define the sprite (using a _spritedef to easily make Sonic move later)
   // define the sprite (using a _spritedef to easily make Sonic move later)
        mySprite.posx = 40;
        mySprite.posy = 40;
        mySprite.size = bat1.size>>8;
        mySprite.tile_attr = TILE_ATTR_FULL(PAL1,1,0,0,1);
        mySprite.link  = 0;
        VDP_setSpriteP(0, &mySprite);



while(1)
{
       VDP_setSpriteP(0, &mySprite);
  VDP_updateSprites();
VDP_waitVSync();
}
return 0;
}
--- Конец кода ---

файл настройки ресурсов.

--- Код: ---BITMAP title "data/title.bmp" 0
SPRITE bat1 "data/bat.bmp"  56 16 0
--- Конец кода ---

(bat.bmp c разрешением 56 на 16 пикселей)

title.bmp - индексированный 4 бита.
bat.bmp - тоже.

картинку title выводит, а bat - ничего не вырисовывает.

Компилит без эрроров.

Segaman:
Дайте ка уточню. SGDK это компиль кода Си под сегу?

MetalliC:
Segaman, SGDK это SDK под сегу, то есть: компиляторы C, асмов М68К и Z80, библиотечки, примеры, утилиты. стандартный набор в общем.

ALKOSHA:
....А вывести спрайт удалось таки.
но только в искарёженном виде.


Добавлено позже:
кстати, если тайл не выводить (где изображена эмблема "Кровавого"), то той полоски с рандомными пикселями не будет.
То есть, если есть спрайт , а тайла нет - полоски тоже нет. И наоборот. если есть тайл, и спрайта нет.

А если есть и то и другое, то вверху появляется такой мусор из видео-памяти.

Добавлено позже:
Просто в экзэмплах атласная текстура, с указателями на ректангл выводимого спрайта.
Сложно всё это для новичка.

Мне бы для начала по отдельности записывать с разных bmp-файлов инфу в спрайты.

Segaman:
причины появления полоски:
-ты пишешь карту тайлов в поздний адрес(на 1 строку ниже, чем нужно)
-вертикальный скролл сместился
-во время передачи графона был перпезаписан адрес записи(например ты что-то делаешь в вертикальном прерывании)
-если графон сжат, то просто коцанный архив. можно поменять один пиксель и перезапокавать
-карта спрайтов или слоев находится по адресу графона. т.е. после загрузки графики, грузится карта тайлов туда же, где лежит графон.
более вероятен последний вариант. как решение можешь переместить местоположение карт тайлов и спрайтов в более поздние адреса видео памяти.
что касаемо прозрачного цвета, берешь PalSwap и с его помощью открываешь графон и заменяешь номер зеленого цвета на ноль

ALKOSHA:

--- Цитата ---вертикальный скролл сместился
--- Конец цитаты ---
Возможно, но я не указывал команды скроллирования (которые определены всё в той же genesis.h)
Сам по себе он вряд ли бы сместился.


--- Цитата ---если графон сжат, то просто коцанный архив. можно поменять один пиксель и перезапокавать
--- Конец цитаты ---
Пока-что компрессия тайлов\спрайтов не предусмотрена, но разработчики SGDK обещают и это добавить в скором времени.


--- Цитата ---что касаемо прозрачного цвета, берешь PalSwap и с его помощью открываешь графон и заменяешь номер зеленого цвета на ноль
--- Конец цитаты ---
Данкешон.

Я уже корректно смог вывести спрайт (правда в связи с аппаратным ограничением, его нужно подгонять под 32*32 пикселя).
Но вот два и более спрайтов чего-то не выходит у меня вывести.
А следовательно, если даже один спрайт хочу вывести, размер которого over 32 пикселя, то ничего не получится, в связи с тем, что его нужно выводить по кусочкам.

Добавлено позже:

Segaman:
ALKOSHA, я б тебе сказал, где ты не прав в спрайтах, но не могу. мой внутренный билибероненавистник требует крови :neznayu:

ALKOSHA:
Эххх...
Пока моих познаний в sega-программинге хватит лишь на написание какого-нибудь текстового квеста, которых уже вдоволь наклепали за столь короткий период.














Видимо не я один ниасилил спрайтики.

ALKOSHA:
Кто пробовал это: http://gcup.ru/load/igrovye_dvizhki/basiegaxorz/3-1-0-2266 ? Отпишитесь. Нормальная ли СДК ?


Добавлено позже:
Со спрайтами там как?

Больше всего меня интересуют спрайты.
Желательно больше 32*32

TiberiyLTim:
ALKOSHA, отличная штука, и возиться с bat'никами не нужно - есть среда, которая компилирует код по нажатию кнопки. Единственное, что я пока там не разобрался где шрифт кириллический включить. Если использовать стандартный, то методом ромхакинга можно заменить крякозябры - т.к. шрифт там предусмотрен, просто на его месте каракули. По примерам очень легко всё понять.

Со спрайтами всё просто - см. примеры. Загрузи в проект картинку со своими спрайтами, а затем уже смотри как в примере вызывается графика из прикреплённого файла - нужно указывать значения.

ALKOSHA:

--- Цитата: TiberiyLTim от 30 Ноябрь 2014, 23:51:57 ---Со спрайтами всё просто - см. примеры.

--- Конец цитаты ---

пока ещё с примерами не ознакамливался. так как у меня даже одну строчку с print'ом не компилит.

F5 и...


Добавлено позже:
а.... туплю... надо ж нумеровать строки.
Поставил 1 перед принтом, вроде скомпилило.
Но ещё не запускал бинарник.

Добавлено позже:
Да, всё таки хэллоу ворлд запахал.

Буду пытаться осваивать графон.

Добавлено позже:
Ещё на форуме , посвящённом SGDK, видал прожку одну, типа, драйвер для зилога. <_<

Прикольная штукенция, там демонстрировалось воспроизведение FM-синтеза, сплошного WAV через ЦАП. Но больше всего заинтересовало трэкерное музло. В смысле wav-сэмплы в 4 канала микшируются, упрощённый вариант MOD\IT\XT на Амиге.

Из присутствующих на этом форуме уже ковырялся ли кто-нибудь в этой проге ? Как в неё можно импортровать трэкерные музоны ? (вроде бы r57shell там частенько зависает)

Добавлено позже:
Опа.
Релиз. http://gcup.ru/news/sgdk_1_01_i_2_otkrytye_igry_v_kachestve_shablonov/2014-12-03-5022 slowpoke.jpg

SPOT:

Ещё один исходник для Sega Genesis Dev Kit

SPOT:
Очередной исходник отличной игры для SGDK

Segaman:
весьма интересная штука SGDK
хочется начать юзать, но понимаю, что у меня уже есть всё для девелопа и желание отпадает.
чего только стоит мой двиг музыки. осталось подкрутить его еще немного и он будет шикарен.
ALKOSHA, а смешивание PCM семплов не всегда дает нужный результат.
так например на ссаных пиратках PCM не хило так жуётся если его смешивать.
становится похоже на колонки, которые плотно набили опилками, но я думаю с этим можно справиться, хотя под пиратки настраивать звук - редкий изврат. куда приятней было бы ограничиться оригинальным железом.

скажите одну вещь: можно ли в SGDK вставлять ассемблерный код?
если да, то я уже качаю :lol:

SPOT:

--- Цитата: Segaman от 17 Декабрь 2014, 08:39:50 ---скажите одну вещь: можно ли в SGDK вставлять ассемблерный код?
если да, то я уже качаю :lol:

--- Конец цитаты ---

Да, только вроде его модифицировать нужно, хотя может и не нужно :blush:

Segaman:
попробовал подрубить Code::Blocks - некомпилит. только из батника. жаль :)

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии