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

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

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

Почему SonEd2 v11.02 и SonEd2 v1.03 глючно импортируют чанк? Вроде бы у изображения, в котором находится чанк совпадает палитра с палитрами у SonEd2 11.02 и у SonEd2 v1.03... Ответьте плииииииз!

Untitled.png

UPD: я расправился с глюком.

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

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


Ссылка на сообщение
Почему SonEd2 v11.02 и SonEd2 v1.03 глючно импортируют чанк? Вроде бы у изображения, в котором находится чанк совпадает палитра с палитрами у SonEd2 11.02 и у SonEd2 v1.03... Ответьте плииииииз!

Untitled.png

Автор! Руками делай, а то заелись уже! А тайлы и блоки готовые у тебя есть?

Изменено пользователем Valentin the fox

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


Ссылка на сообщение
Автор! Руками делай, а то заелись уже! А тайлы и блоки готовые у тебя есть?

Ты имеешь в виду вручную импортировать чанк? O0 Для этого чанка: нет.

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


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

А как же без тайлов и блоков? Ведь чанки состоят из блоков, а блоки из тайлов. С процессом портирования чанков я не знаком, но я не думаю, что чанк вот так можно делать.

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


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

А для чего тогда импорт чанков в сонэде?

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


Ссылка на сообщение
А как же без тайлов и блоков? Ведь чанки состоят из блоков, а блоки из тайлов. С процессом портирования чанков я не знаком, но я не думаю, что чанк вот так можно делать.

То, что ты мне сказал, я давно это уже знаю. Ты ещё забыл сказать: тайлы состоят из как бы пикселей (палитры), а палитра состоит из цве'тов, а цвета состоят из значений. SonEd2 импортирует все тайлы и блоки у чанка, а потом строит чанк.

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

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


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

У меня почему-то убавился звук собирания кольца.Хотя в левел селекте работает.Почему так?

Глюк сам убрался.

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

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


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

Как повысить скорость перемещения камеры в игре Sonic 1(md)?

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


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

Кто знает как написать такую фичу:Чтоб после прохождения уровня(акта) начинался специальный этап,а после его прохождения или не прохождения, начинался следущий уровень(акт)

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


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

У меня проблема с добавлением экранов опций и левел селекта из соник 2 (from STHOSP). Сначала все было нормально, я добавил новый режим в GameModeArray ($20) и модифицировал MainGameLoop для работы с новыми режимами по способу vladikcomper'a (andi.w #%111100,d0).

 

Вот только проблемы появились после установки кастомного сега-скрина от genesisfan64, игра просто-напросто зависает и не переходт на левел селект или оптионс скрин.

 

У меня два объяснения:

 

1) В коде нового сегаскрина есть какая-то кака, которая не дает нормально работать с новыми режимами.

2) Это произошло из-за замены bra.w на jmp (возникла ошибка of range)

 

Вот как выглядит код сейчас:

MainGameLoop:
	move.b	($FFFFF600).w,d0; load	Game Mode
	andi.w	#%111100,d0; apply bit mask, so d0 will be <= $1C and multiple of 4
	jsr	GameModeArray(pc,d0.w); jump to apt location in ROM
	bra.s	MainGameLoop

; ============================================================
===============
; ---------------------------------------------------------------------------
; Main game mode array
; ---------------------------------------------------------------------------

GameModeArray:
	jmp	SegaScreen; Sega Screen ($00)
	jmp	TitleScreen; Title	Screen ($04)	
	jmp	Level	; Demo Mode ($08)
	jmp	Level	; Normal Level ($0C)
	jmp	SpecialStage; Special Stage	($10)
	jmp	ContinueScreen; Continue Screen ($14)
	jmp	EndingSequence; End of game sequence ($18)
	jmp	Credits	; Credits ($1C)
	jmp	MenuScreen	; Menu ($20)
	rts

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


Ссылка на сообщение
У меня два объяснения:

 

1) В коде нового сегаскрина есть какая-то кака, которая не дает нормально работать с новыми режимами.

2) Это произошло из-за замены bra.w на jmp (возникла ошибка of range)

 

Второе. Не надо было менять команды bra, они там не с проста.

 

В GameModeArray все завязано на оффсетах инструкций. В оригинале все было так:

- При GameMode=0, MainLoop прыгал к GameModeArray, а там находилась команда bra.w SegaScreen

- При GameMode=4, MainLoop прыгал по оффсету (GameModeArray+4), а там было bra.w TitleScreeen

 

Программа не знает, где в GameModeArray заканчивается одна инструкция и начинается другая, она лишь прыгает к оффсету (GameModeArray+GameMode), где GameMode ($FFFFF600) всегда увеличивается на 4.

То есть, рассчет такой, чтобы каждая инструкция занимала 4 байта, тогда все будет работать верно.

Заменив bra на jmp, ты увеличил все инструкции до 6 байт. Так что MainLoop прыгает не туда, куда надо, отсюда зависания.

 

С jmp SegaScreen все еще работает, потому что он в самом начале списка. Какой бы ни был размер, но в начало списка MainLoop прыгнет правильно.

 

Пути решения могу привести два:

 

Первый. С минимальными затратами:

GameModeArray:
	bra   JmpTo_SegaScreen; Sega Screen ($00)
	<...>

; А после GameModeArray вставляем наши "костыли":
JmpTo_SegaScreen:
jmp	SegaScreen

 

Второй. Надежный и практичный

MainGameLoop:
moveq	#0,d0
move.b	($FFFFF600).w,d0
lea	GameModeArray(pc),a0
movea.l	(a0,d0.w),a0
jsr	(a0)
bra.s	MainGameLoop

<...>

GameModeArray:
dc.l; Замени все bra на dc.l

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

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


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

А как в сонеде менять область редактирования уровня???

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


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

Какую область?

Если ты про размер уровня, то его можно изменять Ctrl + Вверх/Вних/Влево/Вправо.

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


Ссылка на сообщение
Какую область?

Если ты про размер уровня, то его можно изменять Ctrl + Вверх/Вних/Влево/Вправо.

Уф.Спасибо.

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


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

Кто-нибудь знает, как увеличивать количество тайлов, блоков, чанков и, желательно, солидов? Буду ОЧЕНЬ благодарен за помощь!

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


Ссылка на сообщение
Кто-нибудь знает, как увеличивать количество тайлов, блоков, чанков и, желательно, солидов? Буду ОЧЕНЬ благодарен за помощь!

 

Тут где-то говорили, что их количество строго фиксировано, поэтому имеет место только вариант с добавлением новой графики взамен старой.

 

у меня проблемка

 

Что это такое и после чего появилось? И скрины, кстати, можно делать кнопкой print screen, а потом через команду "вставить" отобразить в любом графическом редакторе, хоть MS Paint. Фотографировать это дело есть мазохизм.

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


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

Из-за чего может не воспроизводиться звук спиндеша в S1HS2?

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


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

Может это проблема с колонками?У меня такая же фича была с кольцами.Я посмотрел у меня от одной колонки еле вставлен провод.Может из-за этого?А еще попробуй просто заменить на оригинальный.

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


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

А где прописано время смены кадра для экстра объектов босса?

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


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

Ты про предметы босса?Ну там шар,или огнемет снизу,или шип.

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


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

Мигающая штука в GHZ у БОССА

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

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


Ссылка на сообщение
Может это проблема с колонками?

 

1) Этот глюк не только у меня

2) С колонками (а точнее, наушниками) все в порядке, да и тем более что в других хаках на S1HS2 все работает.

 

Такая фигня могла произойти из-за того, что я химичил со звуковыми драйверами и теперь хочу узнать, какие суброутины отвечают за воспроизведение этого звука, чтобы вернуть им первоначальный вид.

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


Ссылка на сообщение
А где прописано время смены кадра для экстра объектов босса?

 

Для шара оно нигде не прописано, у него даже нет скрипта анимации. Так как анимация примитивна (замена кадра с 0 на 1 и обратно), ее реализовали прямо в коде, без скрипта. Если ты работаешь в обычном дизасембле, очень бы советовал взглянуть на тот же код (Obj3F, Obj48) в S1HS2, там я его очень классно расскоментировал, должно быть в разы понятнее.

 

Вот нужный тебе код смены кадров для шарика.

Код в дизасембле S1HS2:

Obj48_Ball:		; XREF: Obj48_Index
	moveq	#0,d0; use frame #0
	tst.b	$1A(a0); test ball mapping frame
	bne.s	Obj48_Vanish; if its not zero, branch
	addq.b	#1,d0; use frame #1

Obj48_Vanish:
	move.b	d0,$1A(a0); update mapping frame

 

Тот же код в обычном дизасембле:

Obj48_ChkVanish:	; XREF: Obj48_Index
	moveq	#0,d0
	tst.b	$1A(a0)
	bne.s	Obj48_Vanish
	addq.b	#1,d0

Obj48_Vanish:
	move.b	d0,$1A(a0)

 

Кстати замечу, что код этот можно классно оптимизировать, удалить все строчки выше, а вместо них просто написать:

bchg #0,$1A(a0)

 

BCHG (Bit Change) - очень полезная команда, меняет заданный бит с 0 на 1, и с 1 на 0. В этом случае все идеально подходит: изменяя бит #0 (он стоит в самом начале), значение $1A(a0) будет меняться с 0 на 1 и обратно.

 

Если тебе нужно, чтобы кадр менялся не каждый раз, а через определенное время, достаточно доработать код выше и ввести счетчик:

 

Obj48_ChkVanish: (Obj48_Ball:)
  subq.b  #1,$3F(a0) ; вычесть 1 из счетчика
 bpl   @skip; если он положителен, переходим
 bchg #0,$1A(a0) ; иначе, меняем текущий кадр
 move.b #5,$3F(a0); установить счетчик на 5 кадров

@skip:
	movea.l	$34(a0),a1 ; продолжение старого кода
 <...>

 

Такая фигня могла произойти из-за того, что я химичил со звуковыми драйверами и теперь хочу узнать, какие суброутины отвечают за воспроизведение этого звука, чтобы вернуть им первоначальный вид.

Наверное, так и есть. Кстати, S1HS2 в плане звукового драйвера ничем не отличается от обычного дизасембла, не думаю, что это как-то связано с ним.

У меня нет никаких идей по поводу того, из-за чего такое могло случиться (я плохо знаком с SMPS), хотя могу подсказать пару суброутин, которые помню:

 

Sound_ChkValue - выбирает, какой звуковой эффект воспроизводить (он должен бранчить на Sound_D1toDF для Спин Дэша).

Sound_D1toDF - сам код, воспроизводящий звук.

 

Кстати, есть легкий способ узнать, вызывается ли Sound_D1toDF или нет. Добавь в начало его кода команду

 jmp *

Если код по каким-то причинам не вызывается, при воспроизведении звука ничего не произойдет. В противном случае, игра зависнет. Часто использую такой трюк при отладке, чтобы узнать, работоспособны ли разные части моего кода - помогает ch8D

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

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


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

У меня нет никаких идей по поводу того, из-за чего такое могло случиться (я плохо знаком с SMPS), хотя могу подсказать пару суброутин, которые помню:

 

Sound_ChkValue - выбирает, какой звуковой эффект воспроизводить (он должен бранчить на Sound_D1toDF для Спин Дэша).

Sound_D1toDF - сам код, воспроизводящий звук.

 

Кстати, есть легкий способ узнать, вызывается ли Sound_D1toDF или нет. Добавь в начало его кода команду

 jmp *

Если код по каким-то причинам не вызывается, при воспроизведении звука ничего не произойдет. В противном случае, игра зависнет. Часто использую такой трюк при отладке, чтобы узнать, работоспособны ли разные части моего кода - помогает ch8D

У него новый драйвер.Он чО то нахимичил видать.

 

Кстати, S1HS2 в плане звукового драйвера ничем не отличается от обычного дизасембла, не думаю, что это как-то связано с ним.

У меня нет никаких идей по поводу того, из-за чего такое могло случиться (я плохо знаком с SMPS), хотя могу подсказать пару суброутин, которые помню:

 

Sound_ChkValue - выбирает, какой звуковой эффект воспроизводить (он должен бранчить на Sound_D1toDF для Спин Дэша).

Sound_D1toDF - сам код, воспроизводящий звук.

 

Кстати, есть легкий способ узнать, вызывается ли Sound_D1toDF или нет. Добавь в начало его кода команду

 jmp *

Если код по каким-то причинам не вызывается, при воспроизведении звука ничего не произойдет. В противном случае, игра зависнет. Часто использую такой трюк при отладке, чтобы узнать, работоспособны ли разные части моего кода - помогает t^_^

У него новый драйвер.Он чО то нахимичил видать.

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


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

Баг со звуком спиндеша успешно ликвидирован! Этот баг был из-за гида по увеличению слотов.

 

ContinueSound_ChkValue:
	cmpi.b	#$A0,d7
	bcs.w	locret_71F8C
	cmpi.b	#$CF,d7
	bls.w	Sound_A0toCF; sound	$A0-$CF
	cmpi.b	#$D0,d7
	bcs.w	locret_71F8C
	cmpi.b	#$E0,d7
	bcs.w	Sound_D1toDF; sound	$D0-$DF
	cmpi.b	#$E4,d7
	bls.s	Sound_E0toE4; sound	$E0-$E4
	cmpi.b  #$FF,d7
	bls.w   Sound_E5toFF

 

Тут вместо Sound_D1toDF стояло Sound_D0toDF.

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


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

Как сделать так, чтобы можно было добавлять обьекты в Final zone?

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


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

SonEd.Правда арт не всех предметов будет, но мониторы пружины и ципы можно поставить.

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


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

Какая программа редактирует уровни в Sonic The Hedgehog 2? Кроме SonED 2. Там черный экран! bl>:D

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

×