Перейти к содержимому
DeidaraNT

Помощь по ромхакингу

Рекомендуемые сообщения

Еще бывает полезно непосредственно просмотреть содержимое VRAM. Для этого советую использовать эмулятор Exodus, там можно смотреть содержимое VRAM и легко узнать адрес и номер каждого тайла.

А разве уже есть открытая версия Exodus?

Поделиться сообщением


Ссылка на сообщение
А разве уже есть открытая версия Exodus?

Да, недавно нашел на Сега Ретро.

Поделиться сообщением


Ссылка на сообщение
2(ax) указывает на номер тайла с которого начинается арт объекта в видео памяти, VRAM.

Во VRAM, разумеется, загружаются все тайлы, вся графика, требуемая уровню. У каждой зоны набор загружаемой графики отличается, впрочем, есть графика, которая загружается всегда (кольца, HUD, пружины).

Графика загружается в строго определенное место видеопамяти, например тайлы Соника загружаются начиная с адресса VRAM $F000. Адреса, куда загружается большая часть графики можно посмотреть в файле _inc\Pattern Load Cues.asm.

Разделив адрес VRAM на размер тайла - $20 (32), можно узнать номер тайла, с которого начинается арт.

Так, если у Соника арт загружается с $F000, то $F000 / $20 = $780.

Еще бывает полезно непосредственно просмотреть содержимое VRAM. Для этого советую использовать эмулятор Exodus, там можно смотреть содержимое VRAM и легко узнать адрес и номер каждого тайла.

Спасибо тебе.Буду учиться делить адреса.

Поделиться сообщением


Ссылка на сообщение
Шанс, что баг происходит из-за неверно настроенного объекта - 5%. Хотя вероятность наличия у тебя таких объектов довольно большая. Если это происходит только после определенного места и на неудачно отредактированном уровне, попробуй все же заменить objpos\mzX.bin на оригинал (где Х - номер акта твоего проблеммного уровня), хотя сильно сомневаюсь, что дело в этом.

спасибо, спасибо, все работает, ура все заработало. спасибо. ждите сегодня sonic bad dream версия 0.2

Поделиться сообщением


Ссылка на сообщение

как менять фон в сонЕДЕ? Дайте пожалуйста четкую инструкцию. у меня никак не получается!

Поделиться сообщением


Ссылка на сообщение

Ты всмысле свой фон нарисовать хочешь?

Поделиться сообщением


Ссылка на сообщение

Вот тебе небольшая инструкция,как создать свой фон:

Открываем SonED2.

post-10002-1298384258_thumb.png

Жмём File-Open Project и выбираем нужный проэкт.Я выбрал грин хилл.

post-10002-1298384329_thumb.png

Если тебе надо переместить местами старые чанки,то жмём Editor-Level Editor (Plane B) и с помощью кнопок A (листать вверх) и Z (листать вниз) перелистываем чанки,пока перед нами не появятся блоки фонов.

post-10002-1298384691_thumb.png

Этот чанк относится к фону?Нет.Листаем дальше.

post-10002-1298384754_thumb.png

Этот чанк относится к фону?Да.Можно перестать листать.Но если тебе нужен другой чанк фона,продолжай листать дальше.Нашел нужный чанк?Если да,то ставь его в любое место фона.

post-10002-1298384879_thumb.png

post-10002-1298384986_thumb.png

Видишь прозрачный чанк?Этот чанк я поставил в то место,где обведено синим.Без редактирования фона,в месте,обведённым синим цветом стоит другой чанк.

 

Если тебе нужен твой личный,перерисованный фон,то жмём Editor-Tile Editor.В этом едиторе ищем тайл селектор.

post-10002-1298385261_thumb.png

В нём жмем по нужной строке палитры.Выберем эту и цвет тайлов поменяется.

post-10002-1298385372_thumb.png

Выбирай стеди тайлов ненужный тебе тайл и перерисовывает его.Для перерисовки нам понадобится тайл,палитра,окно перерисовки тайла.Палитра обведенна красным,окно перерисовки тайлов синим,тайлы фиолетовым.

post-10002-1298385578_thumb.png

Каждый тайл имеет размер 8x8,так что,чтобы сделать свой фон придётся попариться.

Перерисовал все ненужные тебе тайлы?Тогда приступаем к созданию блоков 16х16 из тайлов 8х8.

Выбираем Block Selector

post-10002-1298385845_thumb.png

Включаем Show Block и выбираем блоки,которые ты будешь пересобирать.

post-10002-1298385982_thumb.png

Извини,дальше ничем немогу помочь.Я незнаю про пересборку блоков.Спроси помощь у Valentin the Fox.Он умеет этим пользоваться.

Надеюсь я всё правильно сказал...

Тебе должно это немножко помочь...

Изменено пользователем TailsX-Doll

Поделиться сообщением


Ссылка на сообщение

Не за что. =)

UPD:

У кого нибудь есть все сэмплы из S3K?

Изменено пользователем TailsX-Doll

Поделиться сообщением


Ссылка на сообщение

Везде, где они были, ссылки битые. Можно посмотреть их расположение на ретро и рипнуть их самому.

 

Вот, нашел их поинтеры:

 

Sonic 3

Setup Pointers

DAC $81-$9A Pointer Index (Adds to $E0000): $E0000

DAC $9B-$AA Pointer Index (Adds to $E8000): $E8000

DAC $AB-$C0 Pointer Index (Adds to $F0000): $F0000

Поделиться сообщением


Ссылка на сообщение

Спасибо.Только как их потом разделять...

Поделиться сообщением


Ссылка на сообщение

В смысле "разделять"? Поинтеры же указаны.

 

Как исправить ошибку illegal value?

move.w	LSelectPointers(pc,d0.w),d0; load level number

Поделиться сообщением


Ссылка на сообщение

Почему SonEd 2 глючно импортирует чанки? Вот:

e055978281ca.jpg

Поделиться сообщением


Ссылка на сообщение

Наверное формат импортируемого изображения неправильный.

Поделиться сообщением


Ссылка на сообщение
Большое тебе спасибо!!! =)

Продолжаю =).

Выбираешь CHUNK SELECTOR, потом справа выбераешь чанк, слева внизу он появится, выберай блок и рисуй там!

post-9965-1298473483_thumb.png

Поделиться сообщением


Ссылка на сообщение
Как исправить ошибку illegal value?

move.w	LSelectPointers(pc,d0.w),d0; load level number

Видимо лейбел LSelectPointers сместился слишком далеко от оффсета этой инструкции, перемести его поближе и ошибка будет исправлена.

Дело в том, что в таком режиме адресации оффсет лейбела задается 8-битным знаковым значением, показывающим, насколько выше или ниже оффсета инструкции находится лейбел. Поскольку значение 8-битное (один байт), возможный диапозон очень мал, если я правильно помню: от -127 до 127. То есть, если лейбел находится в переделе 127 байт от инструкции, все в порядке, но стоит ему отдалиться, возникает ошибка.

Изменено пользователем vladikcomper

Поделиться сообщением


Ссылка на сообщение

через сонмапед я экспортировал краба и хочу его перекрасить. но как это сделать если половина краба закрыта розовым квадратом?

Поделиться сообщением


Ссылка на сообщение

Ничего страшного, перекрашивай, просто другая половина краба заимствуется из другого спрайта, я думаю.

Поделиться сообщением


Ссылка на сообщение
Как исправить ошибку illegal value?

move.w	LSelectPointers(pc,d0.w),d0; load level number

Ой.Даже не заметил поста vladikcomper'а.

Изменено пользователем KameKAgZZe

Поделиться сообщением


Ссылка на сообщение
Ничего страшного, перекрашивай, просто другая половина краба заимствуется из другого спрайта, я думаю.

я не то что хочу перекрасить, я хочу вообще в другого робота перерисовать. то есть ничего страшного, глюков не будет, да? а то у меня уже с этим были проблемы.

