Разработка и ромхакинг > Программирование
Разработка под M68K
Segaman:
нифига се ресы. я такую билибирду никада невидел (без обид). и компиль на 4мега. абалдеть. я фигею, как ва всём этом ещё и можно было танки слепить.
Тема была создана из разливанного флуда в Battle City для SEGA MEgaDrive2. Заголовок можно поправить, обращайтесь если что...
Yaranga.
totin:
--- Цитата: Segaman от 18 Август 2009, 22:47:14 ---нифига се ресы. я такую билибирду никада невидел (без обид). и компиль на 4мега. абалдеть. я фигею, как ва всём этом ещё и можно было танки слепить.
--- Конец цитаты ---
ты привык на примитивном уровне в асме копаться а нормальные инструменты не 60кило весят и языки есть поинтереснее чем асм, но их учить конечно же нужно в отличии от асм. а асм годится только для узкого круга азадчь, и там где можно без него обойтись, лучше все таки обойтись, дабы не тратить свое время в погоне за сомнительными перспективами в виде размера/скорости. вот такое мое ИМХО (без обид)
Добавлено позже:
фраза "я фигею, как ва всём этом ещё и можно было танки слепит" вообще с ног валит (: дружище, это C, может это будет для тебя откровением, но на этом языке делают большинство софта, в особенности игр, в том числе и для SEGA, или ты думаешь что всё на асме пишут? может для денди и было все на асме а для сега я думаю по крайней мере большинство хороших игр было на С
Zephyr:
--- Цитата: Segaman ---я фигею, как ва всём этом ещё и можно было танки слепить.
--- Конец цитаты ---
Целиком согласенс с totin. Segaman, ты сам подумал что написал??? Или у кого-то просто дикое желание выпендриться!?
Segaman:
Не, просто я действительно фигею. я на C видел тока проги на комп, но никак не гамы на сегу.
totin:
--- Цитата: Segaman от 19 Август 2009, 14:31:23 ---Не, просто я действительно фигею. я на C видел тока проги на комп, но никак не гамы на сегу.
--- Конец цитаты ---
а ты вообще много видел исходников сеговских игр? хоумбрю и системный код типа драйверов не в счет. я думаю что вообще не видел, я тоже не видел но можно смело сказать что их писали на С так как нет ни одной объективной причины по которой мог бы использоваться асм в качестве основного языка. я даже только что припомнил исходники технопоповской игры/демки "ship" которые валяются вмести с исходниками GEMS, отгадай на каком языке написано?
ты так рассуждаешь "я на C видел тока проги на комп" так и что? ты много чего не видел, а я не один год проработал в игрострое и за плечами не один проект, и проекты разные, для разных платформ, крупные и не очень, масштабные,над которыми работала большая команда и свои поменьше. я точно знаю как и на чем нужно делать, а то что ты на асме копашишся и больше ничего не видишь это твои проблемы, у тебя такими темпами останется все на аматорском уровне, типа покодил, покодил, слепил pong, порадовался за себя и на этом все. хотя если особо ничего не собираешся делать, а кодить на асме в кайф и делается все это исключительно ради удовольствия а не ради результата то это другое дело.
лично у меня ассемблерная романтика закончилась давным давно, ещё во времена спектрумов и меня не "возбуждает" мысль о тотальном контроле над каждым тактом процессора
sergi:
Я видел, кстати я даже имею исходники нескольких игр - если кому надо то могу поделиться запросто
2 игры
Turrican 3
Mr Nuts 2
проблема одна - исходники то С, но вообще девелоперский софт был на компьютере Амига
поэтому нужно както коды эти перекодить уже под ваш девелоперский компилятор
но вполне реально думаю - там все есть практически
totin:
вот, кстати, вспомнил после поста sergi ещё одну проблему асмокода - он не переносим абсолютно, сишный можно пересобрать под целевой процессор а асм разве что переписать. а код С от одного к другому компилятору сильно менять не прийдется.
sergi:
Ну вот Mr Nuts 2 кто хочет сделать?, точнее нужно переделать, какбы платформер
си можно перенести он универсален, ну конечно главное чтобы железо могло реализовать это дело
просто хароших компиляторов на разные платформы к сожалению не так уж много, сега то харошо в этом плане прошарена, а остальные все через одно место :-\
totin:
sergi компиляторы должны быть нормальные, как минимум GCC под любой проц я думаю есть. думаю вполне можно пользоваться сеговским компилем для программ для ягуара, к примеру (там же вроди тоже м68к?).
sergi:
Там у сопроцессоров свои инструкции ну базовый код на M68K
но сколько видал компиляторов - все интерфейс имеют хуже наверно нельзя придумать и в плане ягуара - там такая хрень, компиляторы есть но кривые код может и не работать потом или сбоить :-\
totin:
да, кривой код и у сеги бывает, SGCC к примеру глюкавый. интерфейс у них наверно у всех одинакоый - мейкфайл и командная строка, я честно сказать ненавижу мейкфайлы, но чтоже поделаешь, от них никуда не деться (: правда иногда их любезно автоматом генерируют и можно в гуе все настройки производить. вообще если помчуаться и хорошо все настроить, прикрутить к любимой IDE то дальше просто кайф. я к примеру работаю с сегой через нетбинс или визуал студию, очень удобно
sergi:
Ну я с асмом работаю, но мне так проще и нужнее, т.к. хочу для себя много вещей понять
но програмить можно и на асме, он особо от си мало отличается как таковой в плане различных математических действий
вот сорс http://www.raregame.ru/file/Mr_Nutz_2_source_code_MD.zip
кому нада - смотрите
totin:
сбосибо за серцы, взгляну как деды делали (:
romanich:
Решил не плодить темы, написал в этой (коль уж кодинг для 68k, точнее Си)
Страница по Сеге МД:
http://segasecret.narod.ru
Демка с исходниками (тамже и бинарник)
Это так... в качестве разминки :)
А вообще желается написать небольшую игру. С нуля... Свою... Со своими главперсами...
Поэтому не порт и не хак и даже не ремейк :)
Вопрос Си-программистам 68k:
кто-нибудь объявлял static-переменные в функциях?
типа пример:
--- Код: ---void Function(void)
{
static char z=5; //При первом вызове z будет 5 (потом ещё на 1 увеличится)
z++; //z будет увеличиваться при каждом вызове функции
}
--- Конец кода ---
нужно для того, чтобы не плодить кучу глобальных переменных и не присваивать им начальные значения в main()
у меня почему-то пакет(XGCC) делает переменную z read only, тоесть суёт в ROM-секцию
а нужно, чтобы в RAM и делал начальное присвоение.
totin:
все будет нормально, если не будешь инициализировать переменную начальным значением
Добавлено позже:
кстати, в GenesisDev04 походу посвежее компилятор чем в XGCC
romanich:
--- Цитата: totin от 01 Сентябрь 2009, 14:11:50 ---все будет нормально, если не будешь инициализировать переменную начальным значением
--- Конец цитаты ---
в GenesisDev04 (от Stef'а который) тоже нельзя начальное значение присваивать, если нужна переменная?
--- Цитата: totin от 01 Сентябрь 2009, 14:11:50 ---кстати, в GenesisDev04 походу посвежее компилятор чем в XGCC
--- Конец цитаты ---
скачал MDKit с вашей ссылки, в папке bin лежит приложение sh.exe - оно не запускается под WinXP PE SP3 пишет, что "sh.exe - не является приложением Win32" :(
По этой же причине не отрабатывают до конца make-файл...
totin:
поставь cygwin, с ним все должно нормально работать, хотя по началу я и без него умудрялся, но возникали коекакие проблемы, особенно если запускать компилятор из IDE
GenesisDev04 (он же GCC 3.4.6) тоже нельзя инициализировать автоматом все, что в RAM находится. но нулями вполне можно все инициализировать если в самом начале, перед переходом на main, залить весь RAM нулями, что и сделано в sega.s который лежит в GenesisDev04
такое вот там есть:
* clear Genesis RAM
lea 0xff0000,%a0
moveq #0,%d0
clrram: move.w #0,(%a0)+
subq.w #2,%d0
bne clrram
jmp start
думаю это вполне нормальный вариант
Добавлено позже:
кстати, твой ДиджиталТрешер - вешь! (:
romanich:
--- Цитата: totin от 02 Сентябрь 2009, 03:17:54 ---GenesisDev04 (он же GCC 3.4.6) тоже нельзя инициализировать автоматом все, что в RAM находится.
--- Конец цитаты ---
Ну тогда не вижу причин менять XGCC (к которому уже успел прилипнуть :)
--- Цитата: totin от 02 Сентябрь 2009, 03:17:54 ---нулями вполне можно все инициализировать если в самом начале, перед переходом на main, залить весь RAM нулями, что и сделано в sega.s
--- Конец цитаты ---
так и сделано, только не всегда нулями нужно и не всё...
--- Цитата: totin от 02 Сентябрь 2009, 03:17:54 ---кстати, твой ДиджиталТрешер - вешь! (:
--- Конец цитаты ---
спасибо :) старался... :)
Ti_:
кто знает в чем отличия команды JSR $4EBAxxxx (pc?) от bsr.w $6100xxxx (pc)
и с jmp ($4EFA)/ bra.w ($6000 также.
есть ещё JSR 4EB8 xxxx , xxxx - абс. адрес +$8000 до -$8000. ( $xxxx $FFFFxxxx)
почему 4eb8 не было использована в игре Rock n' roll Racing , а только 4eb9 xx xx xx xx (jsr xxxxxxxx) ?
еще интересует что такое st sttr (что-то не нашел у себя)
Smoke:
JSR $4EB8xxxx -- это обычный джамп, где ХХХХ это 2-х байтовый адрес. Прыгать можно от 0 до $FFFF. Редко используется.
Джампы относительно PC по-моему ничем и не отличаются от bsr.w/bra.w, так что не нужно заморачиваться с ними, размер у них одинаковый.
--- Цитата: Ti_ ---еще интересует что такое st sttr (что-то не нашел у себя)
--- Конец цитаты ---
Это что? Ни разу не встречал, и в мануалах нету
Навигация
Перейти к полной версии