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

Last change on this file since 1801 was 1750, checked in by pfusik, 23 months ago

Fix CMC tunes reading uninitialized data.

Bug in the original CMC player.

File size: 13.2 KB
RevLine 
[1746]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);
[1747]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                                                }
[1746]22                                        }
[1747]23                                        if ($_ ne $o) {
24                                                open F, ">../$f" and binmode F and print F $_ or die;
25                                        }
26                                        last;
[1746]27                                }
28                                printf "MUSIC %04X START %04X END %04X %s\n", $music, $start, $end, $f;
[1747]29                                $i += 5 + $end - $start;
30                                print "MUSIC block not found in $f\n" if $i >= length;
[1746]31                        }
32                }
[1750]33                else {
34                        print "Not TYPE C: $f\n";
35                }
[1746]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.