mmc-replay schreiben lesen

Es gibt 1 Antwort in diesem Thema, welches 1.171 mal aufgerufen wurde. Der letzte Beitrag (26. August 2009 um 22:49) ist von Kratznagel.

  • Hallo erstmal.
    Ich habe hier im Forum schon eine ganze Weile mitgelesen
    und mich nun endlich auch einmal angemeldet.
    Ich versuche schon seit einer Weile mit eigener Software auf die Speicherkarte zuzugreifen,
    habe bisher aber leider nur sehr mässigen Erfolg dabei.
    ich habe es bisher erstmal nur mit dem lesen versucht.
    Ich bin leider etwas zu blöde die speicherkartenspzifikationen zu verstehen,
    und die Beispielsourcen von O.Achten auf icomp.de haben mich leider noch nicht weitergebracht.
    mir sind einfach ein paar sachen noch nicht ganz klar.
    hier ein codebeispiel, welches einfach nur stumpf block für block
    von der karte in den bildschirmspeicher schaufeln soll:
    (die routinen aus der * MMC64 Programming Guide * habe ich unverändert übernommen)

    !to"mmctest.prg"
    *=$1000
    memptr = $10

    mloop ;muss man vor jedem blockread initialisieren?

    jsr .initmmc64
    jsr .resetmmc64
    jsr .initwaitmmc64

    ;mloop ;oder nur einmal?

    lda #$00 ;immer alles schön in den bildschirmspeicher schreiben
    sta memptr

    lda #$04
    sta memptr+1

    jsr .blockreadcmd
    jsr .blockread

    ;inc .blockrcmd+3 ; hier weiss ich nicht so recht weiter, muss ich die blockadresse immer um eins
    ;bne ninc ; raufzählen oder immer gleich um 512?
    inc .blockrcmd+4 ; dadurch das das kommando rückwärts im speicher steht müsste das niedrigste byte vorne
    inc .blockrcmd+4 ; stehen wie sich das ja auch gehört ;), was ist aber mit den bits, stehen die richtig rum oder
    ; muss ich die vertauschen?
    bne ninc
    inc .blockrcmd+5
    bne ninc
    inc .blockrcmd+6

    ninc

    lda .blockrcmd+6
    sta $0400+(20*40)

    lda .blockrcmd+5
    sta $0400+1+(20*40)

    lda .blockrcmd+4
    sta $0400+2+(20*40)

    lda .blockrcmd+3
    sta $0400+3+(20*40)

    jmp mloop

    rts

    wenn ich das programm laufen lasse kommt aber immer nur der klammeraffe auf den bildschirm, auch wenn
    ich die adresse immer um 1 weiterzähle, und obwohl die karte pickepackevoll ist

    muss ich das mmc irgendwo aktiv schalten damit die leseroutinen funktionieren?
    was genau ist mit 32bit memory address to read für cmd17 gemeint? ist das die
    Nummer des 512-byte blocks oder tatsächlich der anfang in einem 32bit-adressraum?
    sind die einzelnen bits in den bytes richtigherum oder verkehrt herum?

    wäre super wenn mir jemand auf die sprünge helfen könnte, ich bin am verzweifeln...

    beste grüße, frickr

  • Hi und willkommen,

    ich hatte ganz am Anfang ähnliche Probleme. ;) Lies Dir mal diesen Thread durch; mit diesen Infos war ich letztendlich in der Lage, Daten von der SD-Karte zu lesen:
    Bitte melde dich an, um diesen Link zu sehen.

    CU
    Kratznagel