Автор Тема: GENS+Retroarch vs Kega Fusion  (Прочитано 13660 раз)

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

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: GENS+Retroarch vs Kega Fusion
« Ответ #30 : 09 Декабрь 2013, 01:56:34 »
ваши хаки на железе вообще работают ? если да - на какой именно версии сегицд и с каким биосом ?
Ну, в хаке RRR, код был стырен с хака Sonic. А  автора хака соника его и рекламировали, у них вроде бы всё работало.
Потом кто-то тестировал и на нашем форуме, вроде работало, но что именно не помню, и тем более на каком железе.
Первая версия плеера, гораздо позже появилась чем хак соник, вторая тем более, собственно они появились как раз из-за того, что авторы хака соника, рассказывать про него не хотели.

Добавлено позже:
короче, это косяки ваших хаков, у вас предполагается, что код биоса лежит с $416000, а он вообще-то может быть и по другим адресам, гляньте в исходниках моде1 плеера.
а ваши хаки получается будут работать только с сугубо одним биосом и на железе.
Ясно, спасибо посмотрим.

Тогда остается вопрос в том, как потом проверить? Вавы то в исо не засунуть, или всё таки будет обновлённая ревизия ретроарча?
« Последнее редактирование: 09 Декабрь 2013, 02:06:10 от Ti_ »

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9386
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Re: GENS+Retroarch vs Kega Fusion
« Ответ #31 : 09 Декабрь 2013, 02:05:16 »
короче работает оно, но ваши хаки пашут только с японским биосом

в твоем RRR музычка играет, то я видно сначала криво твой ром похакал, на предмет правки адресов :)
Добавлено позже:
сделай что-то подобное, и оно будет работать на всех сегах ЦД

    /*
     * Check for CD BIOS
     * When a cart is inserted in the MD, the CD hardware is mapped to
     * 0x400000 instead of 0x000000. So the BIOS ROM is at 0x400000, the
     * Program RAM bank is at 0x420000, and the Word RAM is at 0x600000.
     */
    bios = (uint8_t *)0x415800;
    if (memcmp(bios + 0x6D, "SEGA", 4))
    {
        bios = (uint8_t *)0x416000;
        if (memcmp(bios + 0x6D, "SEGA", 4))
        {
            // check for WonderMega/X'Eye
            if (memcmp(bios + 0x6D, "WONDER", 6))
            {
                bios = (uint8_t *)0x41AD00; // might also be 0x40D500
                // check for LaserActive
                if (memcmp(bios + 0x6D, "SEGA", 4))
                {
                    put_str("No CD detected!", RED_TEXT, 20-7, 12);
                    while (1) ;
                }
            }
        }
    }
    sprintf(text, "CD Sub-CPU BIOS detected at 0x%6X", (uint32_t)bios);
    put_str(text, GREEN_TEXT, 2, 2);
Добавлено позже:
Цитата: Ti_
Тогда остается вопрос в том, как потом проверить? Вавы то в исо не засунуть, или всё таки будет обновлённая ревизия ретроарча?

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

но сделал загрузку .cue в моде1, как этим пользоваться:
- изменить первые 4 символа названия игры в роме по офсету 0x120 на "FLUX"
- изменить первые символы первого трека образа на "SEGADISCSYSTEM"
- переименовать .cue так же как ром, например RocknRoll.cue, трек(и) могут называться как угодно, поддерживается cue+bin, cue+wav-ы, cue+ogg
- запустить ром как обычно



Добавлено позже:
прикрутил кое-как парсинг аудио-цд в моде1, пробуйте :)

как пользоваться:
- изменить первые 4 символа названия игры в роме по офсету 0x120 на "FLUX"
- переименовать .cue так же как ром, например RocknRoll.cue, трек(и) могут называться как угодно, поддерживаются cue+bin, cue+wav-ы, cue+ogg
- запустить ром игры
« Последнее редактирование: 09 Декабрь 2013, 09:13:05 от MetalliC »

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: GENS+Retroarch vs Kega Fusion
« Ответ #32 : 09 Декабрь 2013, 15:49:04 »
прикрутил кое-как парсинг аудио-цд в моде1, пробуйте :)

как пользоваться:
- изменить первые 4 символа названия игры в роме по офсету 0x120 на "FLUX"
- переименовать .cue так же как ром, например RocknRoll.cue, трек(и) могут называться как угодно, поддерживаются cue+bin, cue+wav-ы, cue+ogg
- запустить ром игры
Вот это дело! Проверил с cue+bin - работает.

Вместо  lea ($416000).l,a0 , прописал:
move.w #'EG',d0 ; sEGa
lea ($415800).l,a0 ; US/EU bios?
cmp.w $6E(a0),d0
beq.s unpack_bios

lea ($416000).l,a0 ; JAP bios
cmp.w $6E(a0),d0
beq.s unpack_bios
cmpi.w #'ON',$6E(a0) ; check for wONderMega/X'Eye
beq.s unpack_bios

lea ($41AD00).l,a0 ; check for LaserActive
cmp.w $6E(a0),d0
beq.s unpack_bios
lea ($40D500).l,a0 ; check for LaserActive
cmp.w $6E(a0),d0
bne.s no_bios_found
unpack_bios:
С U bios'om - заработало. J и E забрасывал подменой файла - тоже работает. Что такое wondermega и laseractive не знаю, на всякий случай пусть будет.

Отличия от Кеги  - нету бага с dma.  То есть теперь можно подшивать моуд1 к любой игре.
Второе отличие: в ретроарч музыка выходит гораздо громче, чем звуки. В кега наоборот, музыка тише.
Походу придется добавлять настройку громкости в хак.



Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: GENS+Retroarch vs Kega Fusion
« Ответ #33 : 11 Декабрь 2013, 16:40:41 »
MetalliС, нашелся ещё 1 баг.  В этом режиме в Retroarch не пашет сплит-скрин и игра виснет. Не знаю проблема ли это хака, в Kega работает, хоть и немного странно - включается чуть с запозданием. А как оно на железе не знаю.
Может что подскажешь. (выбрать можно 2players или 1pl.+AI)

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9386
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Re: GENS+Retroarch vs Kega Fusion
« Ответ #34 : 14 Декабрь 2013, 18:51:55 »
Цитата: Ti_
Что такое wondermega и laseractive не знаю, на всякий случай пусть будет.

первое это SMD и SCD в одном флаконе, второе какой-то винрарный гибрид с лазердиск-плеером
Цитата: Ti_
Может что подскажешь. (выбрать можно 2players или 1pl.+AI)

толком ничего не подскажу, игра зависает с PC=0x00FFFFFF, ну и крутится вечно т.к. в обработчике исключения тупо RTE
как оно туда попадает - хз, трейс-лог GenPlus делать не умеет.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: GENS+Retroarch vs Kega Fusion
« Ответ #35 : 14 Декабрь 2013, 20:42:00 »
как оно туда попадает - хз, трейс-лог GenPlus делать не умеет.
Ну как попадает выяснил - зависон происходит сразу, как разрешаются все прерывания через move #$2000,sr, в т.ч. hblank.  Но почему-то его адрес = 0xFFFFFFFF , поэтому и pc такой.  Глюк эмулятора или какая-то тонкость,  в Kega то всё нормально, включалось там не сразу, потому что при самом запуске трека прописывается "stop #$2500." если заменить на 2100, то сразу будет.  А в ретроарч в этом случае сразу и зависнет.

Оффлайн sonygod

  • Ушел с форума
  • Сообщений: 7916
  • Пол: Мужской
    • Просмотр профиля
Re: GENS+Retroarch vs Kega Fusion
« Ответ #36 : 14 Декабрь 2013, 22:56:14 »
Ребят может вопрос и нубский но я никогда не сталкивался с этим. Скачал genesis plus gx а как его запустить не знаю. Внутри файлы формата DOL.

Оффлайн SQR218

  • Пользователь
  • Сообщений: 319
  • Пол: Мужской
    • Просмотр профиля
Re: GENS+Retroarch vs Kega Fusion
« Ответ #37 : 14 Декабрь 2013, 23:06:19 »
Ребят может вопрос и нубский но я никогда не сталкивался с этим. Скачал genesis plus gx а как его запустить не знаю. Внутри файлы формата DOL.

Ты скачал версию для геймкуба.
Добавлено позже:
или Wii

Оффлайн sonygod

  • Ушел с форума
  • Сообщений: 7916
  • Пол: Мужской
    • Просмотр профиля
Re: GENS+Retroarch vs Kega Fusion
« Ответ #38 : 14 Декабрь 2013, 23:33:48 »
SQR218, Я так и подумал. Качал с эмукр. До этого искал по гуглю но версию под винду так и не нашел (только под мак).

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9386
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Re: GENS+Retroarch vs Kega Fusion
« Ответ #39 : 15 Декабрь 2013, 12:09:05 »
sonygod, не то ты искал ;)
genesis plus GX в отдельном виде как я думаю понятно из названия - для куба/вий, надо было искать RetroArch в составе которого есть порт этого эмулятора.
тебе для какой платформы нужно вообще ? для винды тут лежит

Цитата: Ti_
зависон происходит сразу, как разрешаются все прерывания через move #$2000,sr, в т.ч. hblank

а по какому адресу этот move sr находится ?

Оффлайн sonygod

  • Ушел с форума
  • Сообщений: 7916
  • Пол: Мужской
    • Просмотр профиля
Re: GENS+Retroarch vs Kega Fusion
« Ответ #40 : 15 Декабрь 2013, 13:21:51 »
MetalliC, Спасибо.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: GENS+Retroarch vs Kega Fusion
« Ответ #41 : 15 Декабрь 2013, 14:13:55 »
а по какому адресу этот move sr находится ?
В роме alpha15r6  - 0xEDD2.  Если надо вот ещё ром с умкшным экраном дебага.
« Последнее редактирование: 16 Декабрь 2013, 16:56:43 от Ti_ »

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9386
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Re: GENS+Retroarch vs Kega Fusion
« Ответ #42 : 16 Декабрь 2013, 18:25:31 »
нда, явная бага эмулятора - 0x00ffffff каким-то хреном оказывается в векторе HINT, в самом роме в памяти 0_о, каким хреном оно туда записывается - не понятно, и я хз как эту запись отловить
Добавлено позже:
лол, и опять это не бага эмулятора :)
в SegaCD младшие два байта вектора HINT в роме игнорируются (а может и старшие тоже ? в доке как-то не понятно), вместо них железяка подставляет содержимое регистра A12006, который по-умолчанию после сброса - 0xFFFF

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3265
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: GENS+Retroarch vs Kega Fusion
« Ответ #43 : 16 Декабрь 2013, 19:15:53 »
в SegaCD младшие два байта вектора HINT в роме игнорируются (а может и старшие тоже ? в доке как-то не понятно), вместо них железяка подставляет содержимое регистра A12006, который по-умолчанию после сброса - 0xFFFF
Это в какой именно доке?  Если бы только 2 байта, PC не был бы 0x00ffffff, а 0x0000ffff.

Вообщем сделал так, меняю эти 2 байта через запись в регистр. Верхние остаются 0x00ff. 
Так что сунул в оперативу джамп на hblank.  После этого всё заработало.  Будем надеятся что и на железе всё точно так.
« Последнее редактирование: 16 Декабрь 2013, 20:01:01 от Ti_ »

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9386
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Re: GENS+Retroarch vs Kega Fusion
« Ответ #44 : 17 Декабрь 2013, 13:32:07 »
короче я не угадал, всё таки это бага, так что возвращай назад как было :)
попозже сборку подправленную выложу

в SegaCD этот вектор HINT меняется, но только в bios-е (что как бы логично), а в картридже в моде1 он какой был такой и остается в железе.