Willkommen im cgboard - classic games Forum! Deine gemütliche Retro Gaming Community. Besuche uns auch im Discord Chat.

Mad News DosBox Problem: Audio-CD mit MCI Zugriff
#19
0
(05.09.2021, 19:04)lopez72 schrieb: ich gebe zu ich versteh dich nicht, ich bin kein informatik nerd, oder ein programmierer, ich habe keine ahnung was du mit CMD meinst
und außerdem versteh ich nicht was du meinst mit "über der CMD mit Dosbox -conf "Mad-News.conf"

somit, es tut mir leid, aber könntest du es entweder etwas detalierter beschrieben ,screenshots machen oder ein video, oder dein dosbox ordner etc, weil so komme ich leider nicht weiter, oder ich sehe den wald vor lauter bäumen nicht, da ich seit 5 stunden schon wieder heute an dem problem sitz

danke für deine zeit!

So. Ausgeschlafen,

Ich habe dir wat hochgeladen. Datei von filehorst.de laden
knapp 260mb gross.

Interessant. Normal bin ich immer derjenige der mit Abkürzungen überfordert ist vorallem wen diese aus der Tik Tok/Whatsapp etc.. scene kommen. Bin auch kein Informatiker.

Also CMD = Commandline aka "Eingebaufforderung"
M
al sehen wie ich dir dat erkläre. .... Dosbox-X, Daum oder meine Version nutzen ein zusätzlichen IDE Atapi Code für das funktionieren der CD-DROM/Festplatten. Quasi eine erweiterung zu den der Standard, ECE. Der IDE Code wird auch benötigt um in Dosbox unter Windows 95/98 das CDRom einzubinden. Um Audio Daten abzuspielen greift der Code auf die Funktion


Code:
bool CDROM_Interface_Image::GetAudioSub(unsigned char& attr, unsigned char& track, unsigned char& index, TMSF& relPos, TMSF& absPos)
{
    int cur_track = GetTrack(player.currFrame);
    if (cur_track < 1) return false;
    track = (unsigned char)cur_track;
    attr = tracks[track - 1].attr;
    index = 1;
    FRAMES_TO_MSF(player.currFrame + 150, &absPos.min, &absPos.sec, &absPos.fr);
    FRAMES_TO_MSF(player.currFrame - tracks[track - 1].start + 150, &relPos.min, &relPos.sec, &relPos.fr);

    #ifdef DEBUG
    LOG_MSG("%s CDROM: GetAudioSub attr=%u, track=%u, index=%u", get_time(), attr, track, index);

    LOG_MSG("%s CDROM: GetAudioSub absoute  offset (%d), MSF=%d:%d:%d",
      get_time(),
      player.currFrame + 150,
      absPos.min,
      absPos.sec,
      absPos.fr);
    LOG_MSG("%s CDROM: GetAudioSub relative offset (%d), MSF=%d:%d:%d",
      get_time(),
      player.currFrame - tracks[track - 1].start + 150,
      relPos.min,
      relPos.sec,
      relPos.fr);
    #endif

    return true;
}

So, da siehst du z.b das Schlüsselwort "FRAMES_TO_MSF". "player.currFrame" ist der jetzige -und Start zeitpunkt für das übertragen der Audui Daten. Die Nummer 150 gibt den Anfang an. Wenn Dosbox nun startet und das Spiel abspielt wird die CUE oder das CHD Image eingebunden.
Code:
TRACK:1 TYPE:MODE1_RAW SUBTYPE:NONE FRAMES:4231 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0
TRACK:2 TYPE:AUDIO SUBTYPE:NONE FRAMES:17524 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0
TRACK:3 TYPE:AUDIO SUBTYPE:NONE FRAMES:34339 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0
TRACK:4 TYPE:AUDIO SUBTYPE:NONE FRAMES:14536 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0
TRACK:5 TYPE:AUDIO SUBTYPE:NONE FRAMES:22545 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0
TRACK:6 TYPE:AUDIO SUBTYPE:NONE FRAMES:20223 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0
TRACK:7 TYPE:AUDIO SUBTYPE:NONE FRAMES:27110 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0
TRACK:8 TYPE:AUDIO SUBTYPE:NONE FRAMES:18358 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0


Man Achte auf den 1sten Track. Der hat eine Länge von "4231". Dosbox versucht nun aber ab "150" abzuspielen. Resultat: Kein Sound oder man hört das Rauschen des Daten Track. Warum das nun bei Madnews so ist das keine Musik abgespielt wird und bei anderen Spielen schon liegt wohl an der Weitergabe von Atapi Codes an das DOS System bzw (MSCDEX).

Nach ein bissel Recherche wird der opcode 0xbe für ReadCD übergegeben.

Standard ist ReadCD(10) oder ReadCD(12). 0xbe fehlt auch im IDE Code und fängt diesen unbekannte opCode als Fehler ab.
Wie OpCode 0xBE implentiert wird wüsse ich auch nicht. Müsse man sich tiefer in dei Materie einlesen.

Die Alernative sichere Lösung wäre dann eigentlich das der Startpunkt genau nach 4231 ist. Denn dann fängt der Audio Track an und man hört Musik. Wiso die Entwickler 150 nutzen habe ich mich schon damals gefragt....

Ich hatte das so abgefangen. Bei CUE/BIN: Wenn es eine AUDIO ist, Track 2, Attribute ist 0, Startlänge länger als 0 und als bool wurde noch nicht benutzt. nehme diese Lange.
Bei CHD ähnlich und übergebe das Resultat in die CDROM_Interface_image::GetAudioSub Routine

Code:
bool CDROM_Interface_Image::GetAudioSub(unsigned char& attr, unsigned char& track, unsigned char& index, TMSF& relPos, TMSF& absPos)
{
    int cur_offset;
    int cur_track = GetTrack(player.currFrame);
    if (cur_track < 1) return false;
    
    track         = (unsigned char)cur_track;
    attr         = tracks[track - 1].attr;
    index         = 1;
    cur_offset    = 150;    // Belasse den standardwert
    
        // GEÄNDERT
    if ( ImageTrack.offset > 0 && ImageTrack.attr == 0 && ImageTrack.used == true )
    {
        cur_offset = ImageTrack.offset + cur_offset;
        ImageTrack.used  = false;
        LOG_MSG("CDROM: GetAudioSub Start Offset base (%d)",cur_offset);
    }
                    
    FRAMES_TO_MSF(player.currFrame + cur_offset, &absPos.min, &absPos.sec, &absPos.fr);
    FRAMES_TO_MSF(player.currFrame - tracks[track - 1].start + cur_offset, &relPos.min, &relPos.sec, &relPos.fr);
        
    #ifdef DEBUG
    LOG_MSG("%s CDROM: GetAudioSub attr=%u, track=%u, index=%u", get_time(), attr, track, index);

    LOG_MSG("%s CDROM: GetAudioSub absoute  offset (%d), MSF=%d:%d:%d",
      get_time(),
      player.currFrame + cur_offset,
      absPos.min,
      absPos.sec,
      absPos.fr);
    LOG_MSG("%s CDROM: GetAudioSub relative offset (%d), MSF=%d:%d:%d",
      get_time(),
      player.currFrame - tracks[track - 1].start + cur_offset,
      relPos.min,
      relPos.sec,
      relPos.fr);
    #endif
    
    return true;
}

Funktioniert. Ob das alles so richtig ist .... no idea. Ich mach das Blind ohne Live Debug wie man es von Visual Studio kennt. läuft alles bei mir im kop ab. Echt krank ich weiß....



Unter Windows 7 und Windows 10 getestet

Wie dem auch sei  ... alles nichts wichtiges Smile

Was das angeht wie lange man an ein prob hängt kenn isch. Das längste war bei mir knapp 8 tage. 

grüsse
Zitieren


Nachrichten in diesem Thema
RE: Mad News DosBox Problem: Audio-CD mit MCI Zugriff - von Traxx Amiga EP - 06.09.2021, 02:34

Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  [Frage] Dime City mit GUS-Emulation? Prometheus 43 8.834 30.04.2024, 22:57
Letzter Beitrag: DimeCitsch
  [Problem] Revolt of Dons Knights / Intro geht nicht in DosBox Commodus 19 1.174 08.07.2023, 13:19
Letzter Beitrag: Andi
  [Frage] Sierra Games mit Sprachausgabe und deutschen Untertiteln Commodus 44 2.638 21.06.2023, 10:44
Letzter Beitrag: GBuster
  [Problem] Reprobates läuft nicht mit WIN 11 Commodus 5 603 16.06.2023, 13:04
Letzter Beitrag: Atreyu
  [Frage] Warlords 2 Deluxe - DosBox - LAN - VPN Bender3k 2 656 04.04.2023, 10:01
Letzter Beitrag: Bender3k

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste