hacsak nem az egyszerű ellenőrzést, ha jól tudom az első két byte itt is a fájl hossza-2
Ez csak az -m3 formátumnál van így. -m0-nál még viszonylag egyszerűen olvasható lenne az első blokk mérete (aminek mindig 8192-nek kellene lennie), de az itt használt -m2 formátumnál csak bonyolultabb módon lehetne felismerni ha nem megfelelő a file. A 8 bites ellenőrző összeg könnyen tesztelhető, így általában felismerhető a nem -m2 file, de ez még nem teljesen megbízható, és lassítja is a betöltést (bár ezen a kódon még lehetne optimalizálni):
l "sid_data.m64" 0 1000
Loaded file to 1000-363B
A 0F00 F3 DI
A 0F01 31 00 0F LD SP, 0F00
A 0F04 21 00 10 LD HL, 1000
A 0F07 01 3C 26 LD BC, 263C
A 0F0A 16 54 LD D, 54
A 0F0C 3E 80 LD A, 80
A 0F0E 82 ADD A, D
A 0F0F 0F RRCA
A 0F10 AE XOR (HL)
A 0F11 ED A1 CPI
A 0F13 EA 0E 0F JP PE, 0F0E
A 0F16 18 FE JR 0F16
A 0F18
g f00
Hiba esetén az A értéke nem FF lesz.
Néhány egyéb tesztelhető tulajdonság:
- a file mérete legalább 18 byte
- a második byte kisebb mint 32
- a második és a harmadik byte nem lehet egyszerre 0
amúgy Disk configon kiterjesztés ellenőrzés van, tudom ez meg se közelíti a bemeneti fájl ellenőrzést.
Az is jó lehet, talán nem túl gyakran van teljesen más formátumú file-nak pont ilyen kiterjesztése.
A legvalószínűbb hiba talán az, ha valaki véletlenül eltérő formátumú SID zenét (pl. eredeti C64-es PSID/RSID, régi SIDBASIC formátum, stb.) próbál meg betölteni.
A fájlnak esetleg kitalálni egy rendes EXOS fejléct?
Az lenne az ideális megoldás, csak akkor kevésbé egyszerű a konvertálás. Vagy esetleg a libepcompress-t használni a sid_conv.cpp-ben, és akkor a kimenete már megfelelő paraméterekkel tömörített és fejléces file lehet.