Автор Тема: Портирование игр с SegaMD/G на SegaCD/MegaCD  (Прочитано 15608 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ALEX_230_VOLT

  • Модератор
  • Сообщений: 7645
  • Пол: Мужской
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #60 : 22 Ноябрь 2011, 19:54:23 »
и так, проверил на реальной железе и теперь с уверенностьб могу заявить что Kega Fusion гараздо лучше эмулирует Sega CD, нежели Генс. Правда Azure Lake, НЕ зависает, но воспроизводится некорректно - как будто при быстрой перемотке (ну и ещё похоже на эффект при бешенном frameskip-пе), и это при том что консоль работает на 50 фпс :) в остальном работает нормально. Ну ещё не всегда срабатывает В (медленная остановка), но это мелочь.
А что делжны делать SFX и DAC я тоже не понял. DAC и на эмулях и на реальной приставке выдаёт шум разный тональностей, а SFX вообще ничего не делает, правда если щелкать им при 01, то можно затормаживать воспроизведение музыки :)

Ну а на счёт проги в целом: хотелось бы добавления возможности менять скорость воспроизведения. Чтобы вот я, обладатель консоли на 50 фпс мог ускорить до 60, и наоборот обладатели 60 замедлить до 50. Ну и управление поменять бы. ИМХО - куда логичнее сделать так: А - воспроизведение, В - медленное затихание, при зажатом С: вверх и вниз - скорость воспроизведения, враво/влево - быстрое листание списка (или выбор альбома. если допустим делать чтобы у каждой игры был свой альбом), Старт - выключение всего

Оффлайн Smoke

  • Пользователь
  • Сообщений: 3430
  • Пол: Мужской
  • Get Serious!
    • Steam
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #61 : 23 Ноябрь 2011, 13:29:56 »
SFX -- это звуки из соника. Там звук собирания колец, когда дохнешь итд. DAC -- оцифровки. Не играли из-за пары ошибок. Что интересно, в SMD версии все нормально с ними, а тут пришлось кой-чего добавить и тоже стало нормально. Пока выкладывать не буду, посмотрю еще что ж там с azure lake происходит.
Насчет скорости, я пока хз как это осуществить. Драйвер работает из под z80, с которым мне сложней ладить.

Segaman, вот мелодии из ZT. Под SMPS z80

Добавлено позже:
Разобрался как давать саб-процу команды. В общем грузить новые файлы в ворд-рам теперь не проблема. Порты игр придется делать не тупым делением рома на банки по 256 кб, а по уму: один исполняемый файл, в котором весь код игры (как правило он меньше 256кб), и файлы с ресурсами, которые и будут подгружаться в ходе игры. Только вот хз какая там скорость загрузки. А то тоже есть желание хак BZT на SegaCD перенести, только если скорость загрузки будет маленькая, фиг че получиться. Будут сплошные тормоза, еще больше чем в оригинале

Добавлено позже:
Все, теперь и Azure Lake работает. Также DAC и SFX починил. http://elektropage.ru/publ/ourwork/hack_39_ostroenie/smps_jukebox_port_scd/17-1-0-69

Оффлайн Teffycom

  • Пользователь
  • Сообщений: 1701
  • Пол: Мужской
  • Ex-Cool-Spot
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #62 : 23 Ноябрь 2011, 14:04:23 »
Цитата
Насчет скорости, я пока хз как это осуществить. Драйвер работает из под z80, с которым мне сложней ладить.

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

Оффлайн ALEX_230_VOLT

  • Модератор
  • Сообщений: 7645
  • Пол: Мужской
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #63 : 26 Ноябрь 2011, 16:52:04 »
ну что, есть какие то продвижения? sound test это конечно прекрасно, но хотелось бы чего то большего

Оффлайн Tempest

  • Emu-Land Team
  • Сообщений: 1392
  • Пол: Мужской
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #64 : 26 Ноябрь 2011, 19:02:22 »
Да,мне тоже интересно.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #65 : 28 Ноябрь 2011, 12:42:07 »
руки дотянутся и дело пойдет.
а так времени нехватает

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #66 : 08 Декабрь 2011, 17:12:51 »
щас слегка проглядел ром Sonic1 with Redbook Audio
там есть подгрузка кода прямо в память сега сд.
в ту которая отвечает за деятельность сабпроца.
короче можно по идее заставить извне сега сд делать что угодно. ^_^

щас пока пытаюсь код сдампить и пустить в дело.
о результатах сообщу сразу

Добавлено позже:
код саб проца проигрывающий музье по номеру
бинарный

Добавлено позже:
там походу никто не знает про таблицы :D
PlayTrack:                             ; CODE XREF: ROM:00004A92p
                                        ; ROM:0000584Ep ...
                cmpi.w  #$4252,($400180).l
                bne.w   loc_0_1FAE

loc_0_1E2C:                             ; CODE XREF: sub_0_1E20+14j
                cmpi.b  #$42,($A1200F).l ; 'B'
                beq.s   loc_0_1E2C
                move.b  #$FF,($A12010).l
                cmpi.b  #$81,d0
                beq.w   loc_0_1ECA
                cmpi.b  #$82,d0
                beq.w   loc_0_1ED6
                cmpi.b  #$83,d0
                beq.w   loc_0_1EE2
                cmpi.b  #$84,d0
                beq.w   loc_0_1EEE
                cmpi.b  #$85,d0
                beq.w   loc_0_1EFA
                cmpi.b  #$86,d0
                beq.w   loc_0_1F06
                cmpi.b  #$87,d0
                beq.w   loc_0_1F12
                cmpi.b  #$89,d0
                beq.w   loc_0_1F1E
                cmpi.b  #$8A,d0
                beq.w   loc_0_1F2A
                cmpi.b  #$8B,d0
                beq.w   loc_0_1F36
                cmpi.b  #$8C,d0
                beq.w   loc_0_1F42
                cmpi.b  #$8D,d0
                beq.w   loc_0_1F4C
                cmpi.b  #$8E,d0
                beq.w   loc_0_1F56
                cmpi.b  #$8F,d0
                beq.w   loc_0_1F60
                cmpi.b  #$90,d0
                beq.w   loc_0_1F6A
                cmpi.b  #$91,d0
                beq.w   loc_0_1F74
                cmpi.b  #$92,d0
                beq.w   loc_0_1F7E
                bra.w   loc_0_1FAE
; ---------------------------------------------------------------------------

loc_0_1ECA:                             ; CODE XREF: sub_0_1E20+22j
                move.w  #2,($A12012).l
                bra.w   loc_0_1F86
; ---------------------------------------------------------------------------

loc_0_1ED6:                             ; CODE XREF: sub_0_1E20+2Aj
                move.w  #5,($A12012).l
                bra.w   loc_0_1F86
; ---------------------------------------------------------------------------

loc_0_1EE2:                             ; CODE XREF: sub_0_1E20+32j
                move.w  #3,($A12012).l
                bra.w   loc_0_1F86
; ---------------------------------------------------------------------------

loc_0_1EEE:                             ; CODE XREF: sub_0_1E20+3Aj
                move.w  #6,($A12012).l
                bra.w   loc_0_1F86
; ---------------------------------------------------------------------------

loc_0_1EFA:                             ; CODE XREF: sub_0_1E20+42j
                move.w  #4,($A12012).l
                bra.w   loc_0_1F86
; ---------------------------------------------------------------------------

loc_0_1F06:                             ; CODE XREF: sub_0_1E20+4Aj
                move.w  #7,($A12012).l
                bra.w   loc_0_1F86
; ---------------------------------------------------------------------------

loc_0_1F12:                             ; CODE XREF: sub_0_1E20+52j
                move.w  #$C,($A12012).l
                bra.w   loc_0_1F86
; ---------------------------------------------------------------------------

loc_0_1F1E:                             ; CODE XREF: sub_0_1E20+5Aj
                move.w  #$E,($A12012).l
                bra.w   loc_0_1F86
; ---------------------------------------------------------------------------

loc_0_1F2A:                             ; CODE XREF: sub_0_1E20+62j
                move.w  #1,($A12012).l
                bra.w   loc_0_1F86
; ---------------------------------------------------------------------------

