@@ -8,85 +8,25 @@ class Program
88 {
99 static void Main ( string [ ] args )
1010 {
11- List < BlastCorpsLevelMeta > levels ;
12- string tmpDir = Path . GetTempPath ( ) ;
13- string inputDir = @"C:\tools\blast_corps\levels" ;
14-
15- levels = new List < BlastCorpsLevelMeta > ( )
11+ if ( args . Length < 1 )
1612 {
17- new BlastCorpsLevelMeta { id = 0 , start = 0x4ACC10 , end = 0x4B8960 , filename = "chimp.raw" , name = "Simian Acres" } ,
18- new BlastCorpsLevelMeta { id = 1 , start = 0x4A5660 , end = 0x4ACC10 , filename = "lagp.raw" , name = "Angel City" } ,
19- new BlastCorpsLevelMeta { id = 2 , start = 0x4B8960 , end = 0x4BFD60 , filename = "valley.raw" , name = "Outland Farm" } ,
20- new BlastCorpsLevelMeta { id = 3 , start = 0x4BFD60 , end = 0x4C3AC0 , filename = "fact.raw" , name = "Blackridge Works" } ,
21- new BlastCorpsLevelMeta { id = 4 , start = 0x4C3AC0 , end = 0x4D5F90 , filename = "dip.raw" , name = "Glory Crossing" } ,
22- new BlastCorpsLevelMeta { id = 5 , start = 0x4D5F90 , end = 0x4E2F70 , filename = "beetle.raw" , name = "Shuttle Gully" } ,
23- new BlastCorpsLevelMeta { id = 6 , start = 0x4E2F70 , end = 0x4E4E80 , filename = "bonus1.raw" , name = "Salvage Wharf" } ,
24- new BlastCorpsLevelMeta { id = 7 , start = 0x4E4E80 , end = 0x4E7C00 , filename = "bonus2.raw" , name = "Skyfall" } ,
25- new BlastCorpsLevelMeta { id = 8 , start = 0x4E7C00 , end = 0x4E8F70 , filename = "bonus3.raw" , name = "Twilight Foundry" } ,
26- new BlastCorpsLevelMeta { id = 9 , start = 0x4E8F70 , end = 0x4F5C10 , filename = "level9.raw" , name = "Crystal Rift" } ,
27- new BlastCorpsLevelMeta { id = 10 , start = 0x4F5C10 , end = 0x500520 , filename = "level10.raw" , name = "Argent Towers" } ,
28- new BlastCorpsLevelMeta { id = 11 , start = 0x500520 , end = 0x507E80 , filename = "level11.raw" , name = "Skerries" } ,
29- new BlastCorpsLevelMeta { id = 12 , start = 0x507E80 , end = 0x511340 , filename = "level12.raw" , name = "Diamond Sands" } ,
30- new BlastCorpsLevelMeta { id = 13 , start = 0x511340 , end = 0x523080 , filename = "level13.raw" , name = "Ebony Coast" } ,
31- new BlastCorpsLevelMeta { id = 14 , start = 0x523080 , end = 0x52CD00 , filename = "level14.raw" , name = "Oyster Harbor" } ,
32- new BlastCorpsLevelMeta { id = 15 , start = 0x52CD00 , end = 0x532700 , filename = "level15.raw" , name = "Carrick Point" } ,
33- new BlastCorpsLevelMeta { id = 16 , start = 0x532700 , end = 0x53E9B0 , filename = "level16.raw" , name = "Havoc District" } ,
34- new BlastCorpsLevelMeta { id = 17 , start = 0x53E9B0 , end = 0x54A820 , filename = "level17.raw" , name = "Ironstone Mine" } ,
35- new BlastCorpsLevelMeta { id = 18 , start = 0x54A820 , end = 0x552DE0 , filename = "level18.raw" , name = "Beeton Tracks" } ,
36- new BlastCorpsLevelMeta { id = 19 , start = 0x552DE0 , end = 0x555000 , filename = "level19.raw" , name = "J-Bomb" } ,
37- new BlastCorpsLevelMeta { id = 20 , start = 0x555000 , end = 0x560E90 , filename = "level20.raw" , name = "Jade Plateau" } ,
38- new BlastCorpsLevelMeta { id = 21 , start = 0x560E90 , end = 0x5652D0 , filename = "level21.raw" , name = "Marine Quarter" } ,
39- new BlastCorpsLevelMeta { id = 22 , start = 0x5652D0 , end = 0x56F3F0 , filename = "level22.raw" , name = "Cooter Creek" } ,
40- new BlastCorpsLevelMeta { id = 23 , start = 0x56F3F0 , end = 0x5721E0 , filename = "level23.raw" , name = "Gibbon's Gate" } ,
41- new BlastCorpsLevelMeta { id = 24 , start = 0x5721E0 , end = 0x5736E0 , filename = "level24.raw" , name = "Baboon Catacomb" } ,
42- new BlastCorpsLevelMeta { id = 25 , start = 0x5736E0 , end = 0x57A2C0 , filename = "level25.raw" , name = "Sleek Streets" } ,
43- new BlastCorpsLevelMeta { id = 26 , start = 0x57A2C0 , end = 0x580B60 , filename = "level26.raw" , name = "Obsidian Mile" } ,
44- new BlastCorpsLevelMeta { id = 27 , start = 0x580B60 , end = 0x588CE0 , filename = "level27.raw" , name = "Corvine Bluff" } ,
45- new BlastCorpsLevelMeta { id = 28 , start = 0x588CE0 , end = 0x58BE80 , filename = "level28.raw" , name = "Sideswipe" } ,
46- new BlastCorpsLevelMeta { id = 29 , start = 0x58BE80 , end = 0x597B80 , filename = "level29.raw" , name = "Echo Marches" } ,
47- new BlastCorpsLevelMeta { id = 30 , start = 0x597B80 , end = 0x59B7D0 , filename = "level30.raw" , name = "Kipling Plant" } ,
48- new BlastCorpsLevelMeta { id = 31 , start = 0x59B7D0 , end = 0x5A5840 , filename = "level31.raw" , name = "Falchion Field" } ,
49- new BlastCorpsLevelMeta { id = 32 , start = 0x5A5840 , end = 0x5B0B10 , filename = "level32.raw" , name = "Morgan Hall" } ,
50- new BlastCorpsLevelMeta { id = 33 , start = 0x5B0B10 , end = 0x5B5A30 , filename = "level33.raw" , name = "Tempest City" } ,
51- new BlastCorpsLevelMeta { id = 34 , start = 0x5B5A30 , end = 0x5B8BB0 , filename = "level34.raw" , name = "Orion Plaza" } ,
52- new BlastCorpsLevelMeta { id = 35 , start = 0x5B8BB0 , end = 0x5C4C80 , filename = "level35.raw" , name = "Glander's Ranch" } ,
53- new BlastCorpsLevelMeta { id = 36 , start = 0x5C4C80 , end = 0x5CA9C0 , filename = "level36.raw" , name = "Dagger Pass" } ,
54- new BlastCorpsLevelMeta { id = 37 , start = 0x5CA9C0 , end = 0x5CCF50 , filename = "level37.raw" , name = "Geode Square" } ,
55- new BlastCorpsLevelMeta { id = 38 , start = 0x5CCF50 , end = 0x5D1060 , filename = "level38.raw" , name = "Shuttle Island" } ,
56- new BlastCorpsLevelMeta { id = 39 , start = 0x5D1060 , end = 0x5DC830 , filename = "level39.raw" , name = "Mica Park" } ,
57- new BlastCorpsLevelMeta { id = 40 , start = 0x5DC830 , end = 0x5E6EE0 , filename = "level40.raw" , name = "Moon" } ,
58- new BlastCorpsLevelMeta { id = 41 , start = 0x5E6EE0 , end = 0x5EC800 , filename = "level41.raw" , name = "Cobalt Quarry" } ,
59- new BlastCorpsLevelMeta { id = 42 , start = 0x5EC800 , end = 0x5F3A80 , filename = "level42.raw" , name = "Moraine Chase" } ,
60- new BlastCorpsLevelMeta { id = 43 , start = 0x5F3A80 , end = 0x6014B0 , filename = "level43.raw" , name = "Mercury" } ,
61- new BlastCorpsLevelMeta { id = 44 , start = 0x6014B0 , end = 0x60A710 , filename = "level44.raw" , name = "Venus" } ,
62- new BlastCorpsLevelMeta { id = 45 , start = 0x60A710 , end = 0x613AA0 , filename = "level45.raw" , name = "Mars" } ,
63- new BlastCorpsLevelMeta { id = 46 , start = 0x613AA0 , end = 0x61DD70 , filename = "level46.raw" , name = "Neptune" } ,
64- new BlastCorpsLevelMeta { id = 47 , start = 0x61DD70 , end = 0x621AF0 , filename = "level47.raw" , name = "CMO Intro" } ,
65- new BlastCorpsLevelMeta { id = 48 , start = 0x621AF0 , end = 0x6269E0 , filename = "level48.raw" , name = "Silver Junction" } ,
66- new BlastCorpsLevelMeta { id = 49 , start = 0x6269E0 , end = 0x630C30 , filename = "level49.raw" , name = "End Sequence" } ,
67- new BlastCorpsLevelMeta { id = 50 , start = 0x630C30 , end = 0x635700 , filename = "level50.raw" , name = "Shuttle Clear" } ,
68- new BlastCorpsLevelMeta { id = 51 , start = 0x635700 , end = 0x63CA10 , filename = "level51.raw" , name = "Dark Heartland" } ,
69- new BlastCorpsLevelMeta { id = 52 , start = 0x63CA10 , end = 0x641F30 , filename = "level52.raw" , name = "Magma Peak" } ,
70- new BlastCorpsLevelMeta { id = 53 , start = 0x641F30 , end = 0x644810 , filename = "level53.raw" , name = "Thunderfist" } ,
71- new BlastCorpsLevelMeta { id = 54 , start = 0x644810 , end = 0x646080 , filename = "level54.raw" , name = "Saline Watch" } ,
72- new BlastCorpsLevelMeta { id = 55 , start = 0x646080 , end = 0x647550 , filename = "level55.raw" , name = "Backlash" } ,
73- new BlastCorpsLevelMeta { id = 56 , start = 0x647550 , end = 0x654FC0 , filename = "level56.raw" , name = "Bison Ridge" } ,
74- new BlastCorpsLevelMeta { id = 57 , start = 0x654FC0 , end = 0x660950 , filename = "level57.raw" , name = "Ember Hamlet" } ,
75- new BlastCorpsLevelMeta { id = 58 , start = 0x660950 , end = 0x665F80 , filename = "level58.raw" , name = "Cromlech Court" } ,
76- new BlastCorpsLevelMeta { id = 59 , start = 0x665F80 , end = 0x66C900 , filename = "level59.raw" , name = "Lizard Island" } ,
77- } ;
13+ System . Console . WriteLine ( "Usage: BlastCorpsConsole <DIR with .raw levels>" ) ;
14+ return ;
15+ }
16+ string tmpDir = Path . GetTempPath ( ) ;
17+ string inputDir = args [ 0 ] ;
7818
7919 tmpDir = Path . Combine ( tmpDir , "BlastCorps" ) ;
8020 System . Console . WriteLine ( "tmpDir: " + tmpDir ) ;
8121
8222 Directory . CreateDirectory ( tmpDir ) ;
8323
84- foreach ( BlastCorpsLevelMeta levelMeta in levels )
24+ foreach ( BlastCorpsLevelMeta levelMeta in BlastCorpsRom . levelMeta )
8525 {
86- string inputFile = Path . Combine ( inputDir , levelMeta . filename ) ;
87- string outputFile = Path . Combine ( tmpDir , levelMeta . filename ) ;
26+ string inputFile = Path . Combine ( inputDir , levelMeta . filename + ".raw" ) ;
27+ string outputFile = Path . Combine ( tmpDir , levelMeta . filename + ".raw" ) ;
8828 byte [ ] inData = File . ReadAllBytes ( inputFile ) ;
89- BlastCorpsLevel level = BlastCorpsLevel . decodeLevel ( inData ) ;
29+ BlastCorpsLevel level = BlastCorpsLevel . decodeLevel ( inData , inData ) ;
9030 byte [ ] outData = level . ToBytes ( ) ;
9131 FileStream outStream = File . OpenWrite ( outputFile ) ;
9232 outStream . Write ( outData , 0 , outData . Length ) ;
0 commit comments