source: trunk/tools/fix-cmc-patterns.pl @ 1807

Comments

    Last change on this file since 1807 was 1750, checked in by pfusik, 2 years ago

    Fix CMC tunes reading uninitialized data.

    Bug in the original CMC player.

    File size: 13.2 KB
    Line 
    1use strict;
    2for my $f (<DATA>) {
    3        chomp $f;
    4        if (open F, "../$f" and binmode F) {
    5                local $/;
    6                $_ = <F>;
    7                if (/^TYPE C\r\nMUSIC (\w{4})\r\n/m) {
    8                        my $music = hex($1);
    9                        my $i = 2 + index $_, "\xff\xff";
    10                        while ($i < length) {
    11                                my ($start, $end) = unpack("x${i}vv", $_);
    12                                # printf "MUSIC %04X START %04X END %04X %s\n", $music, $start, $end, $f;
    13                                if ($start == $music) {
    14                                        my $o = $_;
    15                                        for my $p (0 .. 63) {
    16                                                my ($l, $h) = unpack("x${i}x24x${p}Cx63C", $_);
    17                                                if ($h == 0xff && $l != 0xff) {
    18                                                        printf "pattern %02x at %02x%02x %s\n", $p, $h, $l, $f;
    19                                                        die if substr($_, $i + 24 + $p, 1) ne chr($l);
    20                                                        substr($_, $i + 24 + $p, 1, "\xff");
    21                                                }
    22                                        }
    23                                        if ($_ ne $o) {
    24                                                open F, ">../$f" and binmode F and print F $_ or die;
    25                                        }
    26                                        last;
    27                                }
    28                                printf "MUSIC %04X START %04X END %04X %s\n", $music, $start, $end, $f;
    29                                $i += 5 + $end - $start;
    30                                print "MUSIC block not found in $f\n" if $i >= length;
    31                        }
    32                }
    33                else {
    34                        print "Not TYPE C: $f\n";
    35                }
    36        }
    37        else {
    38                print "$f: cannot open\n";
    39        }
    40}
    41__DATA__
    42asma/Composers/Badkowski_Marek/Nemesis.sap
    43asma/Composers/Badkowski_Marek/Vacares.sap
    44asma/Composers/Banas_Pawel/Allesgut.sap
    45asma/Composers/Banaszkiewicz_Marcin/Jean_Michel_Jarre.sap
    46asma/Composers/Banaszkiewicz_Marcin/Terror2000_Odlot.sap
    47asma/Composers/Banaszkiewicz_Michal/Hugo_2.sap
    48asma/Composers/Bendyk_Piotr/Prozac_Dream_second_part.sap
    49asma/Composers/Bendyk_Piotr/Silly_Venture_2k18_Invitat.sap
    50asma/Composers/Bernasek_Jiri/Multi_Dash.sap
    51asma/Composers/Bernasek_Jiri/Strange_Mountains_II.sap
    52asma/Composers/Bienias_Adam/Digital_Trash.sap
    53asma/Composers/Bienias_Adam/Rzog_Joins_XE_Team_1.sap
    54asma/Composers/Bienias_Adam/Rzog_Joins_XE_Team_2.sap
    55asma/Composers/Bryla_Krzysztof/Demo_Music_2.sap
    56asma/Composers/Bryla_Krzysztof/Endless_Dream_2.sap
    57asma/Composers/Bryla_Krzysztof/Odyseja.sap
    58asma/Composers/Bryla_Krzysztof/Persil.sap
    59asma/Composers/Bryla_Krzysztof/Ray_of_Hope_End.sap
    60asma/Composers/Bryla_Krzysztof/Techno_Test.sap
    61asma/Composers/Bryla_Krzysztof/Techwop.sap
    62asma/Composers/Bryla_Krzysztof/Woppie_V2.sap
    63asma/Composers/Ce_Pumpkin/Life_to_Back.sap
    64asma/Composers/Ce_Pumpkin/Too_Hard_4_1.sap
    65asma/Composers/Cierkonski_Michal/Atari_Makes_Me_Sick_1.sap
    66asma/Composers/Cierkonski_Michal/Coitus_Interruptus.sap
    67asma/Composers/Cierkonski_Michal/The_Car_SA.sap
    68asma/Composers/Cierkonski_Michal/Yo.sap
    69asma/Composers/Claas_Clever/Speed_Matter.sap
    70asma/Composers/Cybruch_Ryszard/Endless_Dream_4.sap
    71asma/Composers/Czartynski_Marcin/Asskicker_Main_Part.sap
    72asma/Composers/Czartynski_Marcin/Cedyn1.sap
    73asma/Composers/Czartynski_Marcin/Exodus.sap
    74asma/Composers/Czartynski_Marcin/Paczka_Tynku_2.sap
    75asma/Composers/Czartynski_Marcin/Top_Secret.sap
    76asma/Composers/Derkach_Andrey/Zybex.sap
    77asma/Composers/Drozdowski_Marek/Dual_Yellow_Energy.sap
    78asma/Composers/Drozdowski_Marek/Land.sap
    79asma/Composers/Drozdowski_Marek/Lemmings_Prevision_Intro.sap
    80asma/Composers/Drozdowski_Marek/Shake.sap
    81asma/Composers/Drozdowski_Marek/Shakemix.sap
    82asma/Composers/Drozdowski_Marek/Sweet_Illusions_APC_Part.sap
    83asma/Composers/Eisenhammer_Zdenek/Deus_Ex_Machina.sap
    84asma/Composers/Ezcan_Kemal/Chromatics.sap
    85asma/Composers/Ezcan_Kemal/Fred_vom_Jupiter.sap
    86asma/Composers/Ezcan_Kemal/Tinory_Quest_Invention_13.sap
    87asma/Composers/Ezcan_Kemal/Tinory_Quest_Morning.sap
    88asma/Composers/Ezcan_Kemal/Tinory_Quest_Praeludium_15.sap
    89asma/Composers/Ezcan_Kemal/Tinory_Quest_Praeludium_5.sap
    90asma/Composers/Ezcan_Kemal/Tinory_Quest_Praeludium_6.sap
    91asma/Composers/Farkas_Felker/Cool_Emotion_Intro.sap
    92asma/Composers/Farkas_Felker/Joyride_Intro.sap
    93asma/Composers/Farkas_Felker/Joyride_Landscape.sap
    94asma/Composers/Farkas_Felker/Joyride_Scrolls.sap
    95asma/Composers/Feske_Nils/Short.sap
    96asma/Composers/Galinski_Adrian/Demologicus_1.sap
    97asma/Composers/Galinski_Adrian/Demologicus_6.sap
    98asma/Composers/Galinski_Adrian/Intel_Outside_Fractal_Part.sap
    99asma/Composers/Galinski_Adrian/Intel_Outside_Intro.sap
    100asma/Composers/Galinski_Adrian/Rockman.sap
    101asma/Composers/Gilbertson_Gary/Face_of_the_Galaxy.sap
    102asma/Composers/Gmurek_Konrad/Test_Drive.sap
    103asma/Composers/Godlewski_Artur/Space.sap
    104asma/Composers/Golewski_Filip/Big_Zine_1_Greetings.sap
    105asma/Composers/Golewski_Filip/Sweet.sap
    106asma/Composers/Golewski_Filip/Tekkno.sap
    107asma/Composers/Golewski_Filip/Unknown_1.sap
    108asma/Composers/Golewski_Filip/Unknown_2.sap
    109asma/Composers/Gorecki_Marek/Microdemo_5.sap
    110asma/Composers/Gorecki_Marek/Nexuss.sap
    111asma/Composers/Grad_Jacek/Dwie_Wieze.sap
    112asma/Composers/Grad_Jacek/Extra.sap
    113asma/Composers/Grad_Jacek/Fatum_Intro.sap
    114asma/Composers/Kwiatek_Grzegorz/Energy_1_Loader.sap
    115asma/Composers/Kwiatek_Grzegorz/Sadness.sap
    116asma/Composers/Sychowicz_Lukasz/Wariacje_na_drutach.sap
    117asma/Composers/Sychowicz_Lukasz/X_Ray_2.sap
    118asma/Composers/Wasiel_Bartek/Triple_Threat.sap
    119asma/Composers/Holda_Leszek/Klatwa.sap
    120asma/Composers/Hryn_Piotr/Demos_End.sap
    121asma/Composers/Hryn_Piotr/Demos_End_II.sap
    122asma/Composers/Hryn_Piotr/Endless_Dream_1.sap
    123asma/Composers/Hryn_Piotr/Endless_Dream_3.sap
    124asma/Composers/Hryn_Piotr/Endless_Dream_5.sap
    125asma/Composers/Hryn_Piotr/Music_Compo_93.sap
    126asma/Composers/Hryn_Piotr/Party_5.sap
    127asma/Composers/Hughes_Trevin/1bit_Body_Puncher.sap
    128asma/Composers/Hughes_Trevin/1bit_Boss.sap
    129asma/Composers/Hughes_Trevin/1bit_Phazer_Phunk.sap
    130asma/Composers/Hughes_Trevin/1bit_Pirate.sap
    131asma/Composers/Hughes_Trevin/1bit_Rock.sap
    132asma/Composers/Hughes_Trevin/1bit_Smile.sap
    133asma/Composers/Hughes_Trevin/1bit_of_Advice.sap
    134asma/Composers/Hughes_Trevin/1bit_of_Training_Before_Yo.sap
    135asma/Composers/Husak_Jakub/Bank_Bang.sap
    136asma/Composers/Husak_Jakub/Bank_Bang_Ingame.sap
    137asma/Composers/Husak_Jakub/Flying_Microbits.sap
    138asma/Composers/Husak_Jakub/Garfield_Part_2.sap
    139asma/Composers/Kalinowski_Bartosz/Fanatic.sap
    140asma/Composers/Kalinowski_Bartosz/Infinity.sap
    141asma/Composers/Kalinowski_Bartosz/Kapitan_Planeta.sap
    142asma/Composers/Kalinowski_Bartosz/Robin_Wojownik_Czasu_Ingam.sap
    143asma/Composers/Kalinowski_Bartosz/Self_Test_2.sap
    144asma/Composers/Kalinowski_Bartosz/Spectrum.sap
    145asma/Composers/Kalinowski_Bartosz/Sweet_Illusions_Credits.sap
    146asma/Composers/Kalinowski_Bartosz/Sweet_Illusions_Infos.sap
    147asma/Composers/Kalinowski_Bartosz/Sweet_Illusions_Techno.sap
    148asma/Composers/Karwoth_Torsten/Megablast.sap
    149asma/Composers/Krawczyk_Adam/Magic_Dimension_2.sap
    150asma/Composers/Kucisz_Tomasz/Disk_Copy.sap
    151asma/Composers/Kucisz_Tomasz/Graphics_Projector.sap
    152asma/Composers/Kucisz_Tomasz/Second_Life_Syndrome.sap
    153asma/Composers/Libic_Ladislav/Lac_Intro_II_part_4.sap
    154asma/Composers/Liebich_Tomasz/Bilinski.sap
    155asma/Composers/Liebich_Tomasz/Dark_Abyss.sap
    156asma/Composers/Liebich_Tomasz/Fluid_Kha_Title.sap
    157asma/Composers/Liebich_Tomasz/Ship.sap
    158asma/Composers/Liebich_Tomasz/Technus_Intro.sap
    159asma/Composers/Lis_Marcin/Perly_Orckyego.sap
    160asma/Composers/Loos_Uwe/ABBUC_28.sap
    161asma/Composers/Loos_Uwe/Das_Omen.sap
    162asma/Composers/Loos_Uwe/Das_Omen_Intro.sap
    163asma/Composers/Loos_Uwe/Studio_Dream.sap
    164asma/Composers/Luszcz_Tomasz/Wladca.sap
    165asma/Composers/Machnio_Jakub/No_Sacrifices_No_Heroics.sap
    166asma/Composers/Maderanek_Peter/Avex_1.sap
    167asma/Composers/Majchrzak_Marcin/D_City.sap
    168asma/Composers/Majewski_Tomasz/Stellar_Ingame.sap
    169asma/Composers/Makary_Brauner/Podkarpacka_Nuta.sap
    170asma/Composers/Makowski_Robert/Alfaboot_1.sap
    171asma/Composers/Makowski_Robert/Alfaboot_2.sap
    172asma/Composers/Makowski_Robert/Ilussion.sap
    173asma/Composers/Makowski_Robert/Lady_Pank.sap
    174asma/Composers/Makowski_Robert/Phone.sap
    175asma/Composers/Makowski_Robert/Techno.sap
    176asma/Composers/Martin_Aleksander/Troubles.sap
    177asma/Composers/Matoga_Adrian/Sleep.sap
    178asma/Composers/Mauchly_Bill/Aerobics_1_2.sap
    179asma/Composers/Mikolajczak_Pawel/Jaffar.sap
    180asma/Composers/Mikolajczak_Pawel/Magia.sap
    181asma/Composers/Mister_Beep/Unbearable_Bee.sap
    182asma/Composers/Nabialek_Dawid/Benny_Hill_Show_Theme.sap
    183asma/Composers/Numan_Daniel/Pentagram_3_Music_3.sap
    184asma/Composers/Oscadal_Filip/Brutal_Recall_Demo_Bonus.sap
    185asma/Composers/Oscadal_Filip/Digi_Synth.sap
    186asma/Composers/Oscadal_Filip/Rabbacan_The_Finale.sap
    187asma/Composers/Oscadal_Filip/Rabbacan_Waterlands.sap
    188asma/Composers/Oscadal_Filip/Rabbacan_Woodystone.sap
    189asma/Composers/Oscadal_Filip/Vaxeen_Cygnus_Lyrae.sap
    190asma/Composers/Oscadal_Filip/Vaxeen_Vaxeen_4U.sap
    191asma/Composers/Padula_Jaroslaw/Fuckcore.sap
    192asma/Composers/Padula_Jaroslaw/Hardcore.sap
    193asma/Composers/Padula_Jaroslaw/Keczapek.sap
    194asma/Composers/Padula_Jaroslaw/Kwas.sap
    195asma/Composers/Padula_Jaroslaw/Martwa_Cisha.sap
    196asma/Composers/Padula_Jaroslaw/No.sap
    197asma/Composers/Padula_Jaroslaw/PSH4_2.sap
    198asma/Composers/Padula_Jaroslaw/Prodigy.sap
    199asma/Composers/Padula_Jaroslaw/Pszykowitz.sap
    200asma/Composers/Padula_Jaroslaw/Strefa_Smierci.sap
    201asma/Composers/Padula_Jaroslaw/Techno_Collection_3.sap
    202asma/Composers/Padula_Jaroslaw/Wave_X.sap
    203asma/Composers/Pasek_Marek/90_60_90.sap
    204asma/Composers/Pelc_Janusz/Captain_Gather.sap
    205asma/Composers/Pelc_Janusz/Captain_Gather_Ingame.sap
    206asma/Composers/Pelc_Janusz/Fred.sap
    207asma/Composers/Pelc_Janusz/Lasermania.sap
    208asma/Composers/Pelc_Janusz/Misja.sap
    209asma/Composers/Pelc_Janusz/Trix.sap
    210asma/Composers/Pelc_Janusz/Try.sap
    211asma/Composers/Pesout_Marek/Bad_Drome.sap
    212asma/Composers/Pesout_Marek/Cannon.sap
    213asma/Composers/Pesout_Marek/Minos.sap
    214asma/Composers/Pesout_Marek/SOS_Solaris.sap
    215asma/Composers/Pesout_Marek/Trident.sap
    216asma/Composers/Podedworny_Wojtek/Psycho.sap
    217asma/Composers/Podedworny_Wojtek/Tech.sap
    218asma/Composers/Podedworny_Wojtek/Tech_Ingame.sap
    219asma/Composers/Pucinski_Rafal/Big_Zine_1_Invitro.sap
    220asma/Composers/Radecki_Michal/High_Voltage_Intro.sap
    221asma/Composers/Radecki_Michal/Neuroid.sap
    222asma/Composers/Radzikowski_Ireneusz/Cyper_Space.sap
    223asma/Composers/Radzikowski_Ireneusz/Puzintro_Part_2.sap
    224asma/Composers/Radzikowski_Ireneusz/Savage.sap
    225asma/Composers/Roemer_Markus/Biene_Maja.sap
    226asma/Composers/Roemer_Markus/Das_Grauen.sap
    227asma/Composers/Roemer_Markus/Way_You_Are.sap
    228asma/Composers/Rosolek_Maciej/Magia_Fortuny_Intro.sap
    229asma/Composers/Sabath_Peter/Graphic_Demo_8.sap
    230asma/Composers/Sikorski_Pawel/Warkot.sap
    231asma/Composers/Skrzypek_Tomasz/Spirit_Vision_1.sap
    232asma/Composers/Skwiot_Stanislaw/Big_in_Japan.sap
    233asma/Composers/Skwiot_Stanislaw/Music_from_Poland_II_p_3_4.sap
    234asma/Composers/Skwiot_Stanislaw/Roxette.sap
    235asma/Composers/Skwiot_Stanislaw/Stanley_2.sap
    236asma/Composers/Sniegon_Daniel/Zumbaja_Game_Over.sap
    237asma/Composers/Spilka_David/SCMC_Demo.sap
    238asma/Composers/Sterba_Radek/Sniper.sap
    239asma/Composers/Strzelec_Pawel/Miny.sap
    240asma/Composers/Strzelec_Pawel/Osadnicy.sap
    241asma/Composers/Stuermer_Armin/Herbert.sap
    242asma/Composers/Swierszcz_Piotr/Rebellion_Rise.sap
    243asma/Composers/Swierszcz_Piotr/Resal.sap
    244asma/Composers/Szczesniak_Konrad/Electra.sap
    245asma/Composers/Szczesniak_Konrad/Electra_Ingame.sap
    246asma/Composers/Szerniewicz_Robert/Bijatyka_na_Straganie.sap
    247asma/Composers/Szerniewicz_Robert/Siekiery.sap
    248asma/Composers/Szmatola_Krzysztof/Change_2.sap
    249asma/Composers/Szmatola_Krzysztof/Change_3.sap
    250asma/Composers/Szpilowski_Michal/Das_Boot_X.sap
    251asma/Composers/Szpilowski_Michal/Miker_4.sap
    252asma/Composers/Szpilowski_Michal/Overmind_2.sap
    253asma/Composers/Takacs_Gabriel/Survive.sap
    254asma/Composers/Trokowicz_Bartlomiej/Miecze_Valdgira_II.sap
    255asma/Composers/Vogt_Dariusz/Music_1.sap
    256asma/Composers/Vogt_Dariusz/Music_2.sap
    257asma/Composers/Voss_Roland/Ride_the_Fractals.sap
    258asma/Composers/Vybostok_Marian/Allstars.sap
    259asma/Composers/Wasilewski_Dariusz/Buu_Sampled.sap
    260asma/Composers/Wasilewski_Dariusz/Daras_2.sap
    261asma/Composers/Wasilewski_Dariusz/Guitar_Solo.sap
    262asma/Composers/Wasilewski_Dariusz/Koto.sap
    263asma/Composers/Wasilewski_Dariusz/Laguna.sap
    264asma/Composers/Wasilewski_Dariusz/Morph.sap
    265asma/Composers/Wasilewski_Dariusz/No_Limits.sap
    266asma/Composers/Wasilewski_Dariusz/Technoid.sap
    267asma/Composers/Witkiewicz_Dariusz/Annael.sap
    268asma/Composers/Wyszynski_Jaroslaw/Bonanza.sap
    269asma/Composers/Zaborowski_Robert/Bombay.sap
    270asma/Composers/Zuegner_Alfred/For_Emily_Whenever_I_May_F.sap
    271asma/Games/Adebar.sap
    272asma/Games/Axilox.sap
    273asma/Games/Biathlon.sap
    274asma/Games/Deflektor.sap
    275asma/Games/Deneb.sap
    276asma/Games/Ghostbusters.sap
    277asma/Games/Jet_Action.sap
    278asma/Games/King_of_Killers.sap
    279asma/Games/Mad_Stone.sap
    280asma/Games/Mental_Age_Demo.sap
    281asma/Games/Muminki.sap
    282asma/Games/Pooyan.sap
    283asma/Games/Saper.sap
    284asma/Games/Simple_Minds.sap
    285asma/Games/Spy_Games_Ingame.sap
    286asma/Games/Starbowl_Football.sap
    287asma/Games/Taxicab_Hill.sap
    288asma/Games/Technoid.sap
    289asma/Games/Wyspa.sap
    290asma/Games/X_8.sap
    291asma/Misc/Arena_Bzdur_Orneta95.sap
    292asma/Misc/Banklan_1.sap
    293asma/Misc/Banklan_2.sap
    294asma/Misc/Delicate.sap
    295asma/Misc/Do_You_See_the_Light.sap
    296asma/Misc/Electronic.sap
    297asma/Misc/Gazetka_1.sap
    298asma/Misc/Guns_n_Roses.sap
    299asma/Misc/Gunship.sap
    300asma/Misc/Halle_Project_XCIV_Top_Mag.sap
    301asma/Misc/Impossible_But_Real_End.sap
    302asma/Misc/KevSoft.sap
    303asma/Misc/Luzik.sap
    304asma/Misc/Miksik.sap
    305asma/Misc/Reharden.sap
    306asma/Misc/Sound_in_Stereo.sap
    307asma/Misc/Too_Hard_2_3.sap
    308asma/Unknown/Autum.sap
    309asma/Unknown/Bach.sap
    310asma/Unknown/Bonanza_Digi.sap
    311asma/Unknown/Cielito.sap
    312asma/Unknown/Condor.sap
    313asma/Unknown/Cool.sap
    314asma/Unknown/Demo1.sap
    315asma/Unknown/Demo2.sap
    316asma/Unknown/Dream.sap
    317asma/Unknown/For_Lobo_2.sap
    318asma/Unknown/Funicula.sap
    319asma/Unknown/Galliard.sap
    320asma/Unknown/Music1.sap
    321asma/Unknown/Music2.sap
    322asma/Unknown/Range.sap
    323asma/Unknown/Ranger1.sap
    324asma/Unknown/Ranger2.sap
    325asma/Unknown/Ranger3.sap
    326asma/Unknown/Ranger4.sap
    327asma/Unknown/Ranger5.sap
    328asma/Unknown/Ranger6.sap
    329asma/Unknown/Ranger7.sap
    330asma/Unknown/Ranger8.sap
    331asma/Unknown/Ranger9.sap
    332asma/Unknown/Sorella.sap
    333asma/Unknown/Telemann.sap
    334asma/Unknown/Think.sap
    Note: See TracBrowser for help on using the repository browser.