loc_0_1F36:                             ; CODE XREF: sub_0_1E20+6Aj
                move.w  #$F,($A12012).l
                bra.w   loc_0_1F86
; ---------------------------------------------------------------------------

loc_0_1F42:                             ; CODE XREF: sub_0_1E20+72j
                move.w  #8,($A12012).l
                bra.s   loc_0_1F86
; ---------------------------------------------------------------------------

loc_0_1F4C:                             ; CODE XREF: sub_0_1E20+7Aj
                move.w  #9,($A12012).l
                bra.s   loc_0_1F86
; ---------------------------------------------------------------------------

loc_0_1F56:                             ; CODE XREF: sub_0_1E20+82j
                move.w  #$A,($A12012).l
                bra.s   loc_0_1F86
; ---------------------------------------------------------------------------

loc_0_1F60:                             ; CODE XREF: sub_0_1E20+8Aj
                move.w  #$D,($A12012).l
                bra.s   loc_0_1F86
; ---------------------------------------------------------------------------

loc_0_1F6A:                             ; CODE XREF: sub_0_1E20+92j
                move.w  #$12,($A12012).l
                bra.s   loc_0_1F86
; ---------------------------------------------------------------------------

loc_0_1F74:                             ; CODE XREF: sub_0_1E20+9Aj
                move.w  #$10,($A12012).l
                bra.s   loc_0_1F86
; ---------------------------------------------------------------------------

loc_0_1F7E:                             ; CODE XREF: sub_0_1E20+A2j
                move.w  #$11,($A12012).l

loc_0_1F86:                             ; CODE XREF: sub_0_1E20+B2j
                                        ; sub_0_1E20+BEj ...
                move.b  #3,($A12010).l
                stop    #$2500
; ---------------------------------------------------------------------------

loc_0_1F92:                             ; CODE XREF: sub_0_1E20+17Aj
                cmpi.b  #$42,($A1200F).l ; 'B'
                beq.s   loc_0_1F92
                move.b  #$FF,($A12010).l
                move.w  #0,($A12012).l
                rts
; ---------------------------------------------------------------------------


loc_0_1FAE:                             ; CODE XREF: sub_0_1E20+8j
                                        ; sub_0_1E20+A6j
                move.b  d0,($FFFFF00A).w
                rts
; End of function sub_0_1E20

Добавлено позже:
такой вопрос. что делает команда stop?
и что означает ее аргумент? o_0

Добавлено позже:
собрал свой ром...чтото не сходится.
виснет сабпроц. там какойто код находится в месте где рома уже нет.
там уже по идее сега сд. но что там не понятно

Добавлено позже:
вот ихний код инициализации сега сд
               lea     ($A12000).l,a6
                moveq   #0,d0
                move.b  (a6),d0
                bset    #1,d0
                bclr    #0,d0
                move.b  d0,(a6)
                moveq   #$7F,d0 ; ''

loc_0_2B8:                              ; CODE XREF: RESET+B6j
                nop
                nop
                dbf     d0,loc_0_2B8
                move.b  #9,2(a6)
                moveq   #0,d0
                lea     ($A12003).l,a3
                moveq   #0,d0
                lea     ($416000).l,a0
                lea     ($420000).l,a1
                bsr.w   KosDec
                lea     (MainSubcpu).l,a0
                lea     ($426000).l,a1
                moveq   #0,d0
                move.w  #$1EE,d0

loc_0_2F2:                              ; CODE XREF: RESET+EEj
                move.b  (a0)+,(a1)+
                dbf     d0,loc_0_2F2
                move.b  #$2A,($A12002).l ; '*'
                lea     ($A12001).l,a3
                moveq   #1,d0

loc_0_308:                              ; CODE XREF: RESET+106j
                move.b  d0,(a3)
                cmp.b   (a3),d0
                bne.s   loc_0_308
                nop
                nop
                nop
                nop
                nop
                nop
                nop
                nop
                nop
                nop
                bsr.w   sub_0_34A
                nop
                nop
                nop
                nop
                nop
                nop
                nop
                nop
                nop
                nop
                bsr.w   sub_0_34A
                move.b  #$FF,($A12010).l
мой ром виснет изза этого
                lea     ($416000).l,a0
                lea     ($420000).l,a1
                bsr.w   KosDec
а без этого виснет сега сд
да и вобоих случая сега сд виснет.
ничо не пойму

Добавлено позже:
показать все что скрыто :cool: скрин

Добавлено позже:
вот почему с 4 мега не желательно ром продолжать.
потому что там сега сд обитает ^_^

Добавлено позже:
кстати по адресу 200000 нулями забито, а везде FFками.
вероятно можно даже заставить сега сд подгружать туда нужные данные.

Добавлено позже:
моя прога просмотрщик опять отличилась.
почему то там где ром кончается продолжением уже следует остаток биоса. :)

Оффлайн Smoke

  • Пользователь
  • Сообщений: 3430
  • Пол: Мужской
  • Get Serious!
    • Steam
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #67 : 08 Декабрь 2011, 17:15:46 »
В шаблоне есть макрос для проигрывания музыки по оффсету. Надо только номер трека сопоставить с оффсетом и все.
;-----------------------------------------------------------------------
; BIOS_MSCPLAY - Starts playing at a specified track.  Continues playing
; through subsequent tracks.
;
; input:
;   a0.l  address of 16 bit track number
;
; returns:
;   nothing
;-----------------------------------------------------------------------
BIOS_MSCPLAY macro
      CDBIOS #MSCPLAY
      endm
А номера давать можно через коммуникационные порты: $A12000-$A1200E со стороны MAIN CPU и $00FF8000-$00FF800E со стороны SUB CPU.

И да, можно не изобретать велосипед, если охота также сделать (карик+диск для музыки), а просто взять их шаблон, посмотреть какой порт юзается и писать в него данные. А прога сама разберется на диске :D
« Последнее редактирование: 08 Декабрь 2011, 18:45:45 от Smoke »

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #68 : 08 Декабрь 2011, 17:58:33 »
в роме порты $A12000 заюзаны и $400000 для записи проги саб кпу
видимо это возможно)
надо бы мой просмотрщик внедрить в соника например заместо левла чтоб запускался.
отследить изменения в коде саб кпу, что там все таки происходит то

Оффлайн vladikcomper

  • Пользователь
  • Сообщений: 57
  • Пол: Мужской
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #69 : 08 Декабрь 2011, 22:28:20 »
Цитата
такой вопрос. что делает команда stop?
Инструкция STOP приостанавливает процессор и ожидает прерывания. В качестве единственного операнда, насколько помню, принимает слово, которое запишется в статус регистр - SR. Это очень удобно, чтобы сразу задать маску перываний. Например stop $2300 приостоновит процессор, пока не случится прерывание выше третьего уровня (в этом случае доступны HInt - 4 уровень и VInt - 6 уровень).

В официальных играх такой способ ожидания прерываний использовали редко. К тому же я слышал, что у обычного Gens проблемы с эмуляцией этой команды и при ее использовании будут какие-то баги со временем.

К слову, про Sonic 1 with RA. Насколько помню, оборудование Sega CD инициализируется в режиме Mode 0 (хотя, могу ошибаться в цифре). В этом режиме код программы расположен на оффсетах $000000-$200000, занимая 2 Мб, т.е. внутри программы данные надо адресовать относительно нулевого оффсета, а не $200000, как это делают обычно. Не реальном железе программа запускается с картриджа и использует оборудование Mega CD, например диск, с которого играет музыка.

Не знаю, поможет ли это, просто сказал, что я по этому поводу знаю. Сам пока Сегой Сиди не занимался, хотя интерес есть. Думаю о том, как портировать свой Соник хак туда =Р Но не факт.

Оффлайн Smoke

  • Пользователь
  • Сообщений: 3430
  • Пол: Мужской
  • Get Serious!
    • Steam
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #70 : 10 Декабрь 2011, 11:51:48 »
Да нет там все как в моде2, только ворд рам делится на 2 части по мегабиту для основного и дополнительного процесооров. Чтобы они могли в одно и то же время к ворд рам обращаться (в моде 2 только один из двух процев мог работать в данный момент).
Да и имхо не нужно это если сд часть используется лишь для музыки. PRG RAM то на месте остается, а это память для программы саб-проца. Главное тут она, а данные ей давать через порт можно. Word RAM тут вообще не нужна.
Как время будет попробую свою теорию опробовать


