Разработка и ромхакинг > Ромхакинг и программирование
SegaSoundDriver ripped from Sonic1
<< < (5/6) > >>
Segaman:

--- Цитата: Smoke от 02 Октябрь 2009, 17:17:58 ---Регистры. Флаги это другое

--- Конец цитаты ---
да точно! забыл как их звать
Ti_:
в оба адреса если писать, получается много раз жмется кнопка. потому что видишь тут отдельно 2 адреса, а у тебя в драйвере тока 1.

вот тут они 3-ем тусят.  загрузить этот ром с сейва , тимплеер в меню включить.

Добавлено позже:
вот в оригинальном роме -  1-ый пульт зажимаем вверх.
 w. FFC282    - тут 0100  -  держится пока держим кнопку
 w. FFC28С - тут  0100   -  записывается и сразу стирается
 w. FFC29C - тут тоже 0100  -   пока кнопку не отпустим.(и вообще у меня и без него пашет)

для 2-ого пульта.
w.   FFC284
w.   FFC28E
w.   FFC29E

ты можешь сделать чтобы твой драйвер также работал тоже? тогда возится не придется с переделыванием игры!

я пока так прописал, и адреса в игре сменил, 3джоя пашут все (у 3-ей тачки в сейве АИ отрублен). но кнопки везде как турбо жмутся.

   
--- Код: --- lea     ($FFFFC280).w,a1    ; 1-ый
move.l  $ffc280, $ffc28a
bsr.w   sub_0_9188
lea     ($FFFFC284).w,a1    ; 2-ый
move.l  $ffc284, $ffc28e
bsr.w   sub_0_9196
lea     ($FFFFC292).w,a1    ; 3-ий
move.l  $ffc292, $ffc296
--- Конец кода ---
Segaman:
Вчера вырезал мелодию из баттл тодса. мелодия рейсинг попалась (какое удачное совпадение). вот как доведу до ума (мелодия для з80 проца, все поинты надо ковырять), мона буит гордица.
Segaman:
Весь день сёня вручную писал асм мелодии и при этом исправил возможные баги. Переписал все каналы кроме fm5, но она и без него звучит идентично той шо в бт. Завтра доделаю и вылажу, а потом возьмусь за ресы.
Марат:

