8bit

Ответить в тред Ответить в тред
Разработка для Dendy/NES/Famicom 05/10/16 Срд 01:49:59 24381
2Кб, 311x62
311x62
Ни для кого не нужный, кроме меня, тред о разработке игр для Dendy/NES/Famicom.

Есть ли здесь разработчики, которые могут пояснить, что лучше приобрести в плане качества и приближения к работе оригинальной приставки: какой лучше клон Денди, или придется покупать Фамиком? (на аутентичную НЕС нет денег.)
Аноним 05/10/16 Срд 20:04:45 24392
2Кб, 250x224
250x224
>>2438 (OP)
Материальная часть - дело десятое. Как у тебя дела с программированием?
Аноним 05/10/16 Срд 20:42:40 24413
>>2439
Хорошо.

> Материальная часть - дело десятое.
Но хочется тестировать в железе (чтобы выпустить игру в железе).
Аноним 05/10/16 Срд 20:54:31 24424
48Кб, 455x426
455x426
>>2441
Ты хотя бы освой разработку и запусти на эмуляторе. И вообще, что именно ты собрался писать?
05/10/16 Срд 21:01:20 24435
>>2442
Крутые игры.
Разработку освоил, на эмуляторе запускал.
Что, если хочу запилить собственный маппер? Его нужно прототипировать и делать это примерно параллельно с разработкой игры, чтобы понять, каким может быть маппер и как с ним интерфейсить
Аноним 05/10/16 Срд 21:21:17 24466
>>2443
Вбрасывай тогда свое творчество сюда. И заодно расскажи: зачем тебе собственный маппер?
Аноним 05/10/16 Срд 21:31:30 24497
>>2446
Чтобы удивить игроков спецэффектами / поддерживать кучу памяти, щас же технология развилась, можно больше всего за меньше денег

вбрасывать нибуду
Аноним 05/10/16 Срд 21:37:49 24518
170Кб, 1920x1080
1920x1080
>>2449
Звучит неплохо. А как у тебя вообще с электроникой? Плату картриджа развести сможешь?
И почему не хочешь вбрасывать? Собираешься сразу выпускать на физическом носителе?
Аноним 05/10/16 Срд 22:11:09 24549
>>2451
В электронике еще плохо разбираюсь.

Не хочу вбрасывать, потому что секретная разработка.
Аноним 05/10/16 Срд 22:27:34 245510
>>2454
Прямо настолько секретно?
Аноним 05/10/16 Срд 22:45:16 245711
Аноним 05/10/16 Срд 23:09:20 245912
>>2457
Скрины тогда покажи что ли.
Аноним 05/10/16 Срд 23:49:07 246413
>>2459
Нет, не в этом смысле, а просто секретная
Аноним 05/10/16 Срд 23:52:47 246514
>>2464
Но что там на самом деле такого секретного? Поделился бы подробностями с аноном.
Аноним 06/10/16 Чтв 15:59:11 247715
>>2441
Посоветуй, что почитать начинающему? Пока изучаю дебаггер FCEUX и ассемблер 6502.
До этого приходилось писать на асме под DOS и ZX Spectrum, но это было давно, в далеком детстве, сейчас многое уже забыл.

Хочу сделать хак Mario Bros с разными персонажами (в оригинале Луиджи - спрайт Марио с другой палитрой), реально ли это?
Аноним 06/10/16 Чтв 16:07:05 247916
85Кб, 1024x768
1024x768
Репост с загнивающего петухленда. Это больше про взлом, модификацию уже существующего кода.

[NES Ромхакинг] Первый урок. Введение

Многие из вас, желавшие поиграть в игры Денди, Сеги и других платформ, дабы поностальгировать и вспомнить "детство золотое", задавались вопросом - как воплотить это в жизнь, как можно поиграть в эти игры на мобильном телефоне/смартфоне/планшете/ПК и пр.? Попробовав самые разные эмуляторы консолей, вы выбираете один из них (или сразу несколько, как я) в качестве оптимального варианта на все случаи. И, естественно, начинаете воплощать мечту детства - играете во все игры, которые раньше были вам недоступны или неизвестны.
Но со временем просто играть вам, разумеется, надоедает, и поэтому вы начинаете задаваться вопросом: как можно видоизменить/улучшить/переделать эти игры? Ведь, как известно, и разработчики оригинальных игр, и пираты, не брезговали ромхакингом. Действительно, зачем тратить на разработку новую игру (читай - сиквел того же Мегамена) много денег и времени, когда можно использовать уже готовый движок, готовую музыку и звуковые эффекты, готовые спрайты, и переделать их с тем, чтобы выпустить сиквел как можно скорее. Удобно, не так ли? И геймеры довольны, и разрабы озолотились. ;) Увы, этим также пользовались и пираты, выпуская псевдо-сиквелы, годами обманывая геймеров Европы, Азии и стран СНГ... :(
... Но мы с вами не будем брать пример с пиратов и намеренно затирать копирайты разработчиков, верно? Если так - давайте же приступим к изучению ромхакинга! :)
Для первого урока по ромхакингу NES игр вам понадобится:
A) эмулятор, имеющий в себе кучу встроенных утилит - в данном случае это FCEUX 2.2.3. Его можно найти на сайте emu-russia.net . Если у вас более старая версия этого эмуля - ничего страшного, на ромхакинг это никак не повлияет. Просто в новой версии добавлены новые мапперы (включая CoolBoy).
Б) ром Super Mario Bros. (JU) [!]. Если его нет - можете скачать его на том же сайте. Или найти на сайте romfind.com
Итак, перейдём, непосредственно, к делу. Открываем Супер Марио с помощью указанного эмуля и нажимаем "старт". Для начала научимся менять количество жизней этого героя. Заходим в Tools->RAM Search. В появившемся окне выставляем Equal to - Specific Value - в форме рядом с этой фразой вбиваем цифру 2 и жмём на Search:

"Почему 2, если у героя на самом деле 3 жизни?" - спросите вы. Отвечаю: в некоторых играх есть такая особенность - когда отображаемая цифра или количество палочек-сердечек не совпадают с тем значением, что указано в ram. Например, когда вы ищете лайфбар, состоящий из 10 палочек/сердечек, и не находите - вам придётся выставить условие поиска Less than - Previous value, чтобы найти количество сердец по значению, которое уменьшается на определённое число каждый раз при получении урона. Конкретно в Супер Марио герою присваивают 2 жизни, хотя отображается 3. Из этого следует, что жизни у Марио уменьшаются вот так: 2, 1, 0 (то есть, ноль тоже используется как значение, и game over происходит после того, как значение "уходит в минус", а точнее - становится равно FF).
После того, как вы нажмёте на Search, вы получите:
Аноним 06/10/16 Чтв 16:09:15 248017
88Кб, 1024x768
1024x768
>>2479
Как видите, количество переменных резко уменьшилось. Нажимаем ещё раз, чтобы отсеять те, которые меняются в данный момент игры. Теперь их стало ещё меньше, верно? Чтобы знать наверняка, что изменится после потери жизни - выставляем условие поиска: Less than - Previous value. Это позволит выделить те переменные, что изменились после потери жизни. Теперь идём и напарываемся на гумбу. Смотрим внимательно на результаты в RAM Search. Даже без повторного поиска видим, что переменная 075A стала 1, была 2, а количество изменений равно 1.
Чтобы убедиться в этом - нажмите правой кнопкой мыши на этой переменной. Вы попадёте в HEX Editor - шестнадцатиричный редактор - где курсор будет стоять на этой переменной (как на этом скрине). И вводите, к примеру, 08 вместо текущего значения. После потери жизни их станет 8 (нумерацию жизней в этой игре я уже написал). Если произошло так, как я написал - значит, вы нашли значение жизней. Теперь осталось лишь ввести нужное вам значение в ROM и сохранить результат для дальнешего использования.
Для этого жмём на самом значении правой кнопкой мыши и выбираем Add Write Breakpoint For Address 075A:
Аноним 06/10/16 Чтв 16:10:43 248118
67Кб, 1024x768
1024x768
>>2480
Тут же откроется отладчик. Сворачивайте его. Если закроете - придётся залезать в Debug->Debugger и включать его заново. Жмём Reset (или Power, роли не играет). И тут же наш брейкпоинт срабатывает. В данный момент значение А переменной равно нулю, так что пропускаем это, нажав Run в отладчике. И в этот раз значение А переменной равна нулю, снова жмём Run. Теперь мы видим, что значение стало равно 02. Это - то. что мы искали:
Аноним 06/10/16 Чтв 16:11:56 248219
79Кб, 1024x768
1024x768
>>2481
К слову, при наведении на нужную нам строку в самом низу отладчика отображается местонахождение этого выражения в ROM. Запоминаем эту строку, заходим в HEX-editor, View-ROM File, и находим это место. Меняем 02 на какое хотите (желательно не выше 63 (62) - в хексе это 99). Да, если хотите сделать конкретное значение - вам понадобится Калькулятор, а точнее - инженерный Калькулятор. В поле вводите любое число в десятичной (DEC) системе (например, 20), переключаетесь в HEX - получаете 14. Именно HEX значения вам понадобятся в ромхакинге. :)
Второй способ: нам известно значение в RAM - тогда включаем HEX Editor и переходим к этому адресу. Для прокрутки я использую кнопки PgUp и PgDn. Можно также перейти напрямую по адресу, зайдя в хексе File->Goto address и вписав туда полученный адрес. Делаем, как на этом скриншоте:
Аноним 06/10/16 Чтв 16:13:34 248320
67Кб, 1024x768
1024x768
>>2482
Дальше - также меняете значение и жмёте Save ROM, чтобы сохранить изменения в текущем роме, или Save ROM As, чтобы сохранить изменения в новом роме, не меняя текущий:
Аноним 06/10/16 Чтв 16:16:03 248421
>>2483
Собственно, подобным образом можно не только накручивать жизни и сердечки в играх, но ещё и увеличить время, скорость персонажей и многое-многое другое. ;)
P. S.: также рекомендую вам скачать и установить утилиту Insectduel_s SMB Utility Rus.exe, с помощью которой вы сможете в Супер Марио задать количество жизней одним кликом, указать количество миров, изменить время, свойства уровней, превращения Боузера после смерти, переделать все уровни, задать их тип и погодные условия, а также переписать интро игры.
Для изменения заставки игры я рекомендую использовать smbte10b.zip. Правда, нужно учесть, что место на заставке не резиновое, за поля залезать нежелательно, иначе изменения не сохранятся.

Файл Insectduel_s SMB Utility Rus.exe:
http://spaces.ru/files/view/?Li=315023&Lii=39618922&Link_id=1673502&Lt=1&Read=39618922&Sn=29&name=lancuster&sid=::sid::

Файл smbte10b.zip:
http://spaces.ru/files/view/?Li=315023&Lii=56687485&Link_id=1546930&Lt=1&Read=56687485&Sn=10&name=lancuster&sid=::sid::
Аноним 06/10/16 Чтв 16:17:33 248522
84Кб, 1024x768
1024x768
Первый урок вышел достаточно длинным, чтобы вписывать в него что-то ещё. Поэтому выкладываю дополнение отдельной темой - "Как сделать бесконечные жизни и пр.."
Если вы уже прочли предыдущую статью - значит, вы уже знаете, что нужно делать.
Открываете ром, заходите в Debug->Debugger, вводите в появившееся окно 075A, ставите галочку на Write и нажимаете ОК. Затем традиционно идёте на гумбу и сливаете жизнь. В этот момент сработает брейкпоинт:
Аноним 06/10/16 Чтв 16:18:40 248623
95Кб, 1024x768
1024x768
>>2485
То, что выделено на скриншоте (на что указывает стрелка сбоку) - это и есть код уменьшения жизни (сокр. англ. DEC - DECREASE | Уменьшение). Его необходимо затереть. Для этого переходим по указанному адресу в ROM к данным трём байтам и делаем вот это:
Аноним 06/10/16 Чтв 16:19:31 248724
>>2486
Теперь значение будет записываться в LDA, а не будет уменьшаться, как было изначально.
Можно было затереть все три байта вот так: EA EA EA. Но к Супер Марио это неприменимо, так как после потери жизни вы получите game over.
Так что - да, в некоторых играх тупое затирание байтов типа этого:

EA - NOP
EA - NOP
EA - NOP

не прокатит. В таких играх нужно заменять только один байт, но (!) на специальные значения. Вот так:

85 - A5
C6 - A5
CE - AD
8D - AD
9D - AD

Если будут выражения типа 99 ХХ ХХ - тогда, конечно, прокатит затирание байтов EA-шками.
... Ну, и, разумеется, делаем Save ROM или Save ROM As.
Аноним 06/10/16 Чтв 16:55:00 248925
>>2477
Читать wiki.nesdev.com, я почти все там нашел.

>Хочу сделать хак Mario Bros с разными персонажами (в оригинале Луиджи - спрайт Марио с другой палитрой), реально ли это?
Да, но, если не менять маппер, придется выкинуть пару квадратиков графической информации, так как там пространство забито.
Аноним 06/10/16 Чтв 17:37:25 249226
>>2489
Разве в SMB используется какой-то маппер?
Аноним 06/10/16 Чтв 18:10:55 249427
602Кб, 889x702
889x702
Аноним 06/10/16 Чтв 18:11:35 249528
>>2492
я имел в виду добавить
Аноним 06/10/16 Чтв 18:21:21 249729
>>2494
Доигрался с кодом?
06/10/16 Чтв 22:11:33 250130
>>2497
просто няшная картинка
Аноним 06/10/16 Чтв 22:23:23 250331
>>2501
Не очень. Такой эффект можно было получить прикоснувшись к картриджу.
Аноним 08/10/16 Суб 01:07:14 250532
29Кб, 480x254
480x254
>>2492
Mario Bros, а не Super Mario Bros, братюнь. Игра, где двое братишек пытаются съебаться из замкнутого темного помещения через трубу, отвинтив вон ту хуйню.

>>2489
Думаю, можно выкинуть нахуй раков, оставив из врагов только купа черепах (их планирую перерисовать в зеленых слоников) и мух, которые мешают спать. За вики спасибо, уже нагуглил.
Аноним 08/10/16 Суб 11:13:21 250733
>>2505
Было бы убергодно, конечно, реализовать зеленого слоника в Марио. Но вместо того чтобы что-то вырезать, можешь покопаться в улучшенных версиях, где есть маппер.
Аноним 08/10/16 Суб 15:52:56 250834
2Кб, 256x240
256x240
Mario Bros. Classic. Выходил в Европе, более точно повторяет аркадный оригинал. Есть катсцены, и можно менять направление в прыжке.
https://youtu.be/zll16wdrnsM
Kaettekita Mario Bros.
Версия для FDS. Добавлена реклама и новый игровой режим, плюс, можно сохраняться.
https://youtu.be/SsjPIgE-smI
Аноним 01/11/16 Втр 04:40:59 253335
Братишки, возможно вам это пригодится. Полная система команд 8-битного процессора MOS 6502:
http://www.emuverse.ru/wiki/MOS_Technology_6502/Система_команд

