Rev 1032 | Blame | Compare with Previous | Last modification | View Log | Download
Evo SDK надо переделать, но проблема у меня с тем, что я не могу пересобрать тамошнюю систему сборки (которая на пцшном Си).Надо сделать следующие вещи: файлы для диска генерировать не на трд, а отдельно (в том числе странички со спрайтами),а код программы компилировать не под 0x300, а под 0x400 (заодно сдвинуть описатели спрайтов в 0x100 вместо 0x000)- вот эти места я не нашёл.Если это будет сделано в трд версии Evo SDK, я смог бы написать новый загрузчик и переделать обработчик прерываний.Под какой адрес компилить бинарник и под какой - данные - это просто.sdcc -mz80 --code-loc 0x8000 --data-loc 0xBC00 (это модуль.)Но с основной программой интереснее.Она компилится в адрес 0x0006, а данные вообще в 0А потом HEX файл и списки ресурсов скармливаются утилите evoresc.EXE> EVOSDK Resource Compiler by Shiru and Alone Coder 03'12Поставил VC++ 2008, загрузил проект. Ковыряю, интересно.Там жестко прописаны стартовый адрес программы, количество страниц под код, с какой страницы размещать графику и пр.Закончу со вводом паролей (хочу вводить буквы не только джойстиком, но и по человечески с клавиатуры) и займусь тулзой, вынесу все это добро в отдельные параметры.Разбираюсь с тем как собирается проект в evosdkДля начала переделал evoresc под другую систему параметров. Теперь они разбираются по ключу, а не по позиции.Используй такую запись в _compile.bat.Еще вынес STARTUP_ADR в параметры. Однако этот адрес, как я понял, влияет только на то, куда будет положен загрузчик - startup.bin и на предупреждения о размере кода.evoresc -startupaddr 0xe000 -hexfile "%temp%\out.ihx" -startupfile "..\evosdk\startup.bin" -sfxlist "%soundfx%" -musiclist "%temp%\music.lst" -pallist "%temp%\palette.lst" -imglist "%temp%\image.lst" -samplelist "%temp%\sample.lst" -sprlist "%temp%\sprite.lst"https://yadi.sk/d/0rWLhPYQHxfPJwСамое интересное, что код компилируется на адрес 0x0006 и, как я понимаю, все переменные, переходы и пр. тоже адресуются начиная оттуда.Так вот бинарник ни где не переделывается. В evoresc интеловский hex формат преобразуется в бинарник и разбивается на 4 страницы: 12-15, но внутри ни чего не переделываются.Очень странно. Остается только startup.bin. У тебя есть его исходники, можешь глянуть что там происходит?Похоже, всё сложнее, чем я думал.Код действительно ложится в 0x0006, это описано в crt0.s - возможно, оттуда делается startup.bin (не знаю, какой магией).А адреса спрайтов оказываются в 0x0000 из-за того, что страница с этими номерами и с самими спрайтами подключается в нижнее окно (а окна 4000 и 8000 заняты экраном). А надо сделать так, чтобы адреса спрайтов и сами спрайты были в 0xc000, но где генерируются эти адреса - не нашёл.PS Если нужно сменить номера страниц или какие-то другие адреса, это можно сделать.Кажется я нашел где устанавливается начальный адрес спрайтов. И кажется, нашел где устанавливается слот для подключения страниц. Там стоит 0й слот. Это все в evoresc.0xc000 получается 3й слот. А начальный адрес спрайтов какой ставить?Спрайты тоже надо в 0xc000 (или после таблицы, если они в той же паге)evoresc -startupaddr 0xe000 -hexfile "%temp%\out.ihx" -startupfile "..\evosdk\startup.bin" -sfxlist "%soundfx%" -musiclist "%temp%\music.lst" -pallist "%temp%\palette.lst" -imglist "%temp%\image.lst" -samplelist "%temp%\sample.lst" -sprlist "%temp%\sprite.lst"Адрес ланчера в параметрах, спрайты грузятся в 3-е окно, собираются с адреса 0xc000Убрал в загрузчике показ картинки, вернул адрес 0. Грузится, но поскольку спрайты сейчас не там, где надо, скомпилировал игру без спрайтов (2048). Она не работает! При компиляции генерируется 80-90 страниц спрайтов!!! Хотя картинка со спрайтами совсем маленькая. Я хотел вообще оставить без неё, но тогда новый evoresc не запускается.