--- Цитата: Ti_ от 01 Октябрь 2009, 13:43:20 ---
--- Код: ---
ROM:000107BC ; =============== S U B R O U T I N E =======================================
ROM:000107BC
ROM:000107BC
ROM:000107BC CONTROL:                                ; CODE XREF: RACE+A4p
ROM:000107BC                                         ; RACE+134p
ROM:000107BC                 bsr.w   UNKNOWN__
ROM:000107C0
ROM:000107C0 firstcar:
ROM:000107C0                 moveq   #0,d0
ROM:000107C2                 bsr.w   Control_all
ROM:000107C6
ROM:000107C6 secondcar:
ROM:000107C6                 moveq   #1,d0
ROM:000107C8                 bsr.w   Control_all
ROM:000107CC
ROM:000107CC thirdcar:
ROM:000107CC                 moveq   #2,d0
ROM:000107CE                 bsr.w   Control_all
ROM:000107D2
ROM:000107D2 fourthcar:
ROM:000107D2                 moveq   #3,d0
ROM:000107D4
ROM:000107D4 Control_all:                            ; CODE XREF: CONTROL+6p
ROM:000107D4                                         ; CONTROL+Cp ...
ROM:000107D4                 lea     dword_0_FFD0EA-FF8000(a4),a0
ROM:000107D8                 tst.b   (a0,d0.w)
ROM:000107DC                 beq.s   Control_Player
ROM:000107DE                 bra.w   Control_AI
ROM:000107E2 ; ---------------------------------------------------------------------------
ROM:000107E2
ROM:000107E2 Control_Player:                         ; CODE XREF: CONTROL+20j
ROM:000107E2                 tst.b   byte_0_FFB936-FF8000(a4)
ROM:000107E6                 bne.w   SECOND_JOYSTICK
ROM:000107EA                 cmpi.b  #1,d0
ROM:000107EE                 beq.w   SECOND_JOYSTICK
ROM:000107F2                 cmpi.b  #2,d0
ROM:000107F6                 beq.w   UNKNOWN_
ROM:000107FA                 bsr.w   Player_car_delete_autopress
ROM:000107FE                 move.w  RAM_JOY1_DATA-FF8000(a4),d1
ROM:00010802                 bsr.w   controlplayer_BC_DPAD_mode
ROM:00010806                 move.w  RAM_JOY1_DATA1-FF8000(a4),d1
ROM:0001080A                 bsr.w   control_A_XYZ_ENTER
ROM:0001080E                 clr.w   RAM_JOY1_DATA1-FF8000(a4)
ROM:00010812                 rts
ROM:00010812 ; End of function CONTROL
ROM:00010812
ROM:00010814
ROM:00010814 ; =============== S U B R O U T I N E =======================================
ROM:00010814
ROM:00010814
ROM:00010814 SECOND_JOYSTICK:                        ; CODE XREF: CONTROL+2Aj
ROM:00010814                                         ; CONTROL+32j
ROM:00010814                 bsr.w   Player_car_delete_autopress
ROM:00010818                 move.w  RAM_JOY2_DATA-FF8000(a4),d1
ROM:0001081C                 bsr.w   controlplayer_BC_DPAD_mode
ROM:00010820                 move.w  RAM_JOY2_DATA2-FF8000(a4),d1
ROM:00010824                 bsr.w   control_A_XYZ_ENTER
ROM:00010828                 clr.w   RAM_JOY2_DATA2-FF8000(a4)
ROM:0001082C                 rts
ROM:0001082C ; End of function SECOND_JOYSTICK
ROM:0001082C
ROM:0001082E
ROM:0001082E ; =============== S U B R O U T I N E =======================================
ROM:0001082E
ROM:0001082E
ROM:0001082E UNKNOWN_:                               ; CODE XREF: CONTROL+3Aj
ROM:0001082E                 bsr.w   Player_car_delete_autopress
ROM:00010832                 move.w  word_0_FFC286-FF8000(a4),d1
ROM:00010836                 bsr.w   controlplayer_BC_DPAD_mode
ROM:0001083A                 move.w  word_0_FFC290-FF8000(a4),d1
ROM:0001083E                 bsr.w   control_A_XYZ_ENTER
ROM:00010842                 clr.w   word_0_FFC290-FF8000(a4)
ROM:00010846                 rts
ROM:00010846 ; End of function UNKNOWN_
ROM:00010846
ROM:00010848
ROM:00010848 ; =============== S U B R O U T I N E =======================================

--- Конец кода ---

в конце смотри че это за FFC286? FFC290?  да тут наверняка они хотели чтобы на троих было! Эти адреса они тока тут есть.
и чего в дебага  запустил этот код не используется даже, а что такое beq.w.

--- Конец цитаты ---
код и не будет использоваться, потому что разработчики так захотели и изолировали эту часть кода дополнительной проверкой. Надо вместо этой проверки два nop'a записать.
Т.е. вместо
--- Код: ---bne.w   SECOND_JOYSTICK
--- Конец кода ---
, надо записать
--- Код: ---nop
nop
--- Конец кода ---
. Сам не проверял - компа сейчас нет. А то бы поковырялся в коде, поэксперементировал.
Ti_:

--- Цитата: Марат от 08 Октябрь 2009, 21:13:49 ---Сам не проверял - компа сейчас нет. А то бы поковырялся в коде, поэксперементировал.

--- Конец цитаты ---
не изолировали, просто d0 будет равно 2, только в случае если для 3-ей машины отключен АИ. 
а это никогда не случается.
в загрузке lea  dword_0_FFD0EA-FF8000(a4),a0  (это 4байта аи/не аи для 1234 машины)

я и для 4дописал сравнение. и адреса новые.  на 4джоев версия выложена , на  троих еще вчера выкладывал.
Марат:
Мда, ошибочка вышла. Что-то я проглядел со сравнениями. Ну да ладно, комп появится разберусь что к чему.
Ti_:
вообщем, как я понял, мне сейчас нужно только , чтобы драйвер джойстика писал в 1адрес как сейчас , а во второй писал только один раз, и при дальнейшем удерживании кнопки , его не перезаписывал.

пример в FFC282 (RAM_JOY1_DATA) - здесь цифра всё время остается, пока мы удерживаем кнопку.
 в FFC28C (RAM_JOY1_DATA1) - суда записывается один раз, при нажатии, и дальше не перезаписывается при удерживании кнопки.

clr.w   RAM_JOY1_DATA1-FF8000(a4) ,  вот тут после действия (A,C, X, Start) - то есть стрельба, этот адрес обнуляется.
а RAM_JOY1_DATA , нет, он работает как нужно. то есть пока держим все время записан.


а уменя сейчас пока так сделано:

--- Код: --- lea     ($FFFFC280).w,a1    ; адрес для первого пада
move.l  $ffc280, $ffc28a
bsr.w   sub_0_9188

--- Конец кода ---

то есть, в  FFC282 и FFC28C , одно и тоже,   и после стирания FFC28C , драйвер его заново опять записывает , отсуда "турбо" стрельба получается.;
на самом деле в игре самой, это не сильно мешает - но вот с менюшками просто ужас),

вот линк на версию с 4-мя: (в этой теме тож выложу)
RRR 4players
2игроков выбирать в меню!(если сумеете :)) ), для первого пада pad-multiplayer.
Segaman:
Ti_, я магу спецально для тя ковырнуть ридер и сделать 2адреса. А ещё разобраться как чекать тимплеер. ща дамой приеду, попробую шо нить сделать.
Ti_:

--- Цитата: Segaman от 09 Октябрь 2009, 15:34:53 ---Ti_, я магу спецально для тя ковырнуть ридер и сделать 2адреса.

--- Конец цитаты ---
да было бы неплохо, а вообще там список то нехилый игр на 4 джоя. может в другой игре какой уже есть готовый?
Segaman:
Та мне тока узнать как чекать, а код прекрасный, там штоб тебе подошол пару строк над приписать. тем более легче вывести чтение падов куданибудь далеко и оттуда после чтения копирование сделать туда куда надо. Я просто у компа дет через час буду
Марат:
B International Super Star Soccer посмотрите, там джой 6 - и кнопочный, даже mode работает. И еще он вроде на 8 джойстиков.
Ti_:
мы уже разобрались частично. просто тут 4байта, 3-ий зажатие ;  а 4-ый нажатие.
теперь копируем тока 1 байт нажатия;
турбо пропало, но кнопки стрельбы почему-то не всегда срабатывать стали

      lea     ($FFFFC280).w,a1    ; адрес для первого пада
      bsr.w   sub_0_9188
      move.b  $ffc283, $ffc28c

Добавлено позже:

--- Цитата: Марат от 09 Октябрь 2009, 17:30:14 ---B International Super Star Soccer посмотрите, там джой 6 - и кнопочный, даже mode работает. И еще он вроде на 8 джойстиков.

--- Конец цитаты ---
6кнопочный да лучше бы было, но 8джоев ненад)

Добавлено позже:
+урезали до ворда удалив эту строчку.:
move.w  #0,(a1)

(теперь можно вернуть старые адреса, а то путаница была)

вот сейчас так у меня:


--- Код: ---  lea     ($FFFFC282).w,a1    ; адрес для первого пада
  bsr.w   Init1pad
  move.b  $ffc283, $ffc28c
  lea     ($FFFFC284).w,a1    ; второго
  bsr.w   Init2pad
  move.b  $ffc285, $ffc28e
  lea     ($FFFFC286).w,a1    ; третьего
  bsr.w   Init3pad
  move.b  $ffc287, $ffc290
  lea     ($FFFFC288).w,a1    ; четвёртого
  bsr.w   Init4pad
  move.b  $ffc289, $ffc292
  rts