Поделиться сообщением


Ссылка на сообщение
я не то что хочу перекрасить, я хочу вообще в другого робота перерисовать. то есть ничего страшного, глюков не будет, да? а то у меня уже с этим были проблемы.

Если разберёшься в файле _maps\Obj1F.asm то сможешь легко сделать краба с четырьмя клешнями

Поделиться сообщением


Ссылка на сообщение

не думаю что это сложно я уже научил перемещать части и кое-что другое. но я хочу сто бы было что-то типо танков

Поделиться сообщением


Ссылка на сообщение

У меня проблема с первым актом GHZ. Когда возвращаешься назад все объекты почему то исчезаут. Что делать??

Поделиться сообщением


Ссылка на сообщение

Игра выгрузила их из памяти. Железо мегадрайва не позволяет держать весь уровень в памяти, идет динамическая подгрузка, новые объекты загружаются, старые выгружаются.

Поделиться сообщением


Ссылка на сообщение
Игра выгрузила их из памяти. Железо мегадрайва не позволяет держать весь уровень в памяти, идет динамическая подгрузка, новые объекты загружаются, старые выгружаются.

Да нет. Я полностью опустошил этап, оставив 4 моста. Когда иду обратно два уже исчезают

Поделиться сообщением


Ссылка на сообщение

Перечитай еще раз мой предпоследний пост, и поймешь, почему они исчезли.

 

Как проверить столкновение объекта с врагом? Мне нужно сделать так, чтобы если враг попадал на шипы, он уничтожался.

Поделиться сообщением


Ссылка на сообщение
Перечитай еще раз мой предпоследний пост, и поймешь, почему они исчезли.

 

Как проверить столкновение объекта с врагом? Мне нужно сделать так, чтобы если враг попадал на шипы, он уничтожался.

У тебя ведь есть хоминг?!Так используй код оттуда, просто задай нулевые координаты.

Поделиться сообщением


Ссылка на сообщение
Как проверить столкновение объекта с врагом? Мне нужно сделать так, чтобы если враг попадал на шипы, он уничтожался.

 

В этом случае придется перебирать объекты внутри кода или бадника, или шипов.

Если у тебя на уровнях много бадников и мало шипов (по количеству объектов), то лучше делать перебор бадников в коде шипов. В обратном случае, лучше перебирать шипы в коде бадника - это если ты хочешь, чтобы столкновение проверялось только какого-нибудь одного типа бадников.

 

Предположем, ты будешь проверять столкновение с шипами внутри кода бадника.

Основа для перебора будет примерно такой:

 

		tst.b	1(a0)	; бадник на экране?
	bpl	@Quit	; если нет, не выполняем код
	lea	($FFFFD800),a1; первый слот обычного объекта в RAM
	moveq	#($F000-$D800)/$40-1,d5; зададим количество перебираемых объектов (до последнего слота)

@ObjectsLoop	cmpi.b	#$36,(a1); объект $36, (шипы)?
	bne	@Next	; если нет, идем далее
	tst.b	1(a1)
	bpl	@Quit 

; проверка столкновения

@Next		lea	$40(a1),a1
	dbf	d5,@ObjectsLoop

@Quit		rts

 

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

 

С проверкой стокновения надо будет повозиться. Можно воспользоваться кодом из TouchResponse (Touch_Height и Touch_Width), но его надо дополнить и изменить для работе внутри бадника. Код, уничтожающий бадника, можно взять из Touch_KillEnemy, заменив a1 на a0.

 

У меня проблема с первым актом GHZ. Когда возвращаешься назад все объекты почему то исчезаут. Что делать??

 

Никогда раньше не слышал о такой проблемме, хотя есть у меня одна догадка о ее причине.

Проверь, стоит ли у мостов "Remember Sprite" (не помню точно). Если да, то сними его, из-за этого объекты могут не создаваться после самоудаления.

Изменено пользователем vladikcomper
  • Лайк 1
  • Дизлайк 1

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×