Добавлено позже:
В общем загрузка проги в PRG RAM происходит с картриджа, а также загрузка части биоса, отвечающего за воспроизведение музыки тоже. Его приходится грузить самому, в случае же с полноценной игрой SCD, он грузится автоматически. В роме куча процедур этого биоса и мне все лень их сейчас вытаскивать, поэтому оставляю до лучших времен. Ну или ты Segaman вытаскивай побыстрее))
$5F22 -- вот оффсет этой части биоса

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #71 : 10 Декабрь 2011, 12:17:57 »
адрес ты какой указал? я там код самого соника тока вижу.
короче встроил свой просмотрщик в ром.
он запускается при загрузке левла.

Оффлайн Smoke

  • Пользователь
  • Сообщений: 3430
  • Пол: Мужской
  • Get Serious!
    • Steam
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #72 : 10 Декабрь 2011, 12:46:39 »
Адрес в роме. Тут все верно, все загрузки идут с картриджа, на диске только музло.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #73 : 10 Декабрь 2011, 12:48:42 »
я в курсе. яж и пытаюсь отследить, что куда грузится.
пока толком не пойму только одну вещь.
зачем там декомпрессия $416000 в $420000 нужна?
она ж там вроде даже и неработает. бурда какаято o_0

Оффлайн Tempest

  • Emu-Land Team
  • Сообщений: 1392
  • Пол: Мужской
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #74 : 14 Январь 2012, 11:38:26 »
Все заглохло?

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #75 : 14 Январь 2012, 13:19:50 »
Похоже что пока всё приостановлено, Segaman, ведь, как главный активист этой темы, занялся ремастерингом жаб.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #76 : 16 Январь 2012, 18:22:00 »
да, покачто интереса и времени нет.
я стараюсь делать постепенно несколько вещей, чтобы поддерживать стабильный интерес.
у меня щас интересы в списке самый высокий приоритет вверху:
Sega Gopher
Battletoads Remastered
Моя игруха, название не разглошаю
Sega CD

последние 2 пока намертво глухи :-\ но я планирую к сега сд вернуться не надолго после первой беты лягушек и еще поковырять
а игруха моя разрастается благодаря хацкингу лягушек. яж либы новые пишу, а они очень автоматичны :cool:
в игре на ура будут работать, оссобенно вот этот скрипт уменьшения картинки.
я над ним 3-4 часа сидел, моск ломал, чтоб ничего не упустить, но пока не тестил не разу, что очень плохо.
кстати жанр игрухи тож не скажу, зато скажу что сайт для нее уже зареган ^_^ и название менять не буду.
даже геймплей написал

Добавлено позже:
совсем забыл, у меня ж еще сорсы и доки на ноутбуке, а он в ремонте, так что тут пока без него никак.
кстати его уже почиили, оказывается я память сварил на видюхе.
осталось забрать, но проблема сразу не решиться, так как очень многое я успел сделать на станционарнике.
придется файлы копировать на флешку и отдуда с помощью тоотал командыр записывать ток новые файлы.
гдето день придется на это убить :-\

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #77 : 05 Март 2012, 13:23:40 »
И да, можно не изобретать велосипед, если охота также сделать (карик+диск для музыки), а просто взять их шаблон, посмотреть какой порт юзается и писать в него данные. А прога сама разберется на диске :D
А где шаблон.

Оффлайн Smoke

  • Пользователь
  • Сообщений: 3430
  • Пол: Мужской
  • Get Serious!
    • Steam
    • Просмотр профиля

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #79 : 05 Март 2012, 18:55:23 »
http://gendev.spritesmind.net/files/mcd/Luke_ProjectCD.zip
Спасибо.
Такой-то шаблон, это же для сегацд?
А чтобы просто шаблон с процедурой закидывания из плеера из рома в сегацд рам.

В роме соник1 не совсем ясно как работает.
ROM:000002E0                 lea     (aMainSubcpu).l,a0 ; "MAIN-SUBCPU"
ROM:000002E6                 lea     ($426000).l,a1
ROM:000002EC                 moveq   #0,d0
ROM:000002EE                 move.w  #$1EE,d0
ROM:000002F2
ROM:000002F2 loc_0_2F2:                              ; CODE XREF: RESET+EEj
ROM:000002F2                 move.b  (a0)+,(a1)+
ROM:000002F4                 dbf     d0,loc_0_2F2
Понятно что код проги  с  $35E по $54A,   но в нем самом содержится куча jsr к sub_0_5F22
Цитата
ROM:0000053C                 jsr     sub_0_5F22
а там уже отсебятины тонна.

Добавлено позже:
Цитата: Segaman
Добавлено позже:
код саб проца проигрывающий музье по номеру
бинарный
Добавлено позже:
там походу никто не знает про таблицы

В $4730 такой же еще код.

ROM:00004730 sub_0_4730:                             ; CODE XREF: ROM:00003AF2p
ROM:00004730                                         ; ROM:00003BC2p ...
ROM:00004730                 cmpi.w  #$4252,($400180).l
ROM:00004738                 bne.w   loc_0_48EE
ROM:0000473C
ROM:0000473C loc_0_473C:                             ; CODE XREF: sub_0_4730+14j
ROM:0000473C                 cmpi.b  #$42,(byte_0_A1200F).l
ROM:00004744                 beq.s   loc_0_473C
ROM:00004746                 move.b  #-1,(byte_0_A12010).l
ROM:0000474E                 cmpi.b  #$81,d0
ROM:00004752                 beq.w   loc_0_47E2
ROM:00004756                 cmpi.b  #$82,d0
ROM:0000475A                 beq.w   loc_0_47EE


Добавлено позже:
а просто взять их шаблон, посмотреть какой порт юзается и писать в него данные.
что там смотреть, очевидно же номер трека который играть:
move.w  #7,($A12012).l

p.s. а где список оффсетов на треки кстати?

Добавлено позже:
Добавлено позже:
В общем загрузка проги в PRG RAM происходит с картриджа, а также загрузка части биоса, отвечающего за воспроизведение музыки тоже.
В роме куча процедур этого биоса и мне все лень их сейчас вытаскивать, поэтому оставляю до лучших времен.
$5F22 -- вот оффсет этой части биоса
Если $5f22 это биос он же в роме лежит.. Выходит не грузится.

Оффлайн Smoke

  • Пользователь
  • Сообщений: 3430
  • Пол: Мужской
  • Get Serious!
    • Steam
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #80 : 05 Март 2012, 19:05:42 »
В том то и дело, что грузится в этом режиме (моде1), во втором да, не грузится. А так моде1 и подразумевает инициализацию с картриджа (boot from cartridge)

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #81 : 06 Март 2012, 10:18:21 »
я понял. значит гдето инициализация этого режима и только тогда можно прогу записать....
но почему то мой код все записывал а работать все отказывалось.
проц сега сд просто вешался :-\
все равно не пойму

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #82 : 12 Март 2012, 19:09:16 »
Взломал я вообщем этого соника1моуд:
нефига там всё лишнее,только плеер нужен (тот что 35e-54A)

asm+bin:


как сделал:


Добавлено позже:
При загрузке картриджа+диска не пашет дма из рома, только из рама - как пофиксить?

rrr mode 1  :lol::
http://www.youtube.com/watch?v=6El2laAXzt0
« Последнее редактирование: 12 Март 2012, 19:57:08 от Ti_ »

Оффлайн Smoke

  • Пользователь
  • Сообщений: 3430
  • Пол: Мужской
  • Get Serious!
    • Steam
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #83 : 12 Март 2012, 22:04:00 »
Ti_, красавец. Избавил меня от разбирания всей этой шняги. Теперь можно без особых проблем вставлять куда угодно :)
Цитата: Ti_
При загрузке картриджа+диска не пашет дма из рома, только из рама - как пофиксить?
Может быть эти самые какие то настройки вдп повлияли?

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #84 : 12 Март 2012, 23:01:16 »
Теперь можно без особых проблем вставлять куда угодно :) Может быть эти самые какие то настройки вдп повлияли?
Нет, баг возникает даже без добавления в игру плеера. Просто при загрузке диска.   И не важно в какой игре.  Например откроем оригинальный dune2 + пустой CD диск  - артефакты много где.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #85 : 14 Сентябрь 2012, 14:04:39 »
                lea     ($416000).l,a0
                lea     ($420000).l,a1
                bsr.w   KosDec
короче ром успевает когда то загрузить в $416000 архив биоса.
который в свою очередь извлекается в $420000
щас я сдамплю этот биос и попробую с ним что нибудь сделать.
как я понял для воспроизведения нужны две вещи.
биос и код проигрывания... и прямые руки. щас буду пробовать, об успехах отпишусь
Добавлено позже:
короче биос сжатый там по дефолту обитает при инициализации моде 1 вообще.
так что виснет ром у меня не поэтому.
Добавлено позже:
биос запустил, прогу в саб кпу отправил и успешно запустил.
а отклика от сега сд ноль.
Ti_, выручай.
« Последнее редактирование: 14 Сентябрь 2012, 15:02:06 от Segaman »

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #86 : 14 Сентябрь 2012, 18:06:50 »
Ti_, выручай.
Я уже выкладывал рип-плеера. Правда там был небольшой косячок.
Так что вот еще раз рабочая версия, та что у меня в хаке RRR лежит.
Этот код надо запустить 1раз после стандратной инициализации.

Далее управление плеером осуществляется со стороны обычной сеги :
stop_cd_music:
tst.b (sega_cd_flag).w
beq.s no_scd_stop
lea ($A1200F).l,a0

scd_wait:
move.b (a0),d0
bne.s   scd_wait
move.b  d0,1(a0)
stop    #$2500

scd_wait2:
                cmpi.b  #$42,(a0)
beq.s scd_wait2
move.b  #-1,1(a0)

no_scd_stop:
rts

play track (d0 - номер трека)  (повторяемая игра трека)
lea ($A12012).l,a0
move.w d0,(a0)
move.b #3,-2(a0)
stop #$2500
loc_0_48D2:
cmpi.b #$42,-3(a0)
beq.s loc_0_48D2
move.b #-1,-2(a0)
move.w #0,(a0)
rts
Кроме этих двух плеер ещё много чего держит, можешь проверять разными комбами - там в коде плеера 9 условий где-то, вот ты ими и управляешь - запись #3 как раз нужна для запуска трека.

Самое главное чтобы всё работало нужно в VBLANK добавить строчку:

VBLANK:
movem.l d0-a6,-(sp)
bset #8,($A12000).l

Без нее ничего работать не будет. Так же не будет работать если сейвишь меньше регистров (например d0-d2/a0-a2).
Вообщем она не должна выполняться сразу же при прерывании, только чуть позже - так что если не работает пихай чуть после, или добавляй нопы после сейва регов.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #87 : 15 Сентябрь 2012, 11:45:39 »
все равно ничего не работает.
Далее управление плеером осуществляется со стороны обычной сеги :
stop_cd_music:
tst.b (sega_cd_flag).w
beq.s no_scd_stop
lea ($A1200F).l,a0

scd_wait:
move.b (a0),d0
bne.s   scd_wait
move.b  d0,1(a0)
stop    #$2500

scd_wait2:
                cmpi.b  #$42,(a0)
beq.s scd_wait2
move.b  #-1,1(a0)

no_scd_stop:
rts
что это? куда это встяавлять?

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #88 : 15 Сентябрь 2012, 12:51:59 »
все равно ничего не работает.что это? куда это встяавлять?
Что это а ты читаешь умеешь? Stop cd music - то есть остановка проигрывания. У меня после выхода с гонки это вставлено.
А следующий за ним запуска трека по его номеру, номер трека в d0.  Перед запуском трека надо остановить вначале. Если ничего не получится - скидывай асм я тебе поправлю.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3240
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Re: Портирование игр с SegaMD/G на SegaCD/MegaCD
« Ответ #89 : 17 Сентябрь 2012, 09:36:42 »
попробую новый ром собрать.
внутри моего не пашет