Init1pad:
  moveq   #0,d0
  move.b  #$C,($A10005).l
  bra.w   ReadPad
Init2pad:
  moveq   #1,d0
  move.b  #$1C,($A10005).l
  bra.w   ReadPad
Init3pad:
  moveq   #2,d0
  move.b  #$2C,($A10005).l
  bra.w   ReadPad
Init4pad:
  moveq   #3,d0
  move.b  #$3C,($A10005).l
  bra.w   ReadPad
ReadPad:
  lea     ($A10003).l,a0
  moveq   #0,d0
  move.b  #0,(a0)
  nop
  nop
  nop
  move.b  (a0),d0
  move.b  #$40,(a0)
  nop
  nop
  nop
  move.b  (a0),d1
  asl.b   #2,d0
  andi.b  #$C0,d0
  andi.b  #$3F,d1
  or.b    d1,d0
  not.b   d0
  move.b  (a1),d1
  eor.b   d0,d1
  move.b  d0,(a1)+
  and.b   d0,d1
  move.b  d1,(a1)+
  rts
--- Конец кода ---

Ром залил:

RRR 4players v2
Марат:
Вот здесь смотри процедуру HardWareMan'a для опроса 6 - и кнопочного джойстика http://gendev.spritesmind.net/forum/viewtopic.php?t=602
Segaman:
Марат, пасибо за сылу, много полезного отдуда извлёк.
Segaman:
Сейчас сделал сорс пак с прогами для постройки, чтобы не класть его в каждый мой сорс. там проги для постройки, починки заголовка, поинтеров(удобно), сплитер и т.д.
ещо сделал архив с плеером включающий мануал по портингу. сегодня ночью толно вылажу, а то я всё обещаю, да обещаю. кстати ридер 4 падов аргументировал и удалил заполнение ненужных 2х байтов. теперь на каждый пад по 2 байта:
1й - зажатие
2й - нажатие (при нажатии указывается, а затем тут же перемещается в 1й). нащёт 8 падов и 6 кнопок ещё недумал. надо для начала ром скачать, а затем тестить.

Добавлено позже:
В каждый архив теперь буду класть ридми на русском )). в этих уже лежат. кстати я так и не закончил мелодию бт. ещё там коечто не так. не знаю почему, но после 4 циклов громкость глючить начинает в каналах fm2 и fm3. надо кароче над ними работать. кстати если нужен мануал по портингу музыки из других игр, магу тож состряпать в хтмл со скринами. если ещо чтото надо пишите, йа ещё 2-3 дня буду заниматься всякой асм-бурдой.

Добавлено позже:
Всё, выложил:
http://segaman.wen.ru/programming/gen/index.html
Segaman:
давайте голоса из игр собирать. все пишите, где вы слышали офигенные голса. например comix zone, отличный голос пианино, или road rash3 - гитара. нарипаю голосов и засуну в драйвер, чтобы дифицита не было. неплохоб было добыть голос схожий с миди-lead, кто знаед, где есть такой?
Segaman:
Нарыл прожку сжимающю вавки под формат из проигрывателя сэмплов. осталось тока нарыть, какие вавки там используются.

Добавлено позже:
Я щас в ближайшее время собираюсь изучать ещё один драйвер музыки GEMS. может напишу конвертер музыки gems2smps :)
Segaman:
Этот формат музыки использован в большем кол-ве игр чем смпс. он использован в таких избестных играх, как Earthworm Jim, Cool Spot, Vectorman(должно быть), Dune II и т.д. вроде бы музон мона будет катать :)
evgeny:
Тогда лучше сделать smps2gems. А еще лучше VGM/GYM2gems/smps.
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии