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

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

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

Я польщён :) Но моя фамилия пишется с двумя "в".

Price5115, слишком много ты вопросов задаёшь :) Однако я тебе помогу. Находи субротину Obj3D_ShipStart. Она выглядит примерно так:

Obj3D_ShipStart:			; XREF: Obj3D_ShipIndex
		move.w	#$100,$12(a0)	; move ship down
		bsr.w	BossMove
		cmpi.w	#$338,$38(a0)	; has the ship reached $338 on Y-axis?
		bne.s	Obj3D_ShipProcess ; если нет, бранч
		move.w	#0,$12(a0)	; stop ship
		addq.b	#2,$25(a0)	; goto next routine

То, что тебе надо, хранится в строчке:

		cmpi.w	#$338,$38(a0)	; has the ship reached $338 on Y-axis?

Изменяя первое значение, ты сможешь установить правильную высоту полёта.

Теперь про скорость. В той же самой субротине есть строчка:

		move.w	#$100,$12(a0)	; move ship down

Изменяя первое значение, ты сможешь установить правильную скорость приземления. Это только для приземления. Теперь переходи к субротине Obj3D_MakeBall. Она выглядит примерно так:

Obj3D_MakeBall:				; XREF: Obj3D_ShipIndex
		move.w	#-$100,$10(a0)	; move left
		move.w	#-$40,$12(a0)	; move slightly up
		bsr.w	BossMove
		cmpi.w	#$2A00,$30(a0)	; has the boss reached $2A00 on X-axis?
		bne.s	loc_17916	; если нет, бранч
		move.w	#0,$10(a0)	; stop him
		move.w	#0,$12(a0)	;
		addq.b	#2,$25(a0)
		jsr	SingleObjLoad2
		bne.s	loc_17910
		move.w	#$E6,d0         ; не обращай внимания сюда :)
 		jsr	PlaySound_Special	; play boss music
		move.b	#$48,0(a1)	; load swinging	ball object
 		move.w	$30(a0),8(a1)
		move.w	$38(a0),$C(a1)
 		move.l	a0,$34(a1)

Найди строчку:

		move.w	#-$100,$10(a0)	; move left

Изменяя первое значение, ты сможешь установить скорость приближения корабля к центру, чтобы тот выпустил шар. Теперь изменим скорость движения с уже выпущенным шаром. Перейди к субротине Obj3D_ShipMove. Она выглядит примерно так:

Obj3D_ShipMove:				; XREF: Obj3D_ShipIndex
		subq.w	#1,$3C(a0)	; subtract 1 from timer
		bpl.s	Obj3D_Reverse	; if time remains, branch
		addq.b	#2,$25(a0)
		move.w	#$3F,$3C(a0)
		move.w	#$100,$10(a0)	; move the ship	sideways
		cmpi.w	#$2A00,$30(a0)	; has the boss reached $2A00 on X-axis?
		bne.s	Obj3D_Reverse	; если нет, бранч
		move.w	#$7F,$3C(a0)	; set timer to $7F
		move.w	#$40,$10(a0)

Найди строку:

		move.w	#$100,$10(a0)	; move the ship	sideways

Изменяя первое значение, ты сможешь настроить правильную скорость полёта корабля с уже выпущенным шаром. Но это только для босса GHZ. Для Босса в SLZ ты сам додумаешь. Я и так, почти половину работы за тебя сделал. С тебя место в титрах :D

 

Спасибо. Место в титрах будет.

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


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

Хотелось бы спросить - как в SonED`e перевернуть блок? (Из которых чанки состоят.)Хотелось бы спросить - как в SonED`e перевернуть блок? (Из которых чанки состоят.)

И ещё. Тоже решил ускорить босса по твоему гайду, Влад. Но почему-то когда он появляется, то улетает вниз за экран и даже не пытается полететь влево, чтобы выпустить шар. Подскажете в чём проблема?  =) 

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


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

Хотелось бы спросить - как в SonED`e перевернуть блок? (Из которых чанки состоят.)Хотелось бы спросить - как в SonED`e перевернуть блок? (Из которых чанки состоят.)

И ещё. Тоже решил ускорить босса по твоему гайду, Влад. Но почему-то когда он появляется, то улетает вниз за экран и даже не пытается полететь влево, чтобы выпустить шар. Подскажете в чём проблема?  =) 

Подбирай значение высоты остановки и значение скорости падения. И помни:

Не ставь слишком большие значения, а то босс свалит.

А вообще,

 

Перемещение босса есть прибавление к его координатам определенного количества. Проблема в том, что при прибавлении он двигается не плавно, а просто перепрыгивает. Поэтому, если стартовая позиция по X = 4, а скорость = 2, то до позиции 7 он не долетит.

 

 

 

-----------------

А насчет SonED, юзай S1LE. =) Там удобнее.

Изменено пользователем Mr. Cat
  • Лайк 2

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


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

Спасибо за помощь, Mr.Cat! =)

 

------------------------

А насчёт S1LE, я юзаю его для расставления обьектов.  =)  В нём удобнее.

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


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

Спасибо за помощь, Mr.Cat! =)

 

------------------------

А насчёт S1LE, я юзаю его для расставления обьектов.  =)  В нём удобнее.

А в нем и графу делать удобно. =\

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


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

SORRY FOR DOUBLEPOST! SORRY FOR DOUBLEPOST! SORR


 


 


 


Где находится X-позиция HUD?


 


 


 


OST! SORRY FOR DOUBLEPOST! SORRY FOR DOUBLEPOST!


Изменено пользователем Mr. Cat

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


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

 

 

Где находится X-позиция HUD?
 

Вторая строчка в Obj21_Main

move.w #$90,8(a0)

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


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

Вторая строчка в Obj21_Main

move.w #$90,8(a0)

Т.е. для динамического изменения потребуется флаг?

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


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

 

 

Т.е. для динамического изменения потребуется флаг?
Не факт! Я просто поменял положение в маппингах.

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


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

Не факт! Я просто поменял положение в маппингах.

Т.е. для динамического изменения потребуется флаг?

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


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

 

Не факт! Я просто поменял положение в маппингах.

Т.е. для динамического изменения потребуется флаг?

 

Ладно, ладно, я не сильно шарю. Можно узнать, что такое динамическое изменение? И вообще, где ты увидел в ответе Шутера установку флага? Там ведь только изменилось значение структуры объекта, а конкретнее X-позиция.

 

И да, хотел спросить. Я хотел расположить объект 01 (Соник) на Sega Screen. Вот код (не обращайте внимание на отсутствие команды прогрузки палитры Соника):

		jsr		LoadSonicDynPLC
		lea		($FFFFD000).l,a1
		move.b	#1,0(a1)
		move.w	#$20,8(a1)
		move.w	#$20,$A(a1)
		move.b	#3,$22(a1)
		jsr		ObjectsLoad
		jsr		BuildSprites

Вот только вместо Соника я ничего не увидел, а только услышал звук Спин Дэша. Что я сделал не так?

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

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


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

Ладно, ладно, я не сильно шарю. Можно узнать, что такое динамическое изменение? И вообще, где ты увидел в ответе Шутера установку флага? Там ведь только изменилось значение структуры объекта, а конкретнее X-позиция.

 

И да, хотел спросить. Я хотел расположить объект 01 (Соник) на Sega Screen. Вот код (не обращайте внимание на отсутствие команды прогрузки палитры Соника):

		jsr		LoadSonicDynPLC
		lea		($FFFFD000).l,a1
		move.b	#1,0(a1)
		move.w	#$20,8(a1)
		move.w	#$20,$A(a1)
		move.b	#3,$22(a1)
		jsr		ObjectsLoad
		jsr		BuildSprites

Вот только вместо Соника я ничего не увидел, а только услышал звук Спин Дэша. Что я сделал не так?

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

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


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

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

[noob]Как это сделать?[/noob]

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


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

 что такое динамическое изменение?

Движение.

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


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

Движение.

Зачем флаги менять, если можно просто объекту несколько команд дать?

        cmpi.w    #$90,8(a0)    ;has HUD object passed x-position $90?
        beq.b    Obj21_Pos    ; if yes, branch
        add.w   #1,8(a0)
        jsr     Obj21_Flash
        jmp        Obj21_Display

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


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

Влад, раз ты онлайн, жду твоего ответа. 

========ВОПРОС=================

Как увеличить скорость Соника? 

Хочется "Ускорить" игру.

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

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


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

Влад, раз ты онлайн, жду твоего ответа. 

========ВОПРОС=================

Как увеличить скорость Соника? 

Хочется "Ускорить" игру.

Ок, это вообще легко! Находим Obj01_Main и в ней есть три строчки:

        move.w    #$600,($FFFFF760).w    ; Sonic's Top Speed
        move.w    #$C,($FFFFF762).w    ; Sonic's acceleration
        move.w    #$80,($FFFFF764).w    ; Sonic's deceleration

Первая строка как раз таки и отвечает за максимальную скорость. Но! Есть же ещё две строчки! Вторая отвечает за акселерацию, то есть, за скорость разгона. Третья строчка отвечает за декселерацию, то есть, за скорость торможения. Надеюсь ясно что с ними делать? Просто меняй первые значения. Не забудь, что это шестнадцатеричные числа!

 

Всегда пожалуйста! ^_^

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


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

Спасибо. Но вот у меня сомнение на второй строчке. Я тоже хотел изменить скорость разгона, но там вместо числа буква, а т.к я нуб в АСМ, обьяснишь, как там изменить?  =)

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


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

Спасибо. Но вот у меня сомнение на второй строчке. Я тоже хотел изменить скорость разгона, но там вместо числа буква, а т.к я нуб в АСМ, обьяснишь, как там изменить?  =)

 

 

Не забудь, что это шестнадцатеричные числа!
Вот тебе небольшая справка:

 

1 = 1

2 = 2

3 = 3

4 = 4

5 = 5

6 = 6

7 = 7

8 = 8

9 = 9

$A = 10

$B = 11

$C = 12

$D = 13

$E = 14

$F = 15

$10 = 16

 

Можно проще! Заходим в обычный Шиндоский калькулятор. Нажимаем Вид. Выбираем Программист. Сбоку выбираем Dec. Вводим число. И сбоку выбираем теперь Hex. И результат будет в шестнадцатеричном виде!

 

Всегда пожалуйста! ^_^

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


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

Влад, снова к тебе вопрос! =3

Как сделать так, чтобы монитор S давал 50 колец?

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


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

Влад, снова к тебе вопрос! =3

Как сделать так, чтобы монитор S давал 50 колец?

Найди субротину Obj2E_ChkS и после команды:

		bne.s	Obj2E_ChkEnd	; если нет, бранч

вставь эти команды:

		addi.w	#$32,($FFFFFE20).w ; add	50 rings to the	number of rings	you have
		ori.b	#1,($FFFFFE1D).w ; update the ring counter

Всегда пожалуйста ^_^

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


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

 

Зачем флаги менять, если можно просто объекту несколько команд дать?

        cmpi.w    #$90,8(a0)    ;has HUD object passed x-position $90?
        beq.b    Obj21_Pos    ; if yes, branch
        add.w   #1,8(a0)
        jsr     Obj21_Flash
        jmp        Obj21_Display

Щас прям. Такое уже пробовал. Надо в определенный момент  это делать, чтобы Title Card не мешал. Поэтому все равно нужен флаг.

З.Ы.Не отвечай, я сам сделаю.

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


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

Вопрос №3!

Как сделать так, чтобы монитор "Эггман" отнимал 35 колец. (Именно 35, не все!)

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


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

Не могу точно ответить (ибо с нетбука) , но попробуй в коде монитора записать:

sub.w	#$23,($FFFFFE20).w 

Пыс. Учи АСМ, поищи гайд Компера или Джестера, позвони Super Mario Sonic'у, дерзай! >_<

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


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

Хе-хе... Super Mario Sonic... Знаю такого, но мне лень. Я не могу учить такие вещи - в один прекрасный день всё забуду! xD

А ты можешь сказать, где находится код монитора?

 

Когда переставляю Соника в S1LE прога просто вылетает без ошибки. Почему так?

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

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


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

@JonesWTF: Код мониторов смотри в Obj26. А бонусы, которые они дают - в Obj2E. А со вторым вопросом обращайся к Мимо проходящему - автору программы.

Кстати, вот все гайды по 68К(большинство на английском):

 by Vladikcomper by redhotsonic by drx(Hacking CulT) by MarkeyJester

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

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


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

@Lazer_Bird: Спасибо

======================

Можно ли сделать так, чтобы подсчёт очков начинался сразу после пересечения таблички (Т.е когда на ней Соник уже появится), а Соник не обязательно был за экраном? (P.S Ещё нужно не блокировать управление. Обязательно!) Заранее спасибо.

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

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


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

@Lazer_Bird: Спасибо

======================

Можно ли сделать так, чтобы подсчёт очков начинался сразу после пересечения таблички (Т.е когда на ней Соник уже появится), а Соник не обязательно был за экраном? (P.S Ещё нужно не блокировать управление. Обязательно!) Заранее спасибо.

Перейди к локрету Obj0D_Touch и после строки:

		move.w	($FFFFF72A).w,($FFFFF728).w ; lock screen position

вставь эту:

		jsr		GotThroughAct

Затем найди локрет loc_EC86 и в самый его конец вставь rts.

 

Чтобы не блокировать управление, перейди к локрету Obj0D_SonicRun и удали из него эти строчки:

		move.b	#1,($FFFFF7CC).w	; lock	controls
		move.w	#(Right)<<8,(SonicControl) ; make Sonic run to the right

Всегда пожалуйста! ^_^

Изменено пользователем VladislavSavvateev
  • Лайк 2

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


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

Ох, чувак. Огромное тебе спасибо. Спас прям! =)

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


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

Этот вопрос мучает меня очень долго.

Я юзаю Полноценный SC, который я уже давно настроил под себя. Также я решил убрать разный арт на разных актах. Я только поменял все incbin'ы на те файлы, что для первого акта.Везде сработало. Но не в GHZ. Там все чанки, все блоки были как в первом акте. Но не все тайлы! Прошу, помогите. Хоть кто-нибудь. Пожалуйста.

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

×