Fehler gefunden! Scheint ein echter Bascom Fehler zu sein (komisch dass dieses 'Verhalten' beim Standard-3x3x3Cube noch keinem aufgefallen ist - da ist es das gleiche Problem). Bei mir war es kein Problem, da ich genau die im folgenden gezeigte Lösung schon verwendet hatte (wenn auch aus anderen Gründen*).
@All
Bitte auch mal anschauen/testen - vielleicht ist es ja doch ein Denkfehler von mir und Punk3110
Das Problem sind anscheinend 'gemischte' Datentypen in einer Tabelle:
Code: Alles auswählen
Data 126% ' <- Word
Data &B00000000, &B00000000, &B00000000, &B00111110 ' <- Bytes
Data &B11111111, &B11111111, &B11111111, &B11111111 ' zu Testzwecken alle folgenden 630 Zeilen mit &B11111111
...
In diesem Fall erzeugt BASCOM beim Eintrag 1025 ein zusätzliches 0-Byte
Code: Alles auswählen
Dim Offset as Word
Dim Temp as Byte
Offset = Lookup(0 , Muster) ' =126
Temp = Lookup(1023 , Muster) ' =255
Temp = Lookup(1024 , Muster) ' =255
Temp = Lookup(1025 , Muster) ' =0 (!!!)
Temp = Lookup(1026 , Muster) ' =255
Dieses 0-Byte ist nicht nur in der Simulation, sondern auch im Code (Ausschnitt aus der .HEX Datei):
:10063000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
:10064000FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFB9
:10065000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
Wenn man die gleichen Daten anders 'aufbaut':
Code: Alles auswählen
Bilder:
Data 126%
Muster:
Data &B00000000, &B00000000, &B00000000, &B00111110 ' <- Bytes
Data &B11111111, &B11111111, &B11111111, &B11111111 ' zu Testzwecken alle folgenden 630 Zeilen mit &B11111111
...
Dann ergibt:
Code: Alles auswählen
Dim Offset as Word
Dim Temp as Byte
Offset = Lookup(0 , Bilder) ' =126
Temp = Lookup(1023 , Muster)' =255
Temp = Lookup(1024 , Muster)' =255
Temp = Lookup(1025 , Muster)' =255
Temp = Lookup(1026 , Muster)' =255
Die .Hex-Datei ist auch 'sauber':
:10063000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA
:10064000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
:10065000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA
Also bei großen Datenfeldern keine Datentypen 'mischen'!
Der 'Cube-Code' wird dadurch sogar einfacher, weil das Offset = Offset + 2 entfällt.
* Ich habe die Bilder in Sequenzen unterteilt so dass ich für jede Sequenz ein Anzahl von Wiederholungen mit ggf. unterschiedlichen Geschwindigkeiten vorgeben kann. Die einzelnen Sequenzen werden über einen Zufallsgenerator ausgewählt. Dafür waren schon mehrere Datenfelder erforderlich: Ein Feld mit den Startadressen der Sequenzen (nur Words) und die eigentlichen Sequenzen (nur Bytes)