// 1pp 44100 CD Audio patch // ======================== // For BGT (BG1 + SoA + ToB) // ======================== BACKUP ~1pp_hq_music_BGT/backup~ AUTHOR ~http://www.shsforums.net/forum/159-1pp/~ AUTO_EVAL_STRINGS ALWAYS DEFINE_PATCH_FUNCTION p5_songlist_patch INT_VAR fj_song_day = 32000 fj_song_night = 32000 fj_song_battle = 32000 BEGIN READ_LONG 0xbc p5_songs_offset PATCH_IF (fj_song_day != 32000) BEGIN WRITE_LONG p5_songs_offset + 0x0000 fj_song_day END PATCH_IF (fj_song_night != 32000) BEGIN WRITE_LONG p5_songs_offset + 0x0004 fj_song_night END PATCH_IF (fj_song_battle != 32000) BEGIN WRITE_LONG p5_songs_offset + 0x000c fj_song_battle END END // p5_songlist_patch END // ALWAYS DEFINE_ACTION_MACRO 1PP_EXE_PATCH BEGIN OUTER_SET fail = 0 ACTION_IF (~%WEIDU_OS%~ STRING_EQUAL_CASE ~win32~ || ~%WEIDU_OS%~ STRING_EQUAL_CASE ~unix~) BEGIN PRINT ~Installing patch for Win/nix~ // BUILDING ARRAYS ACTION_DEFINE_ASSOCIATIVE_ARRAY binarycheck BEGIN 0x5e0953 => 0x5622 0x5e0a4f => 0x5622 0x5f95e7 => 0x5622 END // binary check array COPY ~bgmain.exe~ ~bgmain.exe~ // PATCH_IF (SOURCE_SIZE == 0x77a02e) BEGIN PHP_EACH binarycheck AS value1 => value2 BEGIN PATCH_IF (%value2% <= 0xFF) BEGIN READ_BYTE %value1_0% "check_r" PATCH_IF ("%check_r%" != %value2%) BEGIN SET fail = 1 END END PATCH_IF (%value2% <= 0xFFFF AND %value2% >= 0x100) BEGIN READ_SHORT %value1_0% "check_r" PATCH_IF ("%check_r%" != %value2%) BEGIN SET fail = 1 END END PATCH_IF (%value2% >= 0x10000) BEGIN READ_LONG %value1_0% "check_r" PATCH_IF ("%check_r%" != %value2%) BEGIN SET fail = 1 END END END END ACTION_DEFINE_ASSOCIATIVE_ARRAY binarypatch BEGIN 0x5e0953 => 0xac44 0x5e0a4f => 0xac44 0x5f95e7 => 0xac44 END // binary patch array // uncomment for game files // ACTION_IF (FILE_EXISTS_IN_GAME ~bgmain.exe~) THEN BEGIN COPY ~bgmain.exe~ ~bgmain.exe~ // PATCH_IF (SOURCE_SIZE == 0x77a02e) BEGIN PHP_EACH binarypatch AS value1 => value2 BEGIN PATCH_IF (%value2% <= 0xFF) BEGIN WRITE_BYTE %value1_0% %value2% END PATCH_IF (%value2% <= 0xFFFF AND %value2% >= 0x100) BEGIN WRITE_SHORT %value1_0% %value2% END PATCH_IF (%value2% >= 0x10000) BEGIN WRITE_LONG %value1_0% %value2% END END END // ELSE BEGIN // PATCH_PRINT ~Error: the source size does not seem to match. Stopping installation for safety purposes.~ // PATCH_FAIL ~Could not patch successfully. Make sure you are using the component for the right version!~ // END // END// uncomment for game files (end of EXISTS_IN) // ACTION_IF (fail = 1) BEGIN // FAIL ~Error: Executable does not appear to be compatible.~ // END // END // BUILDING ARRAYS DEFINE_ACTION_MACRO 1PP_BG2_AREAS_PATCH BEGIN PRINT ~Patching SoA/ToB areas...~ // 64 ACTION_IF (FILE_EXISTS_IN_GAME ~AR1602.ARE~) THEN BEGIN COPY_EXISTING ~AR1602.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 4 fj_song_night = 4 END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR2010.ARE~) THEN BEGIN COPY_EXISTING ~AR2010.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 4 fj_song_night = 4 END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR5501.ARE~) THEN BEGIN COPY_EXISTING ~AR5501.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 4 fj_song_night = 4 END BUT_ONLY_IF_IT_CHANGES END // 65 ACTION_IF (FILE_EXISTS_IN_GAME ~AR2202.ARE~) THEN BEGIN COPY_EXISTING ~AR2202.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 4 fj_song_night = 68 fj_song_battle = %BI% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR2203.ARE~) THEN BEGIN COPY_EXISTING ~AR2203.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 4 fj_song_night = 68 fj_song_battle = 54 END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR5003.ARE~) THEN BEGIN COPY_EXISTING ~AR5003.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 42 fj_song_night = 42 END BUT_ONLY_IF_IT_CHANGES END // 66 ACTION_IF (FILE_EXISTS_IN_GAME ~AR0509.ARE~) THEN BEGIN COPY_EXISTING ~AR0509.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 42 fj_song_night = 43 END BUT_ONLY_IF_IT_CHANGES END // 67 ACTION_IF (FILE_EXISTS_IN_GAME ~AR0513.ARE~) THEN BEGIN COPY_EXISTING ~AR0513.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 44 fj_song_night = 41 END BUT_ONLY_IF_IT_CHANGES END // patch me new ACTION_IF (FILE_EXISTS_IN_GAME ~AR0300.ARE~) THEN BEGIN COPY_EXISTING ~AR0300.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 9 fj_song_night = %Area1602% fj_song_battle = 47 END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR0500.ARE~) THEN BEGIN COPY_EXISTING ~AR0500.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 15 fj_song_night = %Area1602% fj_song_battle = 54 END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR0700.ARE~) THEN BEGIN COPY_EXISTING ~AR0700.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 19 fj_song_night = %Area1602% fj_song_battle = 57 END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR0800.ARE~) THEN BEGIN COPY_EXISTING ~AR0800.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 13 fj_song_night = 17 fj_song_battle = 49 END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR0900.ARE~) THEN BEGIN COPY_EXISTING ~AR0900.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 20 fj_song_night = %Area2202% fj_song_battle = 56 END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR0906.ARE~) THEN BEGIN COPY_EXISTING ~AR0906.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 37 fj_song_night = 37 fj_song_battle = 49 END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR0907.ARE~) THEN BEGIN COPY_EXISTING ~AR0907.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 63 fj_song_night = 63 fj_song_battle = 49 END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR1000.ARE~) THEN BEGIN COPY_EXISTING ~AR1000.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 15 fj_song_night = %Area1602% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR1600.ARE~) THEN BEGIN COPY_EXISTING ~AR1600.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 28 fj_song_night = 13 fj_song_battle = 57 END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR1607.ARE~) THEN BEGIN COPY_EXISTING ~AR1607.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 69 fj_song_night = 69 fj_song_battle = 59 END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR2200.ARE~) THEN BEGIN COPY_EXISTING ~AR2200.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %DR1% fj_song_night = %DR1% fj_song_battle = 49 END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR2201.ARE~) THEN BEGIN COPY_EXISTING ~AR2201.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %Area1602% fj_song_night = %Area1602% fj_song_battle = 50 END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR0303.ARE~) THEN BEGIN COPY_EXISTING ~AR0303.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_battle = %BI% END BUT_ONLY_IF_IT_CHANGES END // 602? ACTION_IF (FILE_EXISTS_IN_GAME ~AR0602.ARE~) THEN BEGIN COPY_EXISTING ~AR0602.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 18 fj_song_night = 18 fj_song_battle = %BI% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR0705.ARE~) THEN BEGIN COPY_EXISTING ~AR0705.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 18 fj_song_night = 18 fj_song_battle = %BI% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR2101.ARE~) THEN BEGIN COPY_EXISTING ~AR2101.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_battle = %BI% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR2402.ARE~) THEN BEGIN COPY_EXISTING ~AR2402.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_battle = %BI% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR0805.ARE~) THEN BEGIN COPY_EXISTING ~AR0805.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_battle = %BI% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR0811.ARE~) THEN BEGIN COPY_EXISTING ~AR0811.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_battle = %BI% END BUT_ONLY_IF_IT_CHANGES END END // 1PP_BG2_AREAS_PATCH DEFINE_ACTION_MACRO 1PP_BG1_AREAS_PATCH BEGIN // Determine what song IDs we're going to use OUTER_SET SONGID_BL1 = 0 OUTER_SET SONGID_BL2 = 0 OUTER_SET SONGID_BD2 = 0 OUTER_SET SONGID_BC1 = 0 OUTER_SET SONGID_BC2 = 0 OUTER_SET SONGID_CDAY1 = 0 OUTER_SET SONGID_BF2 = 0 OUTER_SET SONGID_CDAY2 = 0 OUTER_SET SONGID_BD1 = 0 OUTER_SET SONGID_BW1 = 0 COPY_EXISTING - ~songlist.2da~ ~override~ COUNT_2DA_ROWS 3 "num_rows" FOR (row = num_rows; row > 0; row -= 1) BEGIN READ_2DA_ENTRY row 0 3 "song_id" READ_2DA_ENTRY row 2 3 "mus_file" PATCH_IF ~%mus_file%~ STRING_EQUAL_CASE "BL1.mus" BEGIN SET SONGID_BL1 = song_id END ELSE PATCH_IF ~%mus_file%~ STRING_EQUAL_CASE "BL2.mus" BEGIN SET SONGID_BL2 = song_id END ELSE PATCH_IF ~%mus_file%~ STRING_EQUAL_CASE "BD5.mus" BEGIN SET SONGID_BD2 = song_id END ELSE PATCH_IF ~%mus_file%~ STRING_EQUAL_CASE "BC3.mus" BEGIN SET SONGID_BC1 = song_id END ELSE PATCH_IF ~%mus_file%~ STRING_EQUAL_CASE "BC4.mus" BEGIN SET SONGID_BC2 = song_id END ELSE PATCH_IF ~%mus_file%~ STRING_EQUAL_CASE "CDay1.mus" BEGIN SET SONGID_CDAY1 = song_id END ELSE PATCH_IF ~%mus_file%~ STRING_EQUAL_CASE "BF4.mus" BEGIN SET SONGID_BF2 = song_id END ELSE PATCH_IF ~%mus_file%~ STRING_EQUAL_CASE "CDay2.mus" BEGIN SET SONGID_CDAY2 = song_id END ELSE PATCH_IF ~%mus_file%~ STRING_EQUAL_CASE "BD4.mus" BEGIN SET SONGID_BD1 = song_id END ELSE PATCH_IF ~%mus_file%~ STRING_EQUAL_CASE "BW1.mus" BEGIN SET SONGID_BW1 = song_id END END //REPLACE_TEXTUALLY ~64 Area1602 blah.mus~ ~64 Area1602 Fort2.mus~ //REPLACE_TEXTUALLY ~65 Area2202 blah.mus~ ~65 Area2202 INite.mus~ //REPLACE_TEXTUALLY ~66 Tavern5 blah.mus~ ~66 Tavern5 TSong.mus~ //REPLACE_TEXTUALLY ~67 Tavern6 blah.mus~ ~67 Tavern6 Dung4.mus~ //REPLACE_TEXTUALLY ~81 ThemeT blah.mus~ ~81 ThemeT Te.mus~ PRINT ~Patching BGT areas...~ // 64 ACTION_IF (FILE_EXISTS_IN_GAME ~AR7616.ARE~) THEN BEGIN COPY_EXISTING ~AR7616.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %Fort2% fj_song_night = %Fort2% fj_song_battle = %SONGID_BL1% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR7615.ARE~) THEN BEGIN COPY_EXISTING ~AR7615.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %Fort2% fj_song_night = %Fort2% fj_song_battle = %SONGID_BL2% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR7614.ARE~) THEN BEGIN COPY_EXISTING ~AR7614.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %Fort2% fj_song_night = %Fort2% fj_song_battle = %SONGID_BD2% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR7613.ARE~) THEN BEGIN COPY_EXISTING ~AR7613.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %Fort2% fj_song_night = %Fort2% fj_song_battle = %SONGID_BD2% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR7612.ARE~) THEN BEGIN COPY_EXISTING ~AR7612.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %Fort2% fj_song_night = %Fort2% fj_song_battle = %SONGID_BC1% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR7800.ARE~) THEN BEGIN COPY_EXISTING ~AR7800.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %Fort2% fj_song_night = %INite% fj_song_battle = %SONGID_BC2% END BUT_ONLY_IF_IT_CHANGES END // 65 ACTION_IF (FILE_EXISTS_IN_GAME ~AR7621.ARE~) THEN BEGIN COPY_EXISTING ~AR7621.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %SONGID_CDAY1% fj_song_night = %INite% fj_song_battle = %SONGID_BC1% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR7246.ARE~) THEN BEGIN COPY_EXISTING ~AR7246.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %INite% fj_song_night = %INite% fj_song_battle = %SONGID_BF2% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR7212.ARE~) THEN BEGIN COPY_EXISTING ~AR7212.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %SONGID_CDAY2% fj_song_night = %INite% END BUT_ONLY_IF_IT_CHANGES END // 66 ACTION_IF (FILE_EXISTS_IN_GAME ~AR7227.ARE~) THEN BEGIN COPY_EXISTING ~AR7227.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %TSong% fj_song_night = %TSong% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR7228.ARE~) THEN BEGIN COPY_EXISTING ~AR7228.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %TSong% fj_song_night = %TSong% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR7229.ARE~) THEN BEGIN COPY_EXISTING ~AR7229.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %TSong% fj_song_night = %TSong% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR7705.ARE~) THEN BEGIN COPY_EXISTING ~AR7705.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 0 fj_song_night = %TSong% fj_song_battle = %SONGID_BC1% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR7706.ARE~) THEN BEGIN COPY_EXISTING ~AR7706.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = 0 fj_song_night = %TSong% fj_song_battle = %SONGID_BC1% END BUT_ONLY_IF_IT_CHANGES END // 67 ACTION_IF (FILE_EXISTS_IN_GAME ~AR7324.ARE~) THEN BEGIN COPY_EXISTING ~AR7324.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %Dung4% fj_song_night = %Dung4% fj_song_battle = %SONGID_BD2% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR7325.ARE~) THEN BEGIN COPY_EXISTING ~AR7325.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %Dung4% fj_song_night = %Dung4% fj_song_battle = %SONGID_BD1% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR7326.ARE~) THEN BEGIN COPY_EXISTING ~AR7326.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %Dung4% fj_song_night = %Dung4% fj_song_battle = %SONGID_BL1% END BUT_ONLY_IF_IT_CHANGES END ACTION_IF (FILE_EXISTS_IN_GAME ~AR7223.ARE~) THEN BEGIN COPY_EXISTING ~AR7223.ARE~ ~override~ LPF p5_songlist_patch INT_VAR fj_song_day = %Te% fj_song_night = %Te% fj_song_battle = %SONGID_BW1% END BUT_ONLY_IF_IT_CHANGES END END // 1PP_BG1_AREAS_PATCH DEFINE_ACTION_MACRO 1PP_COPY_BG2_FILES BEGIN PRINT ~Adding new BGII songs...~ // Special case: TAV5 and TAV6 are already in use in BGT COPY - ~1pp_hq_music_II\music\TAV5.mus~ ~1pp_hq_music_II\music\DR1.mus~ COPY - ~1pp_hq_music_II\music\TAV6.mus~ ~1pp_hq_music_II\music\BI.mus~ SILENT ADD_MUSIC ~Area1602~ ~1pp_hq_music_II\music\MX1602.mus~ ADD_MUSIC ~Area2202~ ~1pp_hq_music_II\music\MX2202.mus~ VERBOSE ADD_MUSIC ~DR1~ ~1pp_hq_music_II\music\DR1.mus~ ADD_MUSIC ~BI~ ~1pp_hq_music_II\music\BI.mus~ PRINT ~Copying BGII audio files...~ // New folders SILENT MKDIR ~music\ATHN~ ~music\BI~ ~music\DR1~ ~music\OTHN~ ~music\Tf~ VERBOSE // MUS files // Cred.mus needs some rearranging <<<<<<<< ...\1pp-inlined\Cred.mus Combo1 3 B C A >>>>>>>> // dream2.mus should not loop into non-existant folder <<<<<<<< ...\1pp-inlined\dream2.mus Combo2 5 B SPC1 SPC1 SPC1 SPC1 Combo2 B >>>>>>>> // BM2.mus references nonexistant file in last line (N2, should be N1) <<<<<<<< ...\1pp-inlined\BM2.mus BM2 13 A @TAG ZA B1 @TAG ZB B2 @TAG ZB C1 @TAG ZB C2 @TAG ZB D1 @TAG ZB E1 @TAG ZB F1 @TAG ZB G1 @TAG ZB H1J1 @TAG ZB K1 @TAG ZB M1 @TAG ZB N1 BM2 B1 @TAG ZA >>>>>>>> // Ugly workaround to make the looping problems (caused by a weird engine bug) in MB.MUS, VB.MUS and BP1.MUS less irritating // the bug causes the songs to always loop back to the first entry in list, not the one indicated in the "looping" line <<<<<<<< ...\1pp-inlined\VB.mus VB 65 _A1 @TAG _I2 _B1 @TAG _I3 _B2 @TAG _I1 _B3 @TAG _I1 _B4 @TAG _I1 _B5 @TAG _I1 _B6 @TAG _I1 _C1 @TAG _I2 _C2 @TAG _I1 _D1 @TAG _I2 _D2 @TAG _I2 _E1 @TAG _I1 _E2 @TAG _I1 _E3 @TAG _I2 _E4 @TAG _I2 _E5 @TAG _I1 _F1 @TAG _I2 _F2 @TAG _I2 _G1 @TAG _I1 _G2 @TAG _I1 _G3 @TAG _I2 _H1 @TAG _I3 _H2 @TAG _I1 _B2 @TAG _I1 _B3 @TAG _I1 _B4 @TAG _I1 _B5 @TAG _I1 _B6 @TAG _I1 _C1 @TAG _I2 _C2 @TAG _I1 _D1 @TAG _I2 _D2 @TAG _I2 _E1 @TAG _I1 _E2 @TAG _I1 _E3 @TAG _I2 _E4 @TAG _I2 _E5 @TAG _I1 _F1 @TAG _I2 _F2 @TAG _I2 _G1 @TAG _I1 _G2 @TAG _I1 _G3 @TAG _I2 _H1 @TAG _I3 _H2 @TAG _I1 _B2 @TAG _I1 _B3 @TAG _I1 _B4 @TAG _I1 _B5 @TAG _I1 _B6 @TAG _I1 _C1 @TAG _I2 _C2 @TAG _I1 _D1 @TAG _I2 _D2 @TAG _I2 _E1 @TAG _I1 _E2 @TAG _I1 _E3 @TAG _I2 _E4 @TAG _I2 _E5 @TAG _I1 _F1 @TAG _I2 _F2 @TAG _I2 _G1 @TAG _I1 _G2 @TAG _I1 _G3 @TAG _I2 _H1 @TAG _I3 _H2 VB _B2 @TAG _I1 >>>>>>>> <<<<<<<< ...\1pp-inlined\BP1.mus BP1 43 A @TAG ZB B1 @TAG ZB B2 @TAG ZB C1 @TAG ZB C2 @TAG ZB D1 @TAG ZB E1 @TAG ZA E2 @TAG ZB F1 @TAG ZA F2 @TAG ZA G1 @TAG ZA G2 @TAG ZA H1 @TAG ZA H2 @TAG ZA H3 @TAG ZA B1 @TAG ZB B2 @TAG ZB C1 @TAG ZB C2 @TAG ZB D1 @TAG ZB E1 @TAG ZA E2 @TAG ZB F1 @TAG ZA F2 @TAG ZA G1 @TAG ZA G2 @TAG ZA H1 @TAG ZA H2 @TAG ZA H3 @TAG ZA B1 @TAG ZB B2 @TAG ZB C1 @TAG ZB C2 @TAG ZB D1 @TAG ZB E1 @TAG ZA E2 @TAG ZB F1 @TAG ZA F2 @TAG ZA G1 @TAG ZA G2 @TAG ZA H1 @TAG ZA H2 @TAG ZA H3 BP1 B1 @TAG ZA >>>>>>>> <<<<<<<< ...\1pp-inlined\MB.mus MB 49 _A1 @TAG _G1 _A2 @TAG _G3 _B1 @TAG _G3 _B2 @TAG _G3 _B3 @TAG _G3 _B4 @TAG _G2 _B5 @TAG _G2 _C1 @TAG _G2 _C2 @TAG _G2 _C3 @TAG _G2 _C4 @TAG _G2 _D1 @TAG _G2 _D2 @TAG _G2 _D3 @TAG _G2 _E1 @TAG _G2 _E2 @TAG _G2 _F1 @TAG _G2 _F2 @TAG _G2 _F3 @TAG _G1 _A2 @TAG _G3 _B1 @TAG _G3 _B2 @TAG _G3 _B3 @TAG _G3 _B4 @TAG _G2 _B5 @TAG _G2 _C1 @TAG _G2 _C2 @TAG _G2 _C3 @TAG _G2 _C4 @TAG _G2 _D1 @TAG _G2 _D2 @TAG _G2 _D3 @TAG _G2 _E1 @TAG _G2 _E2 @TAG _G2 _F1 @TAG _G2 _F2 @TAG _G2 _F3 @TAG _G1 _A2 @TAG _G3 _B1 @TAG _G3 _B2 @TAG _G3 _B3 @TAG _G3 _B4 @TAG _G2 _B5 @TAG _G2 _C1 @TAG _G2 _C2 @TAG _G2 _C3 @TAG _G2 _C4 @TAG _G2 _D1 @TAG _G2 _D2 @TAG _G2 _D3 @TAG _G2 _E1 @TAG _G2 _E2 @TAG _G2 _F1 @TAG _G2 _F2 @TAG _G2 _F3 MB _A2 @TAG _G1 >>>>>>>> // MUS files - special cases COPY ~...\1pp-inlined\Cred.mus~ ~music\Cred.mus~ ~...\1pp-inlined\dream2.mus~ ~music\dream2.mus~ ~...\1pp-inlined\BM2.mus~ ~music\BM2.mus~ ~...\1pp-inlined\VB.mus~ ~music\VB.mus~ ~...\1pp-inlined\BP1.mus~ ~music\BP1.mus~ ~...\1pp-inlined\MB.mus~ ~music\MB.mus~ // Take care not to overwrite 'Te' from BG1 package COPY ~1pp_hq_music_II\music\Te.mus~ ~music\Tf.mus~ REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~Te~ ~Tf~ COPY_EXISTING ~songlist.2da~ ~override~ READ_2DA_ENTRY 81 2 3 mus_file PATCH_IF ~%mus_file%~ STRING_EQUAL_CASE "ThemeT.mus" BEGIN SET_2DA_ENTRY 81 2 3 "Tf.mus" END BUT_ONLY <<<<<<<< ...\1pp-inlined\nocopy.list =Te= =Cred= =TAV5= =TAV6= =DR1= =BI= =Blank= =dream2= =BM2= =VB= =MB= =BP1= >>>>>>>> // MUS files - straightforward cases ACTION_BASH_FOR ~1pp_hq_music_II\music~ ~.*\.mus~ BEGIN ACTION_IF NOT FILE_CONTAINS ~...\1pp-inlined\nocopy.list~ EVALUATE_BUFFER ~=%BASH_FOR_RES%=~ BEGIN COPY_LARGE ~%BASH_FOR_FILESPEC%~ ~music\%BASH_FOR_FILE%~ END END // ACM files COPY_LARGE ~1pp_hq_music_II\music\ATHN~ ~music\ATHN~ ~1pp_hq_music_II\music\BC1~ ~music\BC1~ ~1pp_hq_music_II\music\BC2~ ~music\BC2~ ~1pp_hq_music_II\music\BD1~ ~music\BD1~ ~1pp_hq_music_II\music\BD2~ ~music\BD2~ ~1pp_hq_music_II\music\BD3~ ~music\BD3~ ~1pp_hq_music_II\music\BF1~ ~music\BF1~ ~1pp_hq_music_II\music\BF2~ ~music\BF2~ ~1pp_hq_music_II\music\BI~ ~music\BI~ ~1pp_hq_music_II\music\BJR~ ~music\BJR~ ~1pp_hq_music_II\music\BM1~ ~music\BM1~ ~1pp_hq_music_II\music\BM2~ ~music\BM2~ ~1pp_hq_music_II\music\BP1~ ~music\BP1~ ~1pp_hq_music_II\music\BP2~ ~music\BP2~ ~1pp_hq_music_II\music\BRD~ ~music\BRD~ ~1pp_hq_music_II\music\BSD~ ~music\BSD~ ~1pp_hq_music_II\music\BST~ ~music\BST~ ~1pp_hq_music_II\music\Combo1~ ~music\Combo1~ ~1pp_hq_music_II\music\Combo2~ ~music\Combo2~ ~1pp_hq_music_II\music\DR1~ ~music\DR1~ ~1pp_hq_music_II\music\Dream1~ ~music\Dream1~ ~1pp_hq_music_II\music\Harp_v2~ ~music\Harp_v2~ ~1pp_hq_music_II\music\Harp_v6~ ~music\Harp_v6~ ~1pp_hq_music_II\music\Mb~ ~music\Mb~ ~1pp_hq_music_II\music\MX0011~ ~music\MX0011~ ~1pp_hq_music_II\music\MX0012~ ~music\MX0012~ ~1pp_hq_music_II\music\MX0013~ ~music\MX0013~ ~1pp_hq_music_II\music\MX0015~ ~music\MX0015~ ~1pp_hq_music_II\music\Mx0020~ ~music\Mx0020~ ~1pp_hq_music_II\music\Mx0021~ ~music\Mx0021~ ~1pp_hq_music_II\music\Mx0202~ ~music\Mx0202~ ~1pp_hq_music_II\music\Mx0204~ ~music\Mx0204~ ~1pp_hq_music_II\music\Mx0300~ ~music\Mx0300~ ~1pp_hq_music_II\music\Mx0313~ ~music\Mx0313~ ~1pp_hq_music_II\music\Mx0400~ ~music\Mx0400~ ~1pp_hq_music_II\music\Mx0400n~ ~music\Mx0400n~ ~1pp_hq_music_II\music\Mx0404~ ~music\Mx0404~ ~1pp_hq_music_II\music\Mx0406~ ~music\Mx0406~ ~1pp_hq_music_II\music\Mx0410~ ~music\Mx0410~ ~1pp_hq_music_II\music\Mx0414~ ~music\Mx0414~ ~1pp_hq_music_II\music\Mx0500~ ~music\Mx0500~ ~1pp_hq_music_II\music\Mx0512~ ~music\Mx0512~ ~1pp_hq_music_II\music\Mx0516~ ~music\Mx0516~ ~1pp_hq_music_II\music\MX0602~ ~music\MX0602~ ~1pp_hq_music_II\music\Mx0700~ ~music\Mx0700~ ~1pp_hq_music_II\music\Mx0900~ ~music\Mx0900~ ~1pp_hq_music_II\music\Mx1100~ ~music\Mx1100~ ~1pp_hq_music_II\music\MX1200~ ~music\MX1200~ ~1pp_hq_music_II\music\MX1201~ ~music\MX1201~ ~1pp_hq_music_II\music\MX1300~ ~music\MX1300~ ~1pp_hq_music_II\music\MX1304~ ~music\MX1304~ ~1pp_hq_music_II\music\Mx1400~ ~music\Mx1400~ ~1pp_hq_music_II\music\MX1500~ ~music\MX1500~ ~1pp_hq_music_II\music\MX1600~ ~music\MX1600~ ~1pp_hq_music_II\music\Mx1900~ ~music\Mx1900~ ~1pp_hq_music_II\music\Mx2000~ ~music\Mx2000~ ~1pp_hq_music_II\music\Mx2100~ ~music\Mx2100~ ~1pp_hq_music_II\music\Mx2300~ ~music\Mx2300~ ~1pp_hq_music_II\music\Mx4500~ ~music\Mx4500~ ~1pp_hq_music_II\music\Mx5000~ ~music\Mx5000~ ~1pp_hq_music_II\music\Mx5500~ ~music\Mx5500~ ~1pp_hq_music_II\music\Mx6000~ ~music\Mx6000~ ~1pp_hq_music_II\music\Mx6100~ ~music\Mx6100~ ~1pp_hq_music_II\music\Mx6200~ ~music\Mx6200~ ~1pp_hq_music_II\music\MxAerie~ ~music\MxAerie~ ~1pp_hq_music_II\music\MxAnom~ ~music\MxAnom~ ~1pp_hq_music_II\music\MxJahir~ ~music\MxJahir~ ~1pp_hq_music_II\music\MxKalah~ ~music\MxKalah~ ~1pp_hq_music_II\music\MxKhali~ ~music\MxKhali~ ~1pp_hq_music_II\music\MxThief~ ~music\MxThief~ ~1pp_hq_music_II\music\MxVicon~ ~music\MxVicon~ ~1pp_hq_music_II\music\OTHN~ ~music\OTHN~ ~1pp_hq_music_II\music\Tav1~ ~music\Tav1~ ~1pp_hq_music_II\music\Tav2~ ~music\Tav2~ ~1pp_hq_music_II\music\Tav3~ ~music\Tav3~ ~1pp_hq_music_II\music\Tav4~ ~music\Tav4~ ~1pp_hq_music_II\music\Theme~ ~music\Theme~ ~1pp_hq_music_II\music\Vb~ ~music\Vb~ // Special case: take care not to overwrite 'Te' from BG1 package COPY_LARGE ~1pp_hq_music_II\music\Te\Te_A1.acm~ ~music\Tf\Tf_A1.acm~ ~1pp_hq_music_II\music\Te\Te_B1.acm~ ~music\Tf\Tf_B1.acm~ END // 1PP_COPY_BG2_FILES DEFINE_ACTION_MACRO 1PP_COPY_BGT_FILES BEGIN PRINT ~Adding new BGT songs...~ ADD_MUSIC ~Dung4~ ~1pp_hq_music_ToSC\music\Dung4.mus~ ADD_MUSIC ~Fort2~ ~1pp_hq_music_ToSC\music\Fort2.mus~ ADD_MUSIC ~INite~ ~1pp_hq_music_ToSC\music\INite.mus~ ADD_MUSIC ~TSong~ ~1pp_hq_music_ToSC\music\TSong.mus~ ADD_MUSIC ~Te~ ~1pp_hq_music_ToSC\music\Te.mus~ PRINT ~Copying BGT audio files...~ // MUS files // BD1.mus incorrectly loops into BC1 at the end <<<<<<<< ...\1pp-inlined\BD1.mus BD4 27 A1 @TAG ENDC A2 @TAG ENDC B1 @TAG ENDB B2 @TAG ENDB B3 @TAG ENDC B4 @TAG ENDB C1 @TAG ENDA C2 @TAG ENDA D1 @TAG ENDA D2 @TAG ENDA D3 @TAG ENDA E1 @TAG ENDA E2 @TAG ENDA E3 @TAG ENDA E4 @TAG ENDA F1 @TAG ENDA F2 @TAG ENDA F3 @TAG ENDA G1 @TAG ENDA G2 @TAG ENDA G3A @TAG ENDA G4A @TAG ENDA H1 @TAG ENDA H2 @TAG ENDA H3 @TAG ENDA I12 @TAG ENDA XA1 BD4 B1 @TAG ENDA >>>>>>>> // Same for BL1.mus <<<<<<<< ...\1pp-inlined\BL1.mus BL1 28 A1 @TAG ENDA1 A3 @TAG ENDA1 A4 @TAG ENDA4 B1 @TAG ENDB1 B2 @TAG ENDB2 B3 @TAG ENDB3 B4 @TAG ENDB3 C1 @TAG ENDC1 C2 @TAG ENDB3 C3 @TAG ENDB3 C4 @TAG ENDB3 D1 @TAG ENDC1 D2 @TAG ENDC1 D3 @TAG ENDC1 E1 @TAG ENDC1 E2 @TAG ENDC1 E3 @TAG ENDC1 E4A @TAG ENDE4 F1A @TAG ENDC1 F2 @TAG ENDE4 F3 @TAG ENDC1 F4 @TAG ENDC1 G1 @TAG ENDE4 G2 @TAG ENDE4 G3 @TAG ENDC1 H1 @TAG ENDE4 H2 @TAG ENDH2 XA4 BL1 B1 @TAG ENDA4 >>>>>>>> // MUS files - special cases COPY ~...\1pp-inlined\BD1.mus~ ~music\BD4.mus~ ~...\1pp-inlined\BL1.mus~ ~music\BL1.mus~ // MUS files - straightforward cases COPY_LARGE ~1pp_hq_music_ToSC\music\BL2.mus~ ~music\BL2.mus~ ~1pp_hq_music_ToSC\music\BW1.mus~ ~music\BW1.mus~ ~1pp_hq_music_ToSC\music\CDay1.mus~ ~music\CDay1.mus~ ~1pp_hq_music_ToSC\music\CDay2.mus~ ~music\CDay2.mus~ ~1pp_hq_music_ToSC\music\Chants.mus~ ~music\Chants.mus~ ~1pp_hq_music_ToSC\music\Chapter.mus~ ~music\Chapter.mus~ ~1pp_hq_music_ToSC\music\CNite.mus~ ~music\CNite.mus~ ~1pp_hq_music_ToSC\music\Dream.mus~ ~music\Dream.mus~ ~1pp_hq_music_ToSC\music\Dung1.mus~ ~music\Dung1.mus~ ~1pp_hq_music_ToSC\music\Dung2.mus~ ~music\Dung2.mus~ ~1pp_hq_music_ToSC\music\Dung3.mus~ ~music\Dung3.mus~ ~1pp_hq_music_ToSC\music\FDay.mus~ ~music\FDay.mus~ ~1pp_hq_music_ToSC\music\FNite.mus~ ~music\FNite.mus~ ~1pp_hq_music_ToSC\music\Fort.mus~ ~music\Fort.mus~ ~1pp_hq_music_ToSC\music\PDay.mus~ ~music\PDay.mus~ ~1pp_hq_music_ToSC\music\Pnite.mus~ ~music\Pnite.mus~ ~1pp_hq_music_ToSC\music\TDay1.mus~ ~music\TDay1.mus~ ~1pp_hq_music_ToSC\music\TDay2.mus~ ~music\TDay2.mus~ ~1pp_hq_music_ToSC\music\TNite.mus~ ~music\TNite.mus~ ~1pp_hq_music_ToSC\music\Temple.mus~ ~music\Temple.mus~ // MUS files - tricky cases COPY ~1pp_hq_music_ToSC\music\Theme.mus~ ~music\bgtheme.mus~ REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~THEME~ ~BGTHEME~ COPY ~1pp_hq_music_ToSC\music\BC1.mus~ ~music\BC3.mus~ REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~BC1~ ~BC3~ COPY ~1pp_hq_music_ToSC\music\BC2.mus~ ~music\BC4.mus~ REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~BC2~ ~BC4~ COPY ~1pp_hq_music_ToSC\music\BD2.mus~ ~music\BD5.mus~ REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~BD2~ ~BD5~ COPY ~1pp_hq_music_ToSC\music\BF1.mus~ ~music\BF3.mus~ REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~BF1~ ~BF3~ COPY ~1pp_hq_music_ToSC\music\BF2.mus~ ~music\BF4.mus~ REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~BF2~ ~BF4~ COPY ~1pp_hq_music_ToSC\music\BP1.mus~ ~music\BP3.mus~ REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~BP1~ ~BP3~ COPY ~1pp_hq_music_ToSC\music\BP2.mus~ ~music\BP4.mus~ REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~BP2~ ~BP4~ COPY ~1pp_hq_music_ToSC\music\Tav1.mus~ ~music\Tav5.mus~ REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~Tav1~ ~Tav5~ COPY ~1pp_hq_music_ToSC\music\Tav2.mus~ ~music\Tav6.mus~ REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~Tav2~ ~Tav6~ COPY ~1pp_hq_music_ToSC\music\Tav3.mus~ ~music\Tav7.mus~ REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~Tav3~ ~Tav7~ COPY ~1pp_hq_music_ToSC\music\Tav4.mus~ ~music\Tav8.mus~ REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~Tav4~ ~Tav8~ // New folders SILENT MKDIR ~music\Dung4~ ~music\Fort2~ ~music\INite~ ~music\Te~ ~music\TSong~ VERBOSE // ACM files - straightforward cases COPY_LARGE ~1pp_hq_music_ToSC\music\Dung4~ ~music\Dung4~ ~1pp_hq_music_ToSC\music\Fort2~ ~music\Fort2~ ~1pp_hq_music_ToSC\music\INite~ ~music\INite~ ~1pp_hq_music_ToSC\music\Te~ ~music\Te~ ~1pp_hq_music_ToSC\music\TSong~ ~music\TSong~ ~1pp_hq_music_ToSC\music\Bl1~ ~music\bl1~ ~1pp_hq_music_ToSC\music\Bl2~ ~music\bl2~ ~1pp_hq_music_ToSC\music\Bw1~ ~music\bw1~ ~1pp_hq_music_ToSC\music\CDay1~ ~music\cday1~ ~1pp_hq_music_ToSC\music\CDay2~ ~music\cday2~ ~1pp_hq_music_ToSC\music\Chants~ ~music\chants~ ~1pp_hq_music_ToSC\music\CNite~ ~music\cnite~ ~1pp_hq_music_ToSC\music\Dream~ ~music\dream~ ~1pp_hq_music_ToSC\music\Dung1~ ~music\dung1~ ~1pp_hq_music_ToSC\music\Dung2~ ~music\dung2~ ~1pp_hq_music_ToSC\music\Dung3~ ~music\dung3~ ~1pp_hq_music_ToSC\music\FDay~ ~music\fday~ ~1pp_hq_music_ToSC\music\FNite~ ~music\fnite~ ~1pp_hq_music_ToSC\music\Fort~ ~music\Fort~ ~1pp_hq_music_ToSC\music\PDay~ ~music\pday~ ~1pp_hq_music_ToSC\music\PNite~ ~music\pnite~ ~1pp_hq_music_ToSC\music\TDay1~ ~music\tday1~ ~1pp_hq_music_ToSC\music\TDay2~ ~music\tday2~ ~1pp_hq_music_ToSC\music\Temple~ ~music\temple~ ~1pp_hq_music_ToSC\music\TNite~ ~music\tnite~ ~1pp_hq_music_ToSC\music\Theme\Themea.acm~ ~music\bgtheme\bgthemea.acm~ ~1pp_hq_music_ToSC\music\Tav1\Tav1a.acm~ ~music\Tav5\tav5a.acm~ ~1pp_hq_music_ToSC\music\Tav2\Tav2a.acm~ ~music\Tav6\tav6a.acm~ ~1pp_hq_music_ToSC\music\Tav3\Tav3a.acm~ ~music\Tav7\tav7a.acm~ ~1pp_hq_music_ToSC\music\Tav4\Tav4a.acm~ ~music\Tav8\tav8a.acm~ // ACM files - tricky cases // BC1 ACTION_BASH_FOR ~1pp_hq_music_ToSC\music\Bc1~ ~.*~ BEGIN OUTER_PATCH_SAVE newname ~%BASH_FOR_FILE%~ BEGIN REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~bc1~ ~bc3~ END COPY_LARGE ~%BASH_FOR_FILESPEC%~ ~music\bc3\%newname%~ END // BC2 ACTION_BASH_FOR ~1pp_hq_music_ToSC\music\Bc2~ ~.*~ BEGIN OUTER_PATCH_SAVE newname ~%BASH_FOR_FILE%~ BEGIN REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~bc2~ ~bc4~ END COPY_LARGE ~%BASH_FOR_FILESPEC%~ ~music\bc4\%newname%~ END // BD1 ACTION_BASH_FOR ~1pp_hq_music_ToSC\music\Bd1~ ~.*~ BEGIN OUTER_PATCH_SAVE newname ~%BASH_FOR_FILE%~ BEGIN REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~bd1~ ~bd4~ END COPY_LARGE ~%BASH_FOR_FILESPEC%~ ~music\bd4\%newname%~ END // BD2 ACTION_BASH_FOR ~1pp_hq_music_ToSC\music\Bd2~ ~.*~ BEGIN OUTER_PATCH_SAVE newname ~%BASH_FOR_FILE%~ BEGIN REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~bd2~ ~bd5~ END COPY_LARGE ~%BASH_FOR_FILESPEC%~ ~music\bd5\%newname%~ END // BF1 ACTION_BASH_FOR ~1pp_hq_music_ToSC\music\Bf1~ ~.*~ BEGIN OUTER_PATCH_SAVE newname ~%BASH_FOR_FILE%~ BEGIN REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~bf1~ ~bf3~ END COPY_LARGE ~%BASH_FOR_FILESPEC%~ ~music\bf3\%newname%~ END // BF2 ACTION_BASH_FOR ~1pp_hq_music_ToSC\music\Bf2~ ~.*~ BEGIN OUTER_PATCH_SAVE newname ~%BASH_FOR_FILE%~ BEGIN REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~bf2~ ~bf4~ END COPY_LARGE ~%BASH_FOR_FILESPEC%~ ~music\bf4\%newname%~ END // BP1 ACTION_BASH_FOR ~1pp_hq_music_ToSC\music\Bp1~ ~.*~ BEGIN OUTER_PATCH_SAVE newname ~%BASH_FOR_FILE%~ BEGIN REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~bp1~ ~bp3~ END COPY_LARGE ~%BASH_FOR_FILESPEC%~ ~music\bp3\%newname%~ END // BP2 ACTION_BASH_FOR ~1pp_hq_music_ToSC\music\Bp2~ ~.*~ BEGIN OUTER_PATCH_SAVE newname ~%BASH_FOR_FILE%~ BEGIN REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~bp2~ ~bp4~ END COPY_LARGE ~%BASH_FOR_FILESPEC%~ ~music\bp4\%newname%~ END END // 1PP_COPY_BGT_FILES DEFINE_ACTION_MACRO 1PP_CONVERT_ACM BEGIN PRINT ~Launching external converter to convert existing ACM files in the music folder.~ PRINT ~This step can take a while, please don't close the window until the process is finished...~ AT_NOW ~1pp_hq_music_BGT/convert/acm_upsample.exe "music/"~ END // 1PP_CONVERT_ACM BEGIN // BGT version: BEGIN ~Patch BGT and BGII areas to make full use of updated music (Recommended)~ SUBCOMPONENT ~1pp: High quality music for BGT~ REQUIRE_PREDICATE GAME_IS ~BGT~ ~BGT not detected~ REQUIRE_PREDICATE FILE_EXISTS ~1pp_hq_music_II\music\ATHN\ATHNa.acm~ AND FILE_EXISTS ~1pp_hq_music_ToSC\music\INite\INitea.acm~ ~One of the required music packages not found. Download and extract both 1PP BG2 and TotSC HQ music packages before running this.~ // REQUIRE_PREDICATE MOD_IS_INSTALLED "setup-bgtmusic.tp2" "2" ~BGTMusic component 2 is not installed, SONGLIST.2DA is missing required BGT/BGII song entries~ LAM 1PP_EXE_PATCH LAM 1PP_CONVERT_ACM AT_UNINSTALL ~1pp_hq_music_BGT/convert/acm_restorebackup.exe "music/"~ LAM 1PP_COPY_BGT_FILES LAM 1PP_COPY_BG2_FILES LAM 1PP_BG1_AREAS_PATCH LAM 1PP_BG2_AREAS_PATCH BEGIN ~Skip patching BGT and BGII areas~ SUBCOMPONENT ~1pp: High quality music for BGT~ REQUIRE_PREDICATE GAME_IS ~BGT~ ~BGT not detected~ REQUIRE_PREDICATE FILE_EXISTS ~1pp_hq_music_II\music\ATHN\ATHNa.acm~ AND FILE_EXISTS ~1pp_hq_music_ToSC\music\INite\INitea.acm~ ~One of the required music packages not found. Download and extract both 1PP BG2 and TotSC HQ music packages before running this.~ LAM 1PP_EXE_PATCH LAM 1PP_CONVERT_ACM AT_UNINSTALL ~1pp_hq_music_BGT/convert/acm_restorebackup.exe "music/"~ LAM 1PP_COPY_BGT_FILES LAM 1PP_COPY_BG2_FILES // SoA/ToB version: BEGIN ~Patch BGII areas to make full use of updated music (Recommended)~ SUBCOMPONENT ~1pp: High quality music for SoA/ToB~ REQUIRE_PREDICATE GAME_IS ~soa tob~ AND NOT GAME_IS ~BGT~ ~SoA/ToB not detected~ REQUIRE_PREDICATE FILE_EXISTS ~1pp_hq_music_II\music\ATHN\ATHNa.acm~ ~Required music package not found. Download and extract 1PP BG2 HQ music package before running this.~ LAM 1PP_EXE_PATCH LAM 1PP_CONVERT_ACM AT_UNINSTALL ~1pp_hq_music_BGT/convert/acm_restorebackup.exe "music/"~ LAM 1PP_COPY_BG2_FILES LAM 1PP_BG2_AREAS_PATCH BEGIN ~Skip patching BGII areas~ SUBCOMPONENT ~1pp: High quality music for SoA/ToB~ REQUIRE_PREDICATE GAME_IS ~soa tob~ AND NOT GAME_IS ~BGT~ ~SoA/ToB not detected~ REQUIRE_PREDICATE FILE_EXISTS ~1pp_hq_music_II\music\ATHN\ATHNa.acm~ ~Required music package not found. Download and extract 1PP BG2 HQ music package before running this.~ LAM 1PP_EXE_PATCH LAM 1PP_CONVERT_ACM AT_UNINSTALL ~1pp_hq_music_BGT/convert/acm_restorebackup.exe "music/"~ LAM 1PP_COPY_BG2_FILES BEGIN ~Restore BG2:SoA main menu theme (should be used at BGT->SoA transition)~ REQUIRE_PREDICATE GAME_IS ~BGT~ ~BGT not detected~ REQUIRE_PREDICATE FILE_CONTAINS_EVALUATED (~songlist.2da~ ~BGTheme.mus~) ~BG1 theme entry not found in SONGLIST.2DA~ COPY_EXISTING ~songlist.2da~ ~override~ REPLACE_TEXTUALLY CASE_INSENSITIVE EXACT_MATCH ~BGTheme.mus~ ~Theme.mus~ BUT_ONLY