В NES'овском процессоре нет команд для работы с двоично-десятичными числами (BCD), т.к. в играх они не нужны.
Аноним 01/11/16 Втр 04:48:06 253436
60117[1].jpg 4Кб, 512x448
512x448
Кстати, спрайт слоника можно взять из игры CJ's Elephant Antics
Аноним 24/10/17 Втр 12:48:51 277737
Аноним 29/10/17 Вск 14:04:26 278338
>>2494
>>2501
анон я её использую в качестве бекграунда для своего рисунка если ты не против
Аноним 13/03/18 Втр 12:03:23 311639
бамп!
Аноним 09/05/18 Срд 17:33:37 317140
бамп
Аноним 10/05/18 Чтв 14:19:03 317241
бамп
Аноним 17/06/18 Вск 19:12:02 324642
О, какой интересный тред. Я тоже хочу вкатиться в несдев, пробовал курить техдоки, пока что ничего толком не понятно. С ассемблером, думаю, проблем не будет (владею несколькими).
Аноним 04/09/18 Втр 15:51:48 334743
Я думаю стоит приобретать Dendy Classic Junior 2
Аноним 11/09/18 Втр 16:24:45 335244
>>2438 (OP)
NES разработчик в треде, задавайте ответы. Погляжу за тредом некоторое время, похуй что доска мёртвая.
Аноним 18/11/18 Вск 23:56:50 345145
Могу помочь, задавайте вопросы, помогу вкатиться.
Аноним 20/11/18 Втр 00:51:02 345446
>>3352
>>3451
На чем пишете? Асм, сишка? Какой компилятор?
Аноним 20/11/18 Втр 01:43:37 345547
>>3454

Возможно то и другое, как по отдельности так и совмещение. Си (сс65) + neslib + famitone2 - очень хоршая база, чтобы вкатиться, освоиться и развиваться. Этих сей вполне хватает на игру уровня супермарио, ну и прототипировать на сях удобно.
Сам пока что пишу на сс65, постепенно углубляясь под капот в ассемблер.

>>3352
Аноним 20/11/18 Втр 22:19:35 345648
>>3454
ассемблер на nesasm

Какой в этом смысл, спросите себя, надо ли вам это. Игроделание уровня, хотел в детстве сделать игру.

Звуковые движки пижжу с других игр.
Аноним 20/11/18 Втр 23:21:49 345949
>>3456
>Какой в этом смысл, спросите себя

На физических носителях игры неплохо продаются. И для NES и для Сеги и для некоторых других консолях.

>>3456
>пижжу с других игр

Зачем, если есть Famitracker + либа Famitone? Подойдет и для твоего несасма.
Аноним 20/11/18 Втр 23:22:05 346050
>>3459
> консолей
фикс
Аноним 21/11/18 Срд 00:02:29 346151
>>3459
Я не музыкант, и мне лень уже ковыряться в этом.
Что я буду музыку писать? нет. Звуки придумывать? нет.
Проще взять готовое.

Для серъёзных целей нужно разделять задачи, чтоб задачей занимался профессионал своего дела. Для игры типа Марио, звуки лучше взять из Марио.
Аноним 21/11/18 Срд 00:23:07 346252
Нужно написать какую нибудь инструкцию, как выводить графен, опрашивать джойстик, загружать уровень, и двигать объекты. Пусть погромируют, кому не лень. Это же очень простое железо, главное понять.

Я вобще руководствовался книжками:
GameDevNES.chm
Архитектура и программирование Dendy.doc
Язык Ассемблера для персонального компьютера ЭПЛ У.Моррер 1987.djvu

Через месяц, после возникновения желания разобраться в программировании под NES, уже был была сделана загрузка одноэкранного уровня, со спрайтом, который даже умел прыгать и взаимодействовать с окружением. Потом я всё забросил.

Сейчас решил доделать начатое.

Не рекомендую ковырять чужие исходники, кто не умеет программировать, потому что желание отпадёт этим заниматься. Я до сих пор в ахуе от чужих исходников, нихуя не понимаю, что там хотели сказать такой кашей.
Аноним 21/11/18 Срд 01:23:21 346353
Аноним 21/11/18 Срд 01:37:42 346454
>>3462

Если пишем на Си, то все инструкции есть в neslib.h. Там весь базис собран в виде библиотеки, нужно только настроить ROM под нужный маппер и вперёд.
С асмами всякими знаком, но 6502 кажется уберущербным с его аккумулятором и двумя индексными регистрами. Новичкам (особенно тем, кто вообще не знает никакого асма) вкатываться в такой асм будет довольно болезненно. Но ничего нет невозможного, конечно.
Аноним 22/11/18 Чтв 00:19:15 346855
Вот набросал в nesasm, спрайт по экрану движется, вредакторе поправить вс и откомпилировать, графен цеплять не нужно.

.inesprg 2;32k PRG 1=16kb
.ineschr 0;1;4 ;8 k
.inesmir 0 ;0 - H, 1 - V
.inesmap 0
;
.bank 0
.org $8000
;

system_start: ;инициализация
sei
cld ;
jsr video_init_0

ldx #$FF ;stack init
txs
jsr memory
jsr video_memory
jsr palette_load

lda #$00 ;записать мусор для спрайта
sta $2006
lda #$00
sta $2006
lda #$FF
sta $2007

jsr video_init_1
game: ;цикл
jsr sprite_

jsr delay_wait
jsr delay

lda #$02 ;загрузка спрайтов из $0200
sta $4014

lda #$00 ;сбросить скроллинг
sta $2005
sta $2005
jmp game
;*
sprite_:
inc <$00
inc <$01
lda <$00
sta $0200
lda #$00
sta $0201
lda #%00000000
sta $0202
lda <$01
sta $0203
rts
;***
memory: ;чистим мемори
ldx #$00
memory_:
lda #$00
sta <$00, X
sta $0200,X
sta $0300,X
sta $0400,X
sta $0500,X
sta $0600,X
sta $0700,X
inx
bne memory_
rts
;***
delay:
lda $2002
bpl delay
rts

delay_wait:
lda $2002
bmi delay_wait
rts
;***
video_init_1: ;увеличение адреса +1 по горизонтали
lda #%00101100
sta $2000
lda #%00011000
sta $2001
rts
video_init_0: ;видео
lda #%00000000
sta $2000
lda #%00000000
sta $2001
rts
;***
palette_load:
lda #$3F ;палитра BG
sta $2006
lda #$00
sta $2006

ldx #$00
ldy #$00
palette_load_bg:
lda pal, X
sta $2007
inx
iny
cpy #$10
bne palette_load_bg
; rts
;***
lda #$3F ;палитра sprite
sta $2006
lda #$10
sta $2006

ldx #$00
ldy #$10
palette_load_spr:
lda pal, X
sta $2007
inx
iny
cpy #$20
bne palette_load_spr
rts
;***
video_memory: ;чистка видео
lda #$20
sta $2006
lda #$00
sta $2006

ldx #$00
ldy #$04
lda #$01
video_memory_:
sta $2007
inx
bne video_memory_
dey
bne video_memory_
rts
;***
pal:
.db $22,$0F,$31,$00
.db $22,$38,$27,$07
.db $22,$36,$17,$0F
.db $22,$0F,$36,$27
;***
.org $9000
.bank 1
.org $A000
.org $B000
.bank 2
.org $C000
.org $D000
.bank 3
.org $E000
.org $F000

.org $FFFA
.dw 0 ;(NMI_Routine)
.dw system_start ;(Reset_Routine)
.dw 0 ;(IRQ_Routine)
Аноним 22/11/18 Чтв 00:20:51 346956
\t это пробелы

не годится сюда копировать.
Аноним 25/03/20 Срд 23:33:09 376457
56992.png 5Кб, 120x120
120x120
Разработка для Dend
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов