Разработка и ромхакинг > Ромхакинг и программирование
SGDK
<< < (32/40) > >>
ALKOSHA:

--- Цитата: Sharpnull от 31 Март 2020, 22:44:48 ---например галерею из аниме картинок
--- Конец цитаты ---
Маняме прекрасно поддаётся RLE компрессии.
Как и комиксы. Поэтому в той же Panorama Cotton валом анимированных катсцен при двух мегабайтном роме, не считая самой игры.
В Yuu Yuu Hakusho Gaiden оного в разы больше, так как это вообще новелла + файтинг. И он тоже не превышает двух мегабайт, вроде как.
worm:
А вот и горяченькое подвезли))

COMPILER

RESCOMP
added ALIGN directive (read rescomp.txt for more information about it)
added UNGROUP directive (read rescomp.txt for more information about it)
added 'compression' and 'far' field to BIN resource
replaced Map structure export by TileMap
minor optimization in building IMAGE tilemap
plain tiles are now ignored (taken from system tiles) when using a base tile index offset for tilemap (mapbase parameter in IMAGE resource)
more flexible resource compilation
ignore palette and priority for transparent pixel
sprite can have their palette not starting at index 0
reorganized resource data export order for better LZ4W compression and bank switch support
added support for 1bpp and 2bpp indexed color images
faster LZ4W tool call (embeded in rescomp now)
preserve resource order for better BIN data compression with LZ4W
more constrained sprite cutting process depending chosen optimization strategy
minor fix to allow using bit 7 (color index >= 128) in IMAGE resource as priority bit in tilemap
simplified / fixed binary compression block with alignment
fixed a bug on possible duplicated resource export
fixed Circle collision type export
now return -1 as exit code on error
replaced FileWriter by StringBuffer (faster and safer)
minor changes and improvements to rescomp.txt file
XGMTOOL
fixed a small bug during sample conversion processing
XGMROMBUILDER
updated to last XGMTool and XGM driver version
LZ4W
fixed LZ4W compression which could failed in very are case
BINTOS
fixed data section (it was .text instead of .rodata)
MAKEFILE
updated 'release' target to generate symbol.txt file (always interesting to have)
show more warnings
forced no inlining of memset / memcpy methods to fix LTO agressive optimization issue


LIBRARY

SYS
added bank switch support using SSF2 mapper (allow ROM > 4MB)
use ENABLE_BANK_SWITCH flag in config.h file to enable bank siwtch support in SGDK
added FAR(..) directive to access a resource through bank switch if required
added SYS_getBank(..) / SYS_setBank(..) methods
moved RAM initialization to sys.c unit and added support for bank crossing (more control on it)
minors changes to reset methods (simpler)
added ROM and RAM constants (yeah, why not ^^)
SPRITE
added sprite frame change event callback (using SPR_setFrameChangeCallback(..) method)
added SPR_loadAllFrames(..) to (pre)load all frames data of a SpriteDefinition to VRAM
removed unpack buffer (replaced by DMA buffer and new DMA_QUEUE_COPY method)
fixed a small issue with delayed update
fixed a bug on SPR_setDefinition(..) (can display glitches as some sprites weren't always properly hidden)
fixed internal sprite link (could occasionaly let some phantom and glitched sprites visible)
added out of range index detection for animation and frame (debug build only)
DMA
added new DMA buffer for easier and better DMA queue management
added 'bufferSize' parameter to DMA_initEx(..) function
added DMA_setBufferSize(..) and DMA_setBufferSizeToDefault() functions to set the temporary DMA buffer size
added new DMA_QUEUE_COPY transfer method (TransferMethod enum) to copy data to a temporary buffer before transfer actually occurs
added DMA_allocateAndQueueDma(..) function which return a temporary buffer and queue a DMA transfer from it
added DMA_allocateTemp(..) and DMA_releaseTemp(..) methods to allocate memory from DMA temporary buffer (use that safely)
added DMA_copyAndQueueDma(..) function which copy data to transfer to a temporary buffer and queue the DMA transfer
added a new generic DMA_transfer(..) function
added DMA_doCPUCopy(..) function to do a CPU copy to VRAM/CRAM/VSRAM
added DMA_getMaxQueueSize() and DMA_setMaxQueueSize() to get and set the queue size.
passed the DMA queue flush loop in assembly for better control (and also faster operation as GCC was dumb about it)
safer DMA operation on DMA_doDMA(..)
added DMA_initEx(..) and simplified DMA_init()
added new DMA_DISABLED flag in config.h to completely disable DMA support in SGDK (for debug purpose)
fix for HALT_Z80_ON_DMA (stupid typo)
VDP
many refactoring (see refactoring section at bottom)
TILE_USERMAXINDEX now take allocated VRAM for sprite engine in account !
added TILE_SPRITEINDEX constant to get base tile index for the Sprite Engine
added tilemap row update methods
VDP_setTileMapDataRow(..) / VDP_setTileMapDataRowEx(..)
VDP_setTileMapRow(..) / VDP_setTileMapRowEx(..)
added tilemap column update methods
VDP_setTileMapDataColumnFast(..) / VDP_setTileMapDataColumn(..) / VDP_setTileMapDataColumnEx(..)
VDP_setTileMapColumn(..) / VDP_setTileMapColumnEx(..)
added TransferMethod parameter to many tilemap set methods
added tilemap wrapping support to VDP_setTileMap(..) and VDP_setTileMapEx(..) methods.
added setupVram parameter to VDP_setPlaneSize(..) function
removed vdpSpriteCacheQueue table (replaced by new DMA_QUEUE_COPY)
re-introduced VDP_loadTileData(..) method in vdp_tile.c unit (no more assembly code for this one)
moved font loading in VDP_resetScreen() method (fix)
PALETTE
fixed palette fading so it correctly trigger during vblank (avoid CRAM dot)
fixed minor issue in palette fading (sometime not properly doing last fade step)
MEMORY
fixed MEM_getLargestFreeBlock(..) method
added MEM_pack() method to help reducing memory fragmentation
removed MEM_init() access as it's not safe to call it externally
increased stack size to 0xA00
MATHS
fixed getLog2Int(..) method
replaced sin tabs to use FIX32/FIX16 (thanks to FireRat for the generator)
TYPES
added new rorxx(..) / rolxx(..) functions which are correctly turned into ROR / ROL instruction when optimization are enabled
Z80
fixed Z80 enable restoration on DMA
general cleanup and refactoring

SAMPLE

Updated for SGDK 1.5 changes
BENCHMARK
added memory information at startup
some changes to adapt to last SGDK
SPRITE
updated resources to use large backgrounds
updated to support long scrolling > 512 px (vertical and horizontal) !
as collision is not implemented, added physic settings using START button so we can play with vertical scrolling too
enemies sprites frames preloaded and animated using new Sprite engine features
Showcase of SPR_loadAllFrames(..) and SPR_setFrameChangeCallback(..) methods
XGMPlayer
updated for easier integration in XGM ROM Builder tool
added notes and tutorial references to README.txt

REFACTORING

TILE_USERMAXINDEX now take allocated VRAM for sprite engine in account !
_voidCallback --> VoidCallback
_joyEventCallback --> JoyEventCallback
PLAN_A --> BG_A
PLAN_B --> BG_B
PLAN_WINDOW --> WINDOW
VDP_PLAN_A --> VDP_BG_A
VDP_PLAN_B --> VDP_BG_B
VDP_PLAN_WINDOW --> VDP_WINDOW
all references to 'Plan' keyword --> 'Plane'
VDPPlan --> VDPPlane
VDP_clearPlan --> VDP_clearPlane
VDP_getTextPlan --> VDP_getTextPlane
VDP_setTextPlan --> VDP_setTextPlane
VDP_setAPlanAddress --> VDP_setBGAAddress
VDP_setBPlanAddress --> VDP_setBGBAddress
VDP_setPlanSize --> VDP_setPlaneSize
all references to 'Map' --> 'TileMap'
Map --> TileMap
unpackMap --> unpackTileMap
allocateMap --> allocateTileMap
VDP_setMap --> VDP_setTileMap
VDP_setMapEx --> VDP_setTileMapEx
Качаем, тестим  :)
Sharpnull:
worm, там у функций новые названия, придётся переписывать и разбираться. Пару недель назад видел в коммитах что он вытворяет с названиями методов, понял что плохая затея обновлять из гитхаба нестабильные версии. Но, когда выйдет стабильная и исправят что-то или добавят, много времени пройдёт.
Теперь можно и SSF2 маппер проверить.

--- Цитата: SPOT от 31 Март 2020, 22:59:38 ---"У MD есть 128 KB mode"
Можно об этом поподробнее?

--- Конец цитаты ---
Ничего не знаю об этом, просто увидел в упомянутом SEGA Mega Drive / Genesis hardware notes by Kabuto (зеркало), что у некоторых моделей есть дополнительная VRAM. Вот обсуждали. Использовать всё равно нет смысла.
Werton:

--- Цитата: Sharpnull от 25 Апрель 2020, 22:51:50 ---Пару недель назад видел в коммитах что он вытворяет с названиями методов
--- Конец цитаты ---
ага, немного напрягает постоянное изменение названий, с константами тоже никак не может определиться, был aplan, потом plan_a, теперь bg_a :neznayu:
worm:

--- Цитата: Sharpnull от 25 Апрель 2020, 22:51:50 ---Теперь можно и SSF2 маппер проверить.
--- Конец цитаты ---
Я как-то давно проверял возможность собирать жирные ромы - запихнул туда целую песню в максимальном по возможности качестве - работало) ну и специально асм вставки делал после 4мб - тоже пахало :neznayu: но с моими познаниями о мапперах - наверно, я чего-то недопонял)

Werton, потом будет layer_b/a))
Segaman:
вот смотрю на такие строчки кода и понимаю, почему в SGDK так все плохо.


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

* по дефолту выключена приостановка z80 во время операций DMA, что тут же открывает двери вылетам на первых моделях мегадрайва в рандомных местах
* стэфан (автор сгдк) на полном серьёзе преподносит эту "фичу", как костыль для ваших там Tectoy-eв, и по дефолту выключает ее заненадобностью, обрекая всех разрабов на проблемы с работой их игр на первых моделях мегадрайва
у меня не просто так с этого горит.
на мой порт Switchblade сделали обзер в далеко не самом лучшем ключе, что подорвало не только мой пукан, но еще и кучи фанов Switchblade, а также пиков, которым я делаю заказы.
чтоб было еще яснее сейчас я отвественен за восстановление невышедших сиквелов Zero Tolerance и там реально очень много чего можно показать.
более того я закончил работу над первым сиквелом и сейчас из-за этого вот видео пики не хотят выпускать его, потому что не уверены в том, что она не содержит таких же багов, как и в Switchblade  :furious:

вот еще масла в огонь.

установка фрейма анимации не обнуляла таймер в версии сгдк 2018го года.
а вот что я вижу в последней версии. совпадение?

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

еще обмолвлюсь, что порт Switchblade начал делать не я, а какой то вафел Z Team и вот в каком виде этот монстр предстал передо мной:
а вот для сравнения то что сделал с этим я с моим другом VLD (тестер и музыкант):
так вот я был вынужден работать на SGDK и на тот момент я и так не был его фанатом.
теперь же когда игра доделана, а все пуканы сожжены, я написал свое двигло, которое использует C++17. вот демка того, что уже есть:
а SGDK я советую обходить стороной, если вы хоть немного себя уважаете. кто знает, сколько еще багов прячется внутри его кода. поучите лучше железо сеги, оно не такое сложное.
а свое двигло возможно я залью в опенсорс, чтоб каждый мог его юзать.
Sharpnull:

--- Цитата: Segaman от 29 Апрель 2020, 23:40:54 ---стэфан (автор сгдк) на полном серьёзе преподносит эту "фичу", как костыль для ваших там Tectoy-eв, и по дефолту выключает ее заненадобностью, обрекая всех разрабов на проблемы с работой их игр на первых моделях мегадрайва
--- Конец цитаты ---
Обычно о таком нужно автору писать, нельзя всего знать, но судя по:

--- Код: ---/**
 *  \brief
 *      Set it to 1 if you want to force Z80 halt during IO port (controller) accesses.<br>
 *      Some Megadrive models (as some MD2) need it to prevent some possible Z80 corruption bugs
 *      (may happen when Z80 access the main BUS during IO port access from 68K).
 */
#define HALT_Z80_ON_IO      0
--- Конец кода ---
Он знал о проблемах (на официальной MD2, как я понял) и всё равно оставил выключенным. Странно.
Конечно для серьёзного SDK нужна тщательная проверка на разных устройствах. Совместимость должна быть макс. по умолчанию, как мне тоже кажется.
Плюс в SGDK и вообще известных продуктов, что там лучше поддержка и т. п.

--- Цитата: Segaman от 29 Апрель 2020, 23:40:54 ---я написал свое двигло, которое использует C++17
--- Конец цитаты ---
Будет закрытым? Какой оверхед?
Werton:

--- Цитата: Segaman от 29 Апрель 2020, 23:40:54 ---SGDK я советую обходить стороной, если вы хоть немного себя уважаете. кто знает, сколько еще багов прячется внутри его кода. поучите лучше железо сеги, оно не такое сложное.
а свое двигло возможно я залью в опенсорс, чтоб каждый мог его юзать.
--- Конец цитаты ---
напиши пул-реквесты или на форум хотябы кинь ему, чего за зря бомбить то. А то, что в бесплатном, любительском фрэймворке, который разрабатывает 1 человек, а пользуют еще 3.5 человека, есть баги, это конечно нонсенс, никогда такого не было, и вот опять  :neznayu:

--- Цитата: Segaman от 29 Апрель 2020, 23:40:54 ---теперь же когда игра доделана, а все пуканы сожжены, я написал свое двигло, которое использует C++17. вот демка того, что уже есть:
--- Конец цитаты ---
Мне кажется я эту демку уже видел, около года назад, где то даже в закладках валяется, но неужели нечего не поменялось с того времени? А двиг хороший будет, точно без багов? а то напишешь игру, а потом придется тебя как стефа, тоже матом крыть :D

--- Цитата: Segaman от 29 Апрель 2020, 23:40:54 ---чтоб было еще яснее сейчас я отвественен за восстановление невышедших сиквелов Zero Tolerance и там реально очень много чего можно показать.
более того я закончил работу над первым сиквелом и сейчас из-за этого вот видео пики не хотят выпускать его, потому что не уверены в том, что она не содержит таких же багов, как и в Switchblade 
--- Конец цитаты ---
А ты его тоже на sgdk писал, или пики из-за того видео, так сказать, доверие к тебе потеряли? А то, что не хотят выпускать, понять можно, после такого фиаско, тестировать перед релизом надо в тройне тщательнее, может просто торопиться теперь не хотят, страхуются. Ну и справедливости ради, до этого, не слышал, про подобные проблемы у других релизов на sgdk.
Segaman:

--- Цитата: Werton от 30 Апрель 2020, 03:30:23 ---Ну и справедливости ради, до этого, не слышал, про подобные проблемы у других релизов на sgdk.


--- Конец цитаты ---
недавно приобрел Md JAP NTSC Model 1.
игры работают отлично, а Xeno Crisis артефачит и вылетает. :)
worm:

--- Цитата: Segaman от 29 Апрель 2020, 23:40:54 ---я написал свое двигло, которое использует C++17
--- Конец цитаты ---
Главное - поддерживать актуальность стандартов и версий :) А то стеф долго сидел на одной и той же GCC 3.4.6, пока не понял, что чем новее версия, тем лучше генерация кода (отрицал это до последнего :lol:) однауко gcc уже далеко ушел с момента обновления компилятора в sgdk, версия 9.3 с Марта доступна...
Dragon:
Скажите, пожалуйста, кому-нибудь уже удалось написать что-то стоящее с помощью SGDK? Всё-таки это С++, не лучше ли писать сразу на ассемблере? Я понимаю, что С++ гораздо доступнее, но все же
Sharpnull:

--- Цитата: Dragon от 02 Май 2020, 18:19:53 ---кому-нибудь уже удалось написать что-то стоящее с помощью SGDK?
--- Конец цитаты ---
Да.

--- Цитата: Dragon от 02 Май 2020, 18:19:53 ---Всё-таки это С++
--- Конец цитаты ---
Это C (Си).

--- Цитата: Dragon от 02 Май 2020, 18:19:53 ---Я понимаю, что С++ гораздо доступнее, но все же
--- Конец цитаты ---
А вот и ответ.
worm:

--- Цитата: Sharpnull от 02 Май 2020, 19:03:44 ---А вот и ответ.
--- Конец цитаты ---
да и + оптимизация в наше время у компиляторов — будь здоров, не то что раньше) программируя на асме в этом плане сейчас не сильно выиграешь, а вот времени и сил потратишь прилично)
Поэтому асм хорош для хацкинга, а C/C++ для геймдева.

На NES вон вообще на питоне хреначить можно... :lol:
Dragon:
Скиньте, пожалуйста, примеры хороших игр, написанных благодаря SGDK. Я тут почитал, Segаman жаловался на баги в ней
worm:
Dragon, ну вот игра намечается)
MaxWay:
Привет. Прошу помощи. Программа CodeBlocks20.03 и SGDK1.51, нажимаю Build и выходи такая ошибка src\boot\rom_head.c  fatal error: genesis.h: No such file or directory. И когда новый проект создаешь или загружаешь готовый все равно та же ошибка.
Sharpnull:
MaxWay, переменных среды не хватает, чтобы находить, про установку для Windows здесь: https://github.com/Stephane-D/SGDK/wiki/SGDK-Installation
Segaman:
Dragon,
мой порт Switchblade на Sega Mega Drive
Официальный геймплей
Полное прохождение во время разработки на стриме
Популярная нынче Xeno Crisis
Порт интересной индюшатины Cave Story
Lunar Laser:
Ещё ламерский вопрос. Си какого стандарта используют при разработке на Mega Drive?

Поддерживается новый стандарт языка, или скачать для начала какую-нибудь книжку начала 90-ых про какой-нибудь Turbo C и стандарт в духе C89 - и по ней учиться?
Segaman:
Lunar Laser, читать книжки про язык программирования на котором пишешь?


Вообще забавно: Я целую игру написал на SGDK, а каким стандартом языка С пользовался при написании - понятия не имею. В какой век живём. Век самоучек и трайхардеров  :)



Судя по версии, компиль должен понимать все существующие стандарты.
По памяти это: C89, C90, C95, C99, C11
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

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