Просмотр полной версии : 16КБ C64 картридж
greenpill
06.05.2014, 11:54
Кто нибудь делал 16КБ картридж на 128-битной микрухе? Хочу сделать для запуска игрушек с конкурса http://www.rgcd.co.uk/2014/04/c64-16kb-cartridge-game-development.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Rgcd+%28rgcd%29. Поделитесь опытом кто может. :v2_dizzy_roll:
greenpill
07.05.2014, 01:02
Я уже сам разобрался - сварганил себе картридж 16КБ х 8 (в котором записаны 8 программ, переключаются перемычками). За основу взял инфу отсюда - http://home.tiscali.nl/commodore/indexuk.html
Если не секрет, каков получился бюджет ?
greenpill
07.05.2014, 14:47
Если не секрет, каков получился бюджет ?
Пока собрал на макетке из подручных материалов, так что бюджет пока нулевой, думаю доделать чтоб было 16КБ х 16, если интересно вечером скину фото и нарисую схему.
---------- Post added at 13:47 ---------- Previous post was at 13:06 ----------
Можно еще сделать переключение ресетом как в приставках, думаю так удобней будет.
Конечно интересно!
И, думаю, не одному мне!
greenpill
08.05.2014, 00:08
Вот фото с флешкой 2Мбит (256КБ) внутри которой 16 игр по 16КБ, переключаются установкой 4-х перемычек в инверсном двоичном коде. Например 1111 - игра номер 1, 0111 - номер 2, 1011 - номер 3, 0011 - номер 4 и так далее. Если на картридж вывести кнопку ресета и вместо перемычек установить двоичный счетчик, то будет вообще сказка. Правда есть одно неудобство - флешку нужно шить на программаторе. Схему попозже нарисую - сейчас нужно поработать.
CodeMaster
08.05.2014, 07:41
вместо перемычек установить двоичный счетчик, то будет вообще сказка.
В реальности не очень надежно, т.к. не всегда переключается и порой не очень удобно, т.к. после выключения питания приходится перещёлкивать снова, например на игру в конце картриджа. Но, возможно это зависит от схемы переключения.
greenpill
12.05.2014, 22:19
Вот схема картриджа, рисовал от руки, так что сильно ногами не пинать! Если кто захочет, может перевести в электронный вид. :v2_dizzy_punk:
Будут вопросы - задавайте, но я думаю что схема достаточно простая.
Ромы по 16КБ склеиваются в один 256КБ и прошивается в флеш.
http://s1.ipicture.ru/uploads/20140512/thumbs/Qt5uu7Wt.png (http://s1.ipicture.ru/Gallery/Viewfull/40586376.html)
greenpill
12.05.2014, 22:59
И вдогонку игры с конкурса RGCD которые можно в прошить в картридж.
greenpill
13.05.2014, 22:22
Кто может подсказать литературу по изучению ассемблера для Commodore 64 на русском языке? Я сам не программист но, есть у меня идея написать загрузчик для запуска PRG с картриджа - думаю мне это будет по силам... По идее загрузчик должен копировать содержимое PRG с картриджа в нужную область ОЗУ а затем запускать саму программу уже из ОЗУ. Как вам идея?
CodeMaster
13.05.2014, 22:25
Как вам идея?
Для Спектрума и пр. такое есть, почему не может быть для Коммода (даже уверен, что уже есть и для него).
greenpill
13.05.2014, 22:35
Для Спектрума и пр. такое есть, почему не может быть для Коммода (даже уверен, что уже есть и для него).
Есть да, но как в чужой программе разобраться где менять старт адрес, точку запуска, длину файла? Без знания ассемблера то? А если почитать литературу тогда и свое написать не трудно будет.
Кто может подсказать литературу по изучению ассемблера для Commodore 64 на русском языке?
На разных языках : http://www.bombjack.org/commodore/
Советую начать с мануала : C64_Programmer's_Reference_Guide
На русском для С64 ищи здесь : http://commodore64.smforum.ru/
crazy_bender/ex-PLACEBO
15.05.2014, 08:21
32768 $8000
Autostart ROM Cartridge
An 8K or 16K autostart ROMcartridge designed to use this as a
starting memory address may be plugged into the Expansion Port on
the back. If the cartridge ROM at locations 32772-32776($8004-
$8008)contains the numbers 195,194,205,56,48($C3,$C2,$CD, $38,$30)
when the computer powers up,it will start the program
pointed to by the vector at locations 32768-32769($8000-$8001),
and will use32770-32771 ($8002-$8003) for a warm start vector
when the RESTORE key is pressed.These characters are PETASCII
for the inverse letters CBM, followed by the digits 80.An autostart
cartridge may also be addressed at 40960($A000). where it would
replace BASIC, or at 61440 ($F000), where it would replace the
Kernal.
It is possible to have a 16K cartridge sitting at 32768 ($8000).
such as Simon's BASIC, which can be turned on and off so that the
BASIC ROM underneath can also be used.Finally, it is even possible
to have bank-selected cartridges, which turn banks of memory in the
cartridge on and off alternately, so that a 32K program could fit into
only 16K of addressing space.
---------- Post added at 08:21 ---------- Previous post was at 08:03 ----------
короче ничего особо придумывать не надо. все придумано до нас ))) переводи. разбирайся. рекомендую сначала попробовать в эмуле. Обязательно отпишись по результату )))
Если загончик именно в том, чтобы в свой карик запихивать игры, то молчу....
Если просто хочется игры или утилиты с карика запускать, то тогда уж лучше приобрести вот это : http://store.go4retro.com/easyflash-3/
а лучше вот это : http://www.1541ultimate.net/content/index.php
а еще лучше вот это : http://www.syntiac.com/chameleon.html
---------- Post added at 11:07 ---------- Previous post was at 10:55 ----------
А если хватает навыков, то можно самому сделать REU карик на 16мв и тогда уже с него лить любые игры и целую кучу разных прог - сам не пробовал (делать), проводил только эксперименты на 1541 U2 - очень удобно получается, но т.к. есть тот самый 1541 U2, то необходимость использования REU в принципе отпадает, разве что сделать какую-то демо на 16мв :)
greenpill
15.05.2014, 11:32
короче ничего особо придумывать не надо. все придумано до нас ))) переводи. разбирайся. рекомендую сначала попробовать в эмуле. Обязательно отпишись по результату )))
Это я уже прочитал, если 16КБ картридж имеет по адресу $8004-
$8008 специальный паттерн $C3,$C2,$CD,$38,$30 то он автозапускается с адреса $8009. Это все прекрасно, но я упертый такой, хочу запихивать в картридж стандартные программы которые загружаются в ОЗУ по адресу $0801. Поэтому в картридже по адресу $8009 должна быть расположена программа которая копирует основную программу в ОЗУ с адреса $0801.
Я уже повыдирал 20 разных лоадеров, но работают они как-то по разному... Одна программа запускается с одними лоадерами, другая с другими и т.д.
С адреса $8009 должен стоять переносчик программы на адрес $0801, а после этого должен быть переход на адрес запуска, т.е. который указан после SYS команды в оригинальной программе.
т.е. после того, как программа перенесена на свои исходные адреса она должна стартовать с указанного адреса после SYS.
---------- Post added at 11:51 ---------- Previous post was at 11:48 ----------
И еще не надо забывать про то, что должны быть возвращены все векторы по местам или проще говоря нужно вернуть все банки памяти в исходное положение, как при старте компьютера. Не обязательно, что это нужно везде, но некоторые программы могут обращаться к BASIC, а если он у Вас отключен, то и программа работать не будет (для 16кв картриджей).
---------- Post added at 11:59 ---------- Previous post was at 11:51 ----------
И можно поинтересоваться, что значит повыдирал 20 разных лоадеров?
greenpill
15.05.2014, 12:35
И можно поинтересоваться, что значит повыдирал 20 разных лоадеров?
Ну например вот...
ясно, там много лишнего, сейчас через часок где-то выложу Вам карик...
прям сейчас и займусь компановкой :)
crazy_bender/ex-PLACEBO
15.05.2014, 12:42
а вообще есть прога для конвертации программ в образы картриджей
greenpill
15.05.2014, 13:00
а вообще есть прога для конвертации программ в образы картриджей
Ссылка есть? Вроде уже весь нет прошерстил по этому вопросу...
crazy_bender/ex-PLACEBO
15.05.2014, 13:32
есть в эмуляторе VICE. вот описание команд
http://vice-emu.sourceforge.net/vice_13.html#SEC260
greenpill
15.05.2014, 13:52
есть в эмуляторе VICE. вот описание команд
http://vice-emu.sourceforge.net/vice_13.html#SEC260
"The cartconv program is a cartridge conversion utility, it can convert between binary and .crt images and it can 'insert' binary and/or .crt images into the EPROM type of cartridges."
Эта утилита конвертирует сдампленный bin файл в crt формат для эмулятора и наоборот.
crazy_bender/ex-PLACEBO
15.05.2014, 14:00
товарищ один переделывал prg в crt этой прогой и все работало
---------- Post added at 14:00 ---------- Previous post was at 13:59 ----------
кстати вы бы сначала попробовали. а то все вам не так )))
Короче говоря нормальный у Вас "загрузчик" - сначала не обратил внимания, что там уже есть переносчик памяти, поэтому и подумал что много лишнего. Так а почему он криво работает? я после всех заморочек почти тот же код и получил...
greenpill
15.05.2014, 17:51
Короче говоря нормальный у Вас "загрузчик" - сначала не обратил внимания, что там уже есть переносчик памяти, поэтому и подумал что много лишнего. Так а почему он криво работает? я после всех заморочек почти тот же код и получил...
Спасибо за помощь, если можно скиньте Ваш код с комментами, и еще я как начинающий немогу разобраться какой обьем памяти переносится? Идеально было бы написать загрузчик обьемом не более 128 байт что бы переносил программу с адреса $8080 длиной 16256 байт.
в файле собственно старт и переносчик - всё с небольшими комментами.
углубившись в тему сообщу, что данный код будет работать только для программ, которые не "наступают" на адреса выше $7fff, т.е. не задевают картридж.
для того, чтобы можно было использовать память выше $7fff нужно писать дополнительный код, который будет находиться уже в самой программе предназначенной для переноса.
так что, если Вы собираетесь использовать крякнутые игры типа 16 кб, то скорее всего этот номер не пройдёт.
нужно иметь это ввиду или тогда уже использовать картридж другого типа, ну и всё равно без написания дополнительного кода не обойтись - да и вообще это уже совсем другая песня.
Образ картриджа с расширением .crt я делал при помощи проги mcart, предварительно скомпоновав всё в эмуле CCS64 и записав в binary file.
а по поводу объёма так это любой, который не будет выскакивать в итоге за адрес $BFFF
Ну и напоследок, в подтверждение того, что код работает, прилагаю архивчик с игрой, которую я упаковал в 8кб и 16кб карики - ну вот что-то типа этой игры - самое оно, но она изначально не весила 16кб.
greenpill
16.05.2014, 13:12
Ну и напоследок, в подтверждение того, что код работает, прилагаю архивчик с игрой, которую я упаковал в 8кб и 16кб карики - ну вот что-то типа этой игры - самое оно, но она изначально не весила 16кб.
Спасибо потестю :v2_dizzy_botan:
Будут вопросы по поводу компановки в эмуле - всегда пожалуйста!
greenpill
16.05.2014, 15:35
Будут вопросы по поводу компановки в эмуле - всегда пожалуйста!
Подскажи пожалуйста, как узнать адрес старта конкретного PRG файла? :v2_conf3:
crazy_bender/ex-PLACEBO
16.05.2014, 21:31
а если басик лоадер посмотреть?
greenpill
16.05.2014, 22:57
а если басик лоадер посмотреть?
Уже понял, спасибо
greenpill
17.05.2014, 12:07
Вот для теста два кряка перенесенных на картриджи, тестируйте... :v2_dizzy_roll:
greenpill
24.05.2014, 22:47
Еще два кряка свежей игры... :v2_dizzy_step:
greenpill
28.05.2014, 08:53
Вот еще...
blackinwoman
13.05.2015, 01:43
обновлю тему насчет картриджей
хочу сделать себе fastloader карик
прсмотрел схему первого и до сих пор актуального картриджа от epyx
http://ar.c64.org/rrwiki/images/5/54/Epyx_FastLoad_Schematics_large.png
так вот а зачем там буфер стоит, может кто пояснить ?
сигналы ROM L, IO это сигналы с c64 на карик
сигнал EXROM это сигнал с карика на c64
так вот когда на EXROM лог. 0, то оно подключает вместо бейсика ПЗУ карика в 16 кб, причем там организация будет всегда по 2 x 8 кб (много у коммадора было 8кб пзу и вместо одной на 16 кб параллелили две по 8) и управляли ими по сигналам с C64 romH и romL ...
а сигнал IO2 принимает значение ЛОГ 1, когда PC проца находится в определенном адресе (не пересекающемся с бейсиком) ...
вот и не понятно почему именно IO2 + ROML включают на шину эту ПЗУ ?
а остальные сигналы зачем на буфер повесили ? была мысль чтоб карик не считали програмно с C64 ?
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot