Автор Тема: Извлечение мультимедиа (звук, видео, музыка) данных из игр CD/DVD приставок  (Прочитано 454033 раз)

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

Оффлайн FireFox Фан

  • Пользователь
  • Сообщений: 1493
  • Пол: Мужской
  • Огнелис
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Как и чем мне извлечь музыку из игр серии "Марио и Соник на Олимпийских играх"?

Оффлайн Томахомэ

  • Пользователь
  • Сообщений: 774
  • Пол: Мужской
    • Просмотр профиля
ты сделай чтоб не наиграть - а конвертануть.

На этот случай есть недавно приведённая уже во вполне-таки играбельный вид Motocross Go!, где звуковым чипом служит сэмплер Namco C352.
За что отвечают первые 2 и последние 6 байт каждой мелодийки, а также машинные слова, предваряющие адреса каждого сэмпла, пока не ясно, но в остальном структура чётко видна на цитатах из кода ниже. Обратите внимание, что после 1-го сэмпла порядок следования начального, конечного и зацикливающего адресов у всех последующих становится строго обратный.

BGM1:
008B6C: 0323                illegal
008B6E: 8800 ; samples bank (bytes are swapped)
008B70: 2A00                mov.b   @h'ffff00, r2l
008B72: EC02 ; 1st sample start address
008B74: EB01 ; 1st sample end address
008B76: 8900 ; 1st sample loop address
008B78: 2A80                mov.b   @h'ffff80, r2l
008B7A: EC01 ; 2nd sample loop address
008B7C: EB00 ; 2nd sample end address
008B7E: 8A00 ; 2nd sample start address
008B80: 2A80                mov.b   @h'ffff80, r2l
008B82: EC00 ; 3rd sample loop address
008B84: EBFF ; 3rd sample end address
008B86: 8A00 ; 3rd sample start address
008B88: 2A80                mov.b   @h'ffff80, r2l
008B8A: ECFF ; 4th sample loop address
008B8C: EBFE ; 4th sample end address
008B8E: 8B00 ; 4th sample start address
008B90: 2A80                mov.b   @h'ffff80, r2l
008B92: ECFE                and.b   #h'fe, r4l
008B94: EBFD                and.b   #h'fd, r3l
008B96: 8C00 ; 5th sample start address
008B98: 2A80                mov.b   @h'ffff80, r2l
008B9A: ECFD                and.b   #h'fd, r4l
008B9C: EBFC                and.b   #h'fc, r3l
008B9E: 8D00 ; 6th sample start address
008BA0: 2A80                mov.b   @h'ffff80, r2l
008BA2: ECFC                and.b   #h'fc, r4l
008BA4: EBFB                and.b   #h'fb, r3l
008BA6: 8E00 ; 7th sample start address
008BA8: 2A80                mov.b   @h'ffff80, r2l
008BAA: ECFB                and.b   #h'fb, r4l
008BAC: EBFA                and.b   #h'fa, r3l
008BAE: 8F00 ; 8th sample start address
008BB0: 2A80                mov.b   @h'ffff80, r2l
008BB2: ECFA                and.b   #h'fa, r4l
008BB4: EBF9                and.b   #h'f9, r3l
008BB6: 9000 ; 9th sample start address
008BB8: 2A80                mov.b   @h'ffff80, r2l
008BBA: ECF9                and.b   #h'f9, r4l
008BBC: EBF8                and.b   #h'f8, r3l
008BBE: 9100 ; 10th sample start address
008BC0: 2A80                mov.b   @h'ffff80, r2l
008BC2: ECF8                and.b   #h'f8, r4l
008BC4: EBF7                and.b   #h'f7, r3l
008BC6: 9200 ; 11th sample start address
008BC8: 2A80                mov.b   @h'ffff80, r2l
008BCA: ECF7                and.b   #h'f7, r4l
008BCC: EBF6                and.b   #h'f6, r3l
008BCE: 9300 ; 12th sample start address
008BD0: 2A80                mov.b   @h'ffff80, r2l
008BD2: ECF6                and.b   #h'f6, r4l
008BD4: EBF5                and.b   #h'f5, r3l
008BD6: 9400 ; 13th sample start address
008BD8: 2A80                mov.b   @h'ffff80, r2l
008BDA: ECF5                and.b   #h'f5, r4l
008BDC: EBF4                and.b   #h'f4, r3l
008BDE: 9500 ; 14th sample start address
008BE0: 2A80                mov.b   @h'ffff80, r2l
008BE2: ECF4                and.b   #h'f4, r4l
008BE4: EBF3                and.b   #h'f3, r3l
008BE6: 9600 ; 15th sample start address
008BE8: 2A80                mov.b   @h'ffff80, r2l
008BEA: ECF3                and.b   #h'f3, r4l
008BEC: EBF2                and.b   #h'f2, r3l
008BEE: 9700 ; 16th sample start address
008BF0: 2A80                mov.b   @h'ffff80, r2l
008BF2: ECF2                and.b   #h'f2, r4l
008BF4: EBF1                and.b   #h'f1, r3l
008BF6: 9800 ; 17th sample start address
008BF8: 2A80                mov.b   @h'ffff80, r2l
008BFA: ECF1                and.b   #h'f1, r4l
008BFC: EBF0                and.b   #h'f0, r3l
008BFE: 9900 ; 18th sample start address
008C00: 2A80                mov.b   @h'ffff80, r2l
008C02: ECF0                and.b   #h'f0, r4l
008C04: EBEF                and.b   #h'ef, r3l
008C06: 9A00 ; 19th sample start address
008C08: 2A80                mov.b   @h'ffff80, r2l
008C0A: ECEF                and.b   #h'ef, r4l
008C0C: EBEE                and.b   #h'ee, r3l
008C0E: 9B00 ; 20th sample start address
008C10: 2A80                mov.b   @h'ffff80, r2l
008C12: ECEE                and.b   #h'ee, r4l
008C14: EBED                and.b   #h'ed, r3l
008C16: 9C00 ; 21st sample start address
008C18: 2A80                mov.b   @h'ffff80, r2l
008C1A: ECED                and.b   #h'ed, r4l
008C1C: EBEC                and.b   #h'ec, r3l
008C1E: 9D00 ; 22nd sample start address
008C20: 2A80                mov.b   @h'ffff80, r2l
008C22: ECEC                and.b   #h'ec, r4l
008C24: EBEB                and.b   #h'eb, r3l
008C26: 9E00 ; 23rd sample start address
008C28: 2A80                mov.b   @h'ffff80, r2l
008C2A: ECEB                and.b   #h'eb, r4l
008C2C: EBEA                and.b   #h'ea, r3l
008C2E: 9F00 ; 24th sample start address
008C30: 2A80                mov.b   @h'ffff80, r2l
008C32: ECEA                and.b   #h'ea, r4l
008C34: EBE9                and.b   #h'e9, r3l
008C36: A000 ; 25th sample start address
008C38: 2A80                mov.b   @h'ffff80, r2l
008C3A: ECE9                and.b   #h'e9, r4l
008C3C: EBE8                and.b   #h'e8, r3l
008C3E: A100 ; 26th sample start address
008C40: 2A80                mov.b   @h'ffff80, r2l
008C42: ECE8                and.b   #h'e8, r4l
008C44: EBE7                and.b   #h'e7, r3l
008C46: A200 ; 27th sample start address
008C48: 2A80                mov.b   @h'ffff80, r2l
008C4A: ECE7                and.b   #h'e7, r4l
008C4C: EBE6                and.b   #h'e6, r3l
008C4E: A300 ; 28th sample start address
008C50: 2A80                mov.b   @h'ffff80, r2l
008C52: ECE6                and.b   #h'e6, r4l
008C54: EBE5                and.b   #h'e5, r3l
008C56: A400 ; 29th sample start address
008C58: 2A80                mov.b   @h'ffff80, r2l
008C5A: ECE5                and.b   #h'e5, r4l
008C5C: EBE4                and.b   #h'e4, r3l
008C5E: A500 ; 30th sample start address
008C60: 2A80                mov.b   @h'ffff80, r2l
008C62: ECE4                and.b   #h'e4, r4l
008C64: EBE3                and.b   #h'e3, r3l
008C66: A600 ; 31st sample start address
008C68: 2A80                mov.b   @h'ffff80, r2l
008C6A: ECE3                and.b   #h'e3, r4l
008C6C: EBE2                and.b   #h'e2, r3l
008C6E: A700 ; 32nd sample start address
008C70: 2A80                mov.b   @h'ffff80, r2l
008C72: ECE2                and.b   #h'e2, r4l
008C74: EBE1                and.b   #h'e1, r3l
008C76: A800 ; 33rd sample start address
008C78: 2A80                mov.b   @h'ffff80, r2l
008C7A: ECE1                and.b   #h'e1, r4l
008C7C: EBE0                and.b   #h'e0, r3l
008C7E: A900 ; 34th sample start address
008C80: 2A80                mov.b   @h'ffff80, r2l
008C82: ECE0                and.b   #h'e0, r4l
008C84: EBDF                and.b   #h'df, r3l
008C86: AA00 ; 35th sample start address
008C88: 2A80                mov.b   @h'ffff80, r2l
008C8A: ECDF ; 36th sample loop address
008C8C: EBDE ; 36th sample end address
008C8E: AB00 ; 36th sample start address
008C90: 0880                add.b   r0l, r0h
008C92: ECDE                and.b   #h'de, r4l
008C94: 0DE9                mov.w   e6, e1

BGM2:
008C96: 0323                illegal
008C98: AB00 ; samples bank
008C9A: 2A00                mov.b   @h'ffff00, r2l
008C9C: 1CE9 ; 1st sample start address
008C9E: 1BE8 ; 1st sample end address
008CA0: AC00 ; 1st sample loop address
008CA2: 2A80                mov.b   @h'ffff80, r2l
008CA4: 1CE8 ; 2nd sample loop address
008CA6: 1BE7 ; 2nd sample end address
008CA8: AD00 ; 2nd sample start address
008CAA: 2A80                mov.b   @h'ffff80, r2l
008CAC: 1CE7                cmp.b   r6l, r7h
008CAE: 1BE6                illegal
008CB0: AE00                cmp.b   #h'00, r6l
008CB2: 2A80                mov.b   @h'ffff80, r2l
008CB4: 1CE6                cmp.b   r6l, r6h
008CB6: 1BE5                illegal
008CB8: AF00                cmp.b   #h'00, r7l
008CBA: 2A80                mov.b   @h'ffff80, r2l
008CBC: 1CE5                cmp.b   r6l, r5h
008CBE: 1BE4                illegal
008CC0: B000                subx.b  #h'00, r0h
008CC2: 2A80                mov.b   @h'ffff80, r2l
008CC4: 1CE4                cmp.b   r6l, r4h
008CC6: 1BE3                illegal
008CC8: B100                subx.b  #h'00, r1h
008CCA: 2A80                mov.b   @h'ffff80, r2l
008CCC: 1CE3                cmp.b   r6l, r3h
008CCE: 1BE2                illegal
008CD0: B200                subx.b  #h'00, r2h
008CD2: 2A80                mov.b   @h'ffff80, r2l
008CD4: 1CE2                cmp.b   r6l, r2h
008CD6: 1BE1                illegal
008CD8: B300                subx.b  #h'00, r3h
008CDA: 2A80                mov.b   @h'ffff80, r2l
008CDC: 1CE1                cmp.b   r6l, r1h
008CDE: 1BE0                illegal
008CE0: B400                subx.b  #h'00, r4h
008CE2: 2A80                mov.b   @h'ffff80, r2l
008CE4: 1CE0                cmp.b   r6l, r0h
008CE6: 1BDF                dec.w   #2, e7
008CE8: B500                subx.b  #h'00, r5h
008CEA: 2A80                mov.b   @h'ffff80, r2l
008CEC: 1CDF                cmp.b   r5l, r7l
008CEE: 1BDE                dec.w   #2, e6
008CF0: B600                subx.b  #h'00, r6h
008CF2: 2A80                mov.b   @h'ffff80, r2l
008CF4: 1CDE                cmp.b   r5l, r6l
008CF6: 1BDD                dec.w   #2, e5
008CF8: B700                subx.b  #h'00, r7h
008CFA: 2A80                mov.b   @h'ffff80, r2l
008CFC: 1CDD                cmp.b   r5l, r5l
008CFE: 1BDC                dec.w   #2, e4
008D00: B800                subx.b  #h'00, r0l
008D02: 2A80                mov.b   @h'ffff80, r2l
008D04: 1CDC                cmp.b   r5l, r4l
008D06: 1BDB                dec.w   #2, e3
008D08: B900                subx.b  #h'00, r1l
008D0A: 2A80                mov.b   @h'ffff80, r2l
008D0C: 1CDB                cmp.b   r5l, r3l
008D0E: 1BDA                dec.w   #2, e2
008D10: BA00                subx.b  #h'00, r2l
008D12: 2A80                mov.b   @h'ffff80, r2l
008D14: 1CDA                cmp.b   r5l, r2l
008D16: 1BD9                dec.w   #2, e1
008D18: BB00                subx.b  #h'00, r3l
008D1A: 2A80                mov.b   @h'ffff80, r2l
008D1C: 1CD9                cmp.b   r5l, r1l
008D1E: 1BD8                dec.w   #2, e0
008D20: BC00                subx.b  #h'00, r4l
008D22: 2A80                mov.b   @h'ffff80, r2l
008D24: 1CD8                cmp.b   r5l, r0l
008D26: 1BD7                dec.w   #2, r7
008D28: BD00                subx.b  #h'00, r5l
008D2A: 2A80                mov.b   @h'ffff80, r2l
008D2C: 1CD7                cmp.b   r5l, r7h
008D2E: 1BD6                dec.w   #2, r6
008D30: BE00                subx.b  #h'00, r6l
008D32: 2A80                mov.b   @h'ffff80, r2l
008D34: 1CD6                cmp.b   r5l, r6h
008D36: 1BD5                dec.w   #2, r5
008D38: BF00                subx.b  #h'00, r7l
008D3A: 2A80                mov.b   @h'ffff80, r2l
008D3C: 1CD5                cmp.b   r5l, r5h
008D3E: 1BD4                dec.w   #2, r4
008D40: C000                or.b    #h'00, r0h
008D42: 2A80                mov.b   @h'ffff80, r2l
008D44: 1CD4                cmp.b   r5l, r4h
008D46: 1BD3                dec.w   #2, r3
008D48: C100                or.b    #h'00, r1h
008D4A: 2A80                mov.b   @h'ffff80, r2l
008D4C: 1CD3                cmp.b   r5l, r3h
008D4E: 1BD2                dec.w   #2, r2
008D50: C200                or.b    #h'00, r2h
008D52: 2A80                mov.b   @h'ffff80, r2l
008D54: 1CD2                cmp.b   r5l, r2h
008D56: 1BD1                dec.w   #2, r1
008D58: C300                or.b    #h'00, r3h
008D5A: 2A80                mov.b   @h'ffff80, r2l
008D5C: 1CD1                cmp.b   r5l, r1h
008D5E: 1BD0                dec.w   #2, r0
008D60: C400                or.b    #h'00, r4h
008D62: 2A80                mov.b   @h'ffff80, r2l
008D64: 1CD0                cmp.b   r5l, r0h
008D66: 1BCF                illegal
008D68: C500                or.b    #h'00, r5h
008D6A: 2A80                mov.b   @h'ffff80, r2l
008D6C: 1CCF                cmp.b   r4l, r7l
008D6E: 1BCE                illegal
008D70: C600                or.b    #h'00, r6h
008D72: 2A80                mov.b   @h'ffff80, r2l
008D74: 1CCE                cmp.b   r4l, r6l
008D76: 1BCD                illegal
008D78: C700                or.b    #h'00, r7h
008D7A: 2A80                mov.b   @h'ffff80, r2l
008D7C: 1CCD                cmp.b   r4l, r5l
008D7E: 1BCC                illegal
008D80: C800                or.b    #h'00, r0l
008D82: 2A80                mov.b   @h'ffff80, r2l
008D84: 1CCC                cmp.b   r4l, r4l
008D86: 1BCB                illegal
008D88: C900                or.b    #h'00, r1l
008D8A: 2A80                mov.b   @h'ffff80, r2l
008D8C: 1CCB                cmp.b   r4l, r3l
008D8E: 1BCA                illegal
008D90: CA00                or.b    #h'00, r2l
008D92: 2A80                mov.b   @h'ffff80, r2l
008D94: 1CCA                cmp.b   r4l, r2l
008D96: 1BC9                illegal
008D98: CB00                or.b    #h'00, r3l
008D9A: 0880                add.b   r0l, r0h
008D9C: 1CC9                cmp.b   r4l, r1l
008D9E: 8F29                add.b   #h'29, r7l

Вот как раз ориентируясь на эти адреса, и узнаёшь, какие участки выцарапывать из ромов для C352, и, если знаешь как, то конвертировать в понятные современным операционкам форматы.