├── Noesis ├── Asphalt_2_Urban_GT_BTX_(PSP).py ├── Forspoken_PC_BTEX.py ├── Fragments_Blue_(PS2)_obj.py ├── Neversoft_RLE.py ├── Once_Human_Beta_mesh.py ├── Tomb_Raider_Anniversary_(PC).py ├── fancy_pants_adventures_textures.py ├── moorhuhn_x_crazy_chicken_rle.py └── power_rangers_super_samurai_xbox360.py ├── Python ├── BSA_Archives.py ├── Colony_Wars_(PS1)_INF-PAK.py ├── Corpse_Killer_(Saturn)_SGA_audio.py ├── Cyberia_(PC)_C93.py ├── Cyberia_(PC)_CAM.py ├── Dreamcast_KAT_audio.py ├── Fighting_Fury_(PS2)_audio.py ├── Forspoken_(PC)_EARC.py ├── GTA2_(Dreamcast)_SDT-RAW.py ├── Geist_(GameCube)_SDF_GC.py ├── Ghost_Of_Tsushima_(PC)_PSARC.py ├── Glass_Rose_(PS2)_PAD.py ├── IECS.py ├── Kane_&_Lynch_Dead_Men_(PC)_STR.py ├── Lord_Of_The_Rings_ROTK_(PC)_pac.py ├── Lucas_Arts_SAN_audio.py ├── Malice_(PS2)_audio.py ├── Mario_Strikers_Charged_(Wii)_RESBUN.py ├── Nuclear_Strike_(PS1)_FSV-WVE.py ├── Otogi_Myth_Of_Demons_(XBox)_XPS-DAT.py ├── Primal_(PS2)_Audio.py ├── Rayman_Revolution_(PS2)_DSC-BF.py ├── Shockwave_Assault_(Saturn)_CPK_audio.py ├── Shockwave_Assault_(Saturn)_STM_audio.py ├── Star_Trek_Conquest_(PS2)_PSH-PSK.py └── Zone_Of_The_Enders_(PS2)_PSS_audio.py ├── QuickBMS ├── Alan_Wake_2_TOC-BLOB.bms ├── Attack_On_Titan_2_BGM.bms ├── Citizens_Of_Space_FC.bms ├── Dreamcast │ └── Bang_Gunship_Elite_(Dreamcast)_TOC-PAK.bms ├── GameCube │ ├── Bomberman_Generation_(GameCube)_SEB-MDT.bms │ ├── Bomberman_Jetters_(GameCube).bms │ ├── Buffy_Chaos_Bleeds_(GameCube)_BIN-000.bms │ ├── F-Zero_GX_(GameCube)_PACK.bms │ ├── Jimmy_Neutron_Attack_Of_The_Twonkies_(GameCube)_PAK.bms │ ├── Legend_Of_Spyro_New_Beginning_(GameCube)_GSB.bms │ ├── Lost_Kingdoms_2_(GameCube)_PPS-SAM.bms │ ├── Mario_Party_4-7_(GameCube)_MSM.bms │ ├── Pac-Man_World_3_(GameCube)_GCP.bms │ ├── Phantasy_Star_Online_1&2_(GameCube)_SDIR-SAMP.bms │ ├── Resident_Evil_0_(GameCube)_ARC.bms │ ├── Resident_Evil_2_(GameCube)_DAT.bms │ ├── StarFox_Adventures_(GameCube)_SDI-SAM_v2.bms │ └── StarFox_Assault_(GameCube)_CHD-CBD_v2.bms ├── Midnight_Club_LA_CSR.bms ├── Mobile │ ├── Asphalt_5_(IOS)_BAR.bms │ ├── Family_Hero_(Android)_afgpack.bms │ ├── Family_Hero_(Android)_misc.bms │ ├── Icy_Tower_(Nokia_N9)_PAK.bms │ ├── Need_For_Speed_No_Limits_(Mobile)_SB3D.bms │ ├── Ragnarok_Origin_(Mobile)_PKG.bms │ └── Royal_Chaos_(Android).bms ├── Multi-Game Archives │ ├── 3DO_Company_ASB-ATX.bms │ ├── Climax_Action_Games_ARC.bms │ ├── Krome_Studios_RKV.bms │ ├── Platinum_Games_PKZ.bms │ └── Radical_Entertainment_RCF.bms ├── Nights_Into_Dreams_DDM.bms ├── Nintendo DS │ ├── American_Girl_Kit_Mystery_Challenge_(NDS)_PAK.bms │ ├── Assassins_Creed_Altairs_Chronicles_(NDS)_BAR.bms │ └── Sprung_(NDS)_filesystem.bms ├── Ollie_King_(Arcade)_DIR-FIL-BIN.bms ├── Once_Human_Beta_NPK.bms ├── PC │ ├── Alien_Legacy_(PC)_DVF.bms │ ├── Blood_&_Magic_(PC)_MAP-STF.bms │ ├── Blood_Omen_2_Legacy_Of_Kain_(PC)_RKV.bms │ ├── Call_Of_The_Wild_Angler_(PC)_TAB_ARC.bms │ ├── Chaos_Control_(PC)_GB.bms │ ├── Chaser_(PC)_FS.bms │ ├── Cold_Zero_Last_Stand_(PC)_GLT.bms │ ├── Comanche_3_(PC)_RES.bms │ ├── Conflict_Desert_Storm_(PC)_DAT.bms │ ├── Control_(PC)_BIN-RMDP.bms │ ├── Cyberia_2_(PC)_M95.bms │ ├── Dark_Reign_2_(PC)_ZWP.bms │ ├── Dark_Reign_Future_Of_War_(PC)_FTG.bms │ ├── Devil_May_Cry_4_(PC)_ARC.bms │ ├── Dishonored_2_(PC)_PCK.bms │ ├── Duke_Nukem_Forever_(PC)_DIR-DAT.bms │ ├── Dungeon_Keeper_2_(PC)_SDT.bms │ ├── Earth_2150_Escape_From_The_Blue_Planet_(PC)_WD.bms │ ├── Earth_And_Beyond_(PC)_MIX.bms │ ├── Freelancer_(PC)_UTF.bms │ ├── Guild_Gold_Edition_(PC)_SBF.bms │ ├── Gunmetal_(PC)_IDX-DAT.bms │ ├── Happy_Feet_(PC)_WCP.bms │ ├── I_Have_No_Mouth_And_I_Must_Scream_(PC)_RES.bms │ ├── Incredible_Machine_2_(PC)_MAP-001.bms │ ├── LA_Noire_(PC)_audio.bms │ ├── MechWarrior_4_(PC)_MW4.bms │ ├── Monster_Jam_(PC)_packfile.bms │ ├── Normal_Fishing_Demo_(PC)_audio.bms │ ├── Outforce_(PC)_BOX.bms │ ├── Railway_Empire_2_(PC)_FUK.bms │ ├── Revenant_(PC)_PAK.bms │ ├── Ring_Of_Elysium_(PC)_SFC.bms │ ├── Sacrifice_(PC)_SCP_audio.bms │ ├── Second_Sight_(PC)_PAK.bms │ ├── Star_Wars_Galaxies_(PC)_TRE.bms │ ├── Starsiege_(PC)_VOL.bms │ ├── Starsky_&_Hutch_(PC)_wCF.bms │ ├── State_Of_Emergency_(PC)_PBH-PBK.bms │ ├── Titan_Quest_(PC)_ARC.bms │ └── Zone_4_(PC)_SOD.bms ├── PS1 │ ├── 007_The_World_Is_Not_Enough_(PS1)_SHBIN.bms │ ├── Alien_Resurrection_(PS1)_CVB.bms │ ├── Alien_Resurrection_(PS1)_CVD.bms │ ├── Alien_Resurrection_(PS1)_PACK.bms │ ├── Alien_Resurrection_(PS1)_WAD.bms │ ├── Anastasia_(PS1)_GAMEDATA.bms │ ├── Apocalypse_(PS1)_HED-WAD.bms │ ├── Ark_Of_Time_(PS1)_DAT.bms │ ├── Aztec_The_Curse_In_The_Heart_Of_The_City_Of_Gold_(PS1)_DIR-LNK.bms │ ├── Bio_FREAKS_(PS1)_MUK.bms │ ├── Bio_FREAKS_(PS1)_SND.bms │ ├── Colony_Wars_(PS1)_RSC.bms │ ├── Colony_Wars_Vengeance_(PS1)_RSC.bms │ ├── Dance_Dance_Revolution_(PS1)_STRBIN.bms │ ├── Dance_Dance_Revolution_Disney_Mix_(PS1)_STM2.bms │ ├── Dance_Dance_Revolution_Euromix_(PS1)_STRBIN.bms │ ├── Dance_UK_(PS1)_PAK.bms │ ├── Danger_Girl_(PS1)_WB-WBX.bms │ ├── Darklight_Conflict_(PS1)_INF-WAD.bms │ ├── Delta_Force_Urban_Warfare_(PS1)_DCF.bms │ ├── Delta_Force_Urban_Warfare_(PS1)_PSS.bms │ ├── Dexters_Laboratory_Mandarks_Lab_(PS1)_DATA.bms │ ├── Discworld_(PS1)_IDX_SMP.bms │ ├── Discworld_II_(PS1)_IDX-SAMP.bms │ ├── Discworld_II_(PS1)_LFI-LFD.bms │ ├── Discworld_Noir_(PS1)_ELF.bms │ ├── Dragonheart_Fire_&_Steel_(PS1)_LEV.bms │ ├── Driver_1&2_(PS1)_BLK.bms │ ├── Dune_2000_(PS1)_DAT-MIX-XA.bms │ ├── Frogger_2_(PS1)_DAT.bms │ ├── Game_Of_Life_(PS1)_PAK.bms │ ├── Gex_(PS1)_BIGFILE.bms │ ├── Gex_3D_Return_Of_The_Gecko_(PS1)_BIGFILE.bms │ ├── Grandia_(PS1)_IDX-STZ_v2.bms │ ├── Hellnight_(PS1)_DAT.bms │ ├── In_Cold_Blood_(PS1)_CLU-SND-SPK.bms │ ├── Koudelka_(PS1)_MCF.bms │ ├── Legacy_Of_Kain_Soul_Reaver_(PS1)_BIGFILE.bms │ ├── Legend_Of_Legaia_(PS1)_PROT.bms │ ├── Lunar_2_Eternal_Blue_(PSX)_IDX_PAK.bms │ ├── MediEvil_(PS1)_MWD.bms │ ├── Metal_Gear_Solid_(PS1)_STAGE.bms │ ├── Metal_Gear_Solid_(PS1)_VOXDAT.bms │ ├── Mori_No_Oukoku_(PS1)_SOUNDDAT.bms │ ├── Mortal_Kombat_Special_Forces_(PS1)_SFCDF.bms │ ├── Nuclear_Strike_(PS1)_AF.bms │ ├── Reboot_(PS1)_BIG_v2.bms │ ├── Ridge_Racer_4_(PS1)_BIN.bms │ ├── Rollcage_(PS1)_IMG.bms │ ├── Small_Soldiers_(PS1)_RSC.bms │ ├── Tony_Hawk's_Pro_Skater_(PS1)_HED-WAD.bms │ ├── Who_Wants_To_Be_A_Millionaire_(PS1)_STY.bms │ ├── Wing_Commander_3&4_(PS1)_LIB.bms │ └── Wipeout3_(PS1)_PBP.bms ├── PS2 │ ├── Altered_Beast_(PS2)_TB-BIN.bms │ ├── Ape_Escape_2_(PS2&PS4)_GZS.bms │ ├── Ape_Escape_2_(PS2&PS4)_VGS.bms │ ├── Armored_Core_2_Another_Age_(PS2)_VVV.bms │ ├── Avatar_Into_The_Inferno_(PS2)_PAK.bms │ ├── Baroque_(PS2)_SFS.bms │ ├── Beatmania_II_DX_3_(PS2)_BIN.bms │ ├── Black_(PS2)_SSH-BKS_v2.bms │ ├── Code_Lyoko_Quest_For_Infinity_(PS2)_GRP_v2.bms │ ├── Contra_Shattered_Soldier_(PS2)_FILEDATA.bms │ ├── Contra_Shattered_Soldier_(PS2)_PALSD.bms │ ├── Disaster_Report_(PS2)_FAT-DAT.bms │ ├── Donald_Duck_Goin_Quackers_(PS2)-FAT-000.bms │ ├── Drakan_Ancients_Gates_(PS2)-SDB_v2.bms │ ├── Echo_Night_Beyond_(PS2)_BND.bms │ ├── Eve_Of_Extinction_(PS2)_ADP.bms │ ├── Eve_Of_Extinction_(PS2)_ADV.bms │ ├── Eve_Of_Extinction_(PS2)_BDH-BDP.bms │ ├── F1_Racing_Championship_(PS2)_SH-SB-SS.bms │ ├── Fatal_Frame_(PS2)_IMGBD.bms │ ├── Fighting_Fury_(PS2)_DATALIST.bms │ ├── Firefighter_FD18_(PS2)_BIN.bms │ ├── Forbidden_Siren_(PS2)_TBL.bms │ ├── Forbidden_Siren_2_(PS2)_ROM.bms │ ├── Freaky_Flyers_(PS2)_MST.bms │ ├── Frequency_(PS2)_ARK.bms │ ├── Glass_Rose_(PS2)_FIF-FPK.bms │ ├── Gregory_Horror_Show_(PS2)_voice_v2.bms │ ├── Guilty_Gear_Isuka_(PS2)_PCK.bms │ ├── Gungrave_(PS2)_BIN.bms │ ├── Harry_Potter_Philosophers_Stone_(PS2)_HOG.bms │ ├── Jak_2_Renegade_(PS2)_VAGDIR-WAD.bms │ ├── Jak_Daxter_Precursor_Legacy_(PS2)_VAGDIR-WAD.bms │ ├── James_Bond_Nightfire_(PS2)_FILESBIN.bms │ ├── Jigoku_Shoujo_Mioyosuga_(PS2)_PID-PTD.bms │ ├── LOTR_Third_Age_(PS2)_SCP-SAS_audio_v2.bms │ ├── Lifeline_(PS2)_A.bms │ ├── MTV_Music_Generator_2_(PS2)_WAD.bms │ ├── MTV_Music_Generator_3_(PS2)_WBD-DBD.bms │ ├── Made_Man_(PS2)_BNK.bms │ ├── Made_Man_(PS2)_MFS.bms │ ├── Malice_(PS2)_TBL.bms │ ├── Mercenaries_1&2_(PS2)_MSH_MSB.bms │ ├── Midnight_Club_2_(PS2)_BANKS.bms │ ├── Midnight_Club_2_(PS2)_STREAMS.bms │ ├── Monster_Rancher_4_(PS2).bms │ ├── Phase_Paradox_(PS2)_XWH-XWB.bms │ ├── Prince_Of_Persia_Sands_Of_Time_(PS2)_BF.bms │ ├── Prince_Of_Persia_Sands_Of_Time_(PS2)_BIGFAT.bms │ ├── Punisher_(PS2)_VPP.bms │ ├── Ready_2_Rumble_Boxing_Round_2_(PS2)_RAT.bms │ ├── Roadkill_(PS2)_POD.bms │ ├── Robotech_Invasion_(PS2)_PAK.bms │ ├── Rozen_Maiden_Gebetgarten_(PS2)_audio.bms │ ├── Rule_Of_Rose_(PS2)_audio.bms │ ├── Run_Like_Hell_(PS2)_SFX.bms │ ├── Shadow_Man_2econd_Coming_(PS2)_DIR-BIN.bms │ ├── Silent_Hill_3_(PS2)_MFA.bms │ ├── Silent_Hill_Origins_(PS2)_ARC.bms │ ├── Silent_Hill_Origins_(PS2)_IGCStream_audio.bms │ ├── Spider-Man_2_(PS2)_PAK.bms │ ├── Spider-Man_Web_Of_Shadows_(PS2)_STREAMS.bms │ ├── Spy_Fiction_(PS2)_DSB-DAT.bms │ ├── Star_Trek_Encounters_(PS2)_PSH-PSK_v2.bms │ ├── Star_Wars_Ep_3_Revenge_Of_The_Sith_(PS2)_HSH-PK2.bms │ ├── Star_Wars_Ep_3_Revenge_Of_The_Sith_(PS2)_RP2.bms │ ├── Star_Wars_Jedi_Starfighter_(PS2)_PAK_v2.bms │ ├── Star_Wars_The_Force_Unleashed_(PS2)_SBK.bms │ ├── State_Of_Emergency_(PS2)_BNK.bms │ ├── Stuart_Little_3_Big_Photo_Adventure_(PS2)_SPH-SPB.bms │ ├── Summoner_(PS2)_VPP.bms │ ├── Syphon_Filter_Omega_Strain_(PS2)_HOG.bms │ ├── Tak_The_Great_Juju_Challenge_(PS2)_HOG.bms │ ├── Terminator_Dawn_Of_Fate_(PS2)_MPK.bms │ ├── Test_Drive_Off-Road_Wide_Open_(PS2)_ZIP.bms │ ├── Tiger_Woods_2005_(PS2)_SAB.bms │ ├── Transformers_(PS2)_TLB-VAC.bms │ ├── Trapt_(PS2)_RPS.bms │ ├── Unison_Rebels_Of_Rhythm_And_Dance_(PS2)_DAT.bms │ ├── Urban_Chaos_Riot_Response_(PS2)_DIR.bms │ ├── Urban_Chaos_Riot_Response_(PS2)_ENT-GEO.bms │ ├── Wacky_Races_(PS2)_SPK.bms │ ├── Way_Of_The_Samurai_(PS2)_DAT.bms │ ├── Way_Of_The_Samurai_(PS2)_RBB.bms │ ├── Way_Of_The_Samurai_(PS2)_VGD.bms │ └── X-Files_Resist_Or_Serve_(PS2)_EFS.bms ├── PS3 │ ├── Armored_Core_Verdict_Day_(PS3)_BHD-BDT.bms │ ├── Baja_Edge_Of_Control_(PS3)_XLL-XLF.bms │ ├── Fancy_Pants_Adventures_(PS3)_LVL.bms │ ├── Heavenly_Sword_(PS3)_WAD.bms │ ├── House_Of_The_Dead_Overkill_Extended_(PS3).bms │ ├── Megazone_23_Aoi_Garland_(PS3)_IPH-IPK.bms │ ├── Metal_Gear_Solid_4_(PS3)_SDPACK-SPEECH.bms │ ├── Naughty_Bear_(PS3)_PSARC.bms │ ├── Siren_Blood_Curse_(PS3)_HED-DAT.bms │ ├── Skylanders_Spyros_Adventure_(PS3)_PCK.bms │ ├── Star_Wars_The_Force_Unleashed_USE_(PS3)_PS3D-PS3P.bms │ ├── Star_Wars_The_Force_Unleashed_USE_(PS3)_WAD.bms │ ├── To_Heart_2_DX_Plus_(PS3)_TPL.bms │ └── Wipeout2_(PS3)_PAK.bms ├── PS4 │ ├── Kingdom_Hearts_Remix_(PS4)_PSARC.bms │ └── Legend_Of_Heroes_Trails_Into_Reverie_(PS4)_PKG.bms ├── PSP │ ├── Colin_Mcrae_Dirt_2_(PSP)_DATA.bms │ ├── FF7_Crisis_Core_(PSP)_FSE-PKG.bms │ ├── Kingdom_Hearts_Birth_By_Sleep_(PSP)_SCD.bms │ ├── Metal_Gear_Solid_Peace_Walker_(PSP)_PDT.bms │ ├── Metal_Gear_Solid_Portable_Ops_(PSP)_SEP.bms │ ├── Metal_Gear_Solid_Portable_Ops_(PSP)_zar.bms │ └── Miami_Vice_(PSP)_ASR.bms ├── QuickBMS.md ├── Space_Hulk_2_(Saturn)_CAT.bms ├── Switch │ ├── Endless_Ocean_Luminous_(Switch)_BEA.bms │ ├── Splatoon3_(Switch)_ZS.bms │ └── Tsukihime_Remake_(Switch)_HED-MRG-NAM.bms ├── Wii │ ├── Karaoke_Revolution_(Wii)_REV.bms │ ├── Littlest_Pet_Shop_Friends_(Wii)_RPK.bms │ ├── Skylanders_Giants_(Wii)_arc.bms │ └── Sonic_Unleashed_(Wii)_DAT_GCAX.bms ├── XBox │ ├── 007_Everything_Or_Nothing_(XBox)_XBC.bms │ ├── Army_Men_Sarge's_War_(XBox)_SBR.bms │ ├── Bruce_Force_(XBox)_TGZ.bms │ ├── Call_Of_Duty_Finest_Hour_(XBox)_AWD.bms │ ├── Dino_Crisis_3_(XBox)_XSP.bms │ ├── LOTR_Fellowship_Of_The_Ring_(Xbox)_XPA.bms │ ├── MechAssault_1_(XBox)_d1Bank.bms │ ├── Spider-Man_(XBox)_XSH.bms │ ├── Star_Wars_Clone_Wars_(XBox)_ZWP.bms │ ├── Star_Wars_Clone_Wars_(XBox)_common.bms │ ├── Star_Wars_Revenge_Of_The_Sith_(Xbox)_RPX.bms │ ├── State_Of_Emergency_(XBox)_SBH-SBK.bms │ └── Tetris_Worlds_(XBox)_RCF.bms └── XBox360 │ ├── Condemned1_(XBox360)_Bundle00.bms │ ├── Condemned1_(Xbox360)_Arch00.bms │ ├── Condemned2_(XBox360)_SND.bms │ ├── Double_Dragon_2_(XBox360)_PACK.bms │ ├── Full_Auto_(XBox360)_PIX.bms │ ├── Mass_Effect2_(XBox360)_AFC.bms │ ├── Mass_Effect_(XBox360)_ISB.bms │ ├── Ninja_Gaiden_3_RE_(Xbox360).bms │ └── Strike_Witches_Silver_Wings_(XBox360)_BIN.bms └── README.md /QuickBMS/Attack_On_Titan_2_BGM.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Attack On Titan 2 3 | # BGM extract 4 | # QuickBMS script by Dave, 2021 5 | # ================================================================================ 6 | 7 | Get TEMPNAME basename 8 | Math A = 1 9 | 10 | For A 11 | FindLoc OFFSET String "KOVS" 0 "" 12 | 13 | If OFFSET = "" 14 | Break 15 | Endif 16 | 17 | Goto OFFSET 18 | Get MISC Long 19 | Get SIZE Long 20 | Math SIZE + 0x20 21 | 22 | String FILENAME P "%TEMPNAME%_%A%.kovs" 23 | 24 | Log FILENAME OFFSET SIZE 25 | 26 | Next A 27 | 28 | -------------------------------------------------------------------------------- /QuickBMS/Citizens_Of_Space_FC.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Citizens Of Space 3 | # music.fc extract 4 | # QuickBMS script by Dave, 2021 5 | # ================================================================================ 6 | 7 | Goto -4 8 | Get ENTRIES Long 9 | Get FC_SIZE asize 10 | Get TEMPNAME basename 11 | 12 | XMath TABLE_SIZE "ENTRIES * 0x14" 13 | XMath TABLE "FC_SIZE - TABLE_SIZE - 4" 14 | 15 | For A = 1 To ENTRIES 16 | Goto TABLE 17 | Get MISC1 Long 18 | Get SIZE Long 19 | Get OFFSET Long 20 | 21 | String FILENAME P "%TEMPNAME%_%A%.ogg" 22 | 23 | Log FILENAME OFFSET SIZE 24 | 25 | Math TABLE + 0x14 26 | Next A 27 | 28 | 29 | -------------------------------------------------------------------------------- /QuickBMS/Dreamcast/Bang_Gunship_Elite_(Dreamcast)_TOC-PAK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Bang! Gunship Elite (Dreamcast) 3 | # TOC/PAK extract 4 | # QuickBMS script by DKDave, 2021 5 | # ================================================================================ 6 | 7 | Open FDDE "PAK" 1 8 | 9 | Get FILES Long 10 | Get JUNK Long 11 | XMath NAME_DATA "(FILES * 0x0c) + 8" 12 | Math ENTRY = 8 13 | 14 | For A = 0 < FILES 15 | Goto ENTRY 16 | Get NAME_OFFSET Short 17 | Math NAME_OFFSET + NAME_DATA 18 | Get NAME_SIZE Short 19 | Get OFFSET Long 20 | Get SIZE Long 21 | Goto NAME_OFFSET 22 | GetDString FILENAME NAME_SIZE 23 | 24 | Log FILENAME OFFSET SIZE 1 25 | 26 | Math ENTRY + 0x0c 27 | Next A 28 | -------------------------------------------------------------------------------- /QuickBMS/GameCube/Buffy_Chaos_Bleeds_(GameCube)_BIN-000.bms: -------------------------------------------------------------------------------- 1 | # Buffy The Vampire Slayer: Chaos Bleeds (GameCube) 2 | # Filelist.bin/.000 extract 3 | # QuickBMS script by DKDave, 2023 4 | 5 | 6 | Endian Big 7 | 8 | Open FDDE "000" 1 9 | 10 | Goto 8 11 | Get FILES Long 12 | Goto 0x10 13 | Get SIZE1 Long 14 | XMath NAME_TABLE "SIZE1 + 0x10" 15 | Math NAME_OFF = NAME_TABLE 16 | 17 | Math ENTRY = 0x14 18 | 19 | For A = 0 < FILES 20 | Goto ENTRY 21 | Get SIZE Long 22 | GetDString JUNK 0x10 23 | Get OFFSET Long 24 | 25 | Goto NAME_OFF 26 | Get NAME_OFF2 Long 27 | Math NAME_OFF2 + NAME_OFF 28 | Goto NAME_OFF2 29 | Get FILENAME String 30 | String FILENAME - "x:\buffy\" 31 | 32 | Log FILENAME OFFSET SIZE 1 33 | 34 | Math ENTRY + 0x1c 35 | Math NAME_OFF + 4 36 | Next A 37 | 38 | 39 | -------------------------------------------------------------------------------- /QuickBMS/GameCube/Legend_Of_Spyro_New_Beginning_(GameCube)_GSB.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # The Legend Of Spyro: A New Beginning (GameCube) 3 | # GSB audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Files are extracted as playable DSP files 8 | 9 | 10 | Endian Big 11 | 12 | IDString "SB01" 13 | 14 | Get FILES Long 15 | Math ENTRY = 0x20 16 | XMath DATA_START "(FILES * 0x60) + 0x20" 17 | 18 | For A = 0 < FILES 19 | Goto ENTRY 20 | Get FILENAME String 21 | String FILENAME + ".dsp" 22 | Padding 0x20 23 | Get OFFSET Long 24 | Math OFFSET + DATA_START 25 | Get SAMP_COUNT Long 26 | Get DATA_SIZE Long 27 | Get RATE Short 28 | Get JUNK Long 29 | SavePos COEFF_OFFSET 30 | XMath NIB_COUNT "DATA_SIZE * 2" 31 | 32 | Log MEMORY_FILE 0 0 33 | PutVarChr MEMORY_FILE 0 SAMP_COUNT Long 34 | PutVarChr MEMORY_FILE 4 NIB_COUNT Long 35 | PutVarChr MEMORY_FILE 8 RATE Long 36 | PutVarChr MEMORY_FILE 0x1b 0 Byte 37 | 38 | Append 39 | Log MEMORY_FILE COEFF_OFFSET 0x20 40 | Append 41 | 42 | PutVarChr MEMORY_FILE 0x5f 0 Byte 43 | 44 | Append 45 | Log MEMORY_FILE OFFSET DATA_SIZE 46 | Append 47 | 48 | Get MEM_SIZE asize -1 49 | Log FILENAME 0 MEM_SIZE -1 50 | 51 | Math ENTRY + 0x60 52 | Next A 53 | 54 | -------------------------------------------------------------------------------- /QuickBMS/GameCube/Lost_Kingdoms_2_(GameCube)_PPS-SAM.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Lost Kingdoms 2 (GameCube) 3 | # . PPS/.SAM audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Endian Big 9 | 10 | Open FDDE "sam" 1 11 | 12 | Goto 0x10 13 | Get TABLE Long 14 | Math ENTRY = TABLE 15 | Get TEMPNAME basename 16 | 17 | For A = 0 18 | Goto ENTRY 19 | Get ID Short 20 | 21 | If ID = 0xFFFF 22 | Break 23 | Endif 24 | 25 | Get JUNK Short 26 | Get OFFSET Long 27 | Goto 6 0 SEEK_CUR 28 | Get SAMP_RATE Short 29 | Get TYPE Byte 30 | Get SAMP_COUNT Threebyte 31 | XMath SIZE "((SAMP_COUNT + 13) / 14) * 8" 32 | XMath NIB_COUNT "SIZE * 2" 33 | Goto 8 0 SEEK_CUR 34 | Get COEFF_OFF Long 35 | Math COEFF_OFF + TABLE 36 | Math COEFF_OFF + 8 37 | 38 | Log MEMORY_FILE 0 0 39 | PutVarChr MEMORY_FILE 0x1b 0 Byte 40 | PutVarChr MEMORY_FILE 0 SAMP_COUNT Long 41 | PutVarChr MEMORY_FILE 4 NIB_COUNT Long 42 | PutVarChr MEMORY_FILE 8 SAMP_RATE Long 43 | 44 | Append 45 | Log MEMORY_FILE COEFF_OFF 0x20 46 | Append 47 | 48 | PutVarChr MEMORY_FILE 0x5f 0 Byte 49 | 50 | Append 51 | Log MEMORY_FILE OFFSET SIZE 1 52 | Append 53 | 54 | String FILENAME P "%ID%.dsp" 55 | Get MEM_SIZE asize -1 56 | Log FILENAME 0 MEM_SIZE -1 57 | 58 | Math ENTRY + 0x20 59 | Next A 60 | -------------------------------------------------------------------------------- /QuickBMS/GameCube/Pac-Man_World_3_(GameCube)_GCP.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Pac-Man World 3 (GameCube) 3 | # GCP audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Note: The .str files can be played with Foobar/vgmstream - the associated wav file will be automatically detected 8 | 9 | 10 | Endian Big 11 | 12 | Goto 0x0c 13 | Get FILES Long 14 | Get ENTRY Long 15 | Math ENTRY * 0x800 16 | Get NAMES Long 17 | Math NAMES * 0x800 18 | Math NAMES + 0x800 19 | 20 | For A = 0 < FILES 21 | Goto ENTRY 22 | Get OFFSET Long 23 | Math OFFSET * 0x800 24 | Get JUNK Long 25 | Get SIZE Long 26 | Get NAME_OFF Long 27 | Math NAME_OFF + NAMES 28 | Get MISC4 Long 29 | Get MISC5 Long 30 | Get MISC6 Long 31 | 32 | Goto NAME_OFF 33 | Get FILENAME String 34 | 35 | Log FILENAME OFFSET SIZE 36 | 37 | Math ENTRY + 0x20 38 | Next A 39 | 40 | -------------------------------------------------------------------------------- /QuickBMS/GameCube/StarFox_Adventures_(GameCube)_SDI-SAM_v2.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Star Fox Adventures (GameCube) 3 | # Extract audio from SDI/SAM files (sound effects) 4 | # QuickBMS script by DKDave, 2022 (Updated 2023) (v2) 5 | # ================================================================================ 6 | 7 | # This script will extract the audio from the .SAM archives and create playable .DSP files 8 | 9 | 10 | Endian Big 11 | 12 | Open FDDE "sam" 1 13 | Get TEMPNAME basename 14 | 15 | Math ENTRY = 0 16 | 17 | For A = 0 18 | Goto ENTRY 19 | Get ID Short 20 | 21 | If ID = 0xFFFF 22 | Break 23 | Endif 24 | 25 | Get JUNK Short 26 | Get OFFSET Long 27 | Goto 6 0 SEEK_CUR 28 | Get SAMP_RATE Short 29 | Get TYPE Byte 30 | Get SAMP_COUNT Threebyte 31 | XMath SIZE "((SAMP_COUNT + 13) / 14) * 8" 32 | XMath NIB_COUNT "SIZE * 2" 33 | Goto 8 0 SEEK_CUR 34 | Get COEFF_OFF Long 35 | Math COEFF_OFF + TABLE 36 | Math COEFF_OFF + 8 37 | 38 | Log MEMORY_FILE 0 0 39 | PutVarChr MEMORY_FILE 0x1b 0 Byte 40 | PutVarChr MEMORY_FILE 0 SAMP_COUNT Long 41 | PutVarChr MEMORY_FILE 4 NIB_COUNT Long 42 | PutVarChr MEMORY_FILE 8 SAMP_RATE Long 43 | 44 | Append 45 | Log MEMORY_FILE COEFF_OFF 0x20 46 | Append 47 | 48 | PutVarChr MEMORY_FILE 0x5f 0 Byte 49 | 50 | Append 51 | Log MEMORY_FILE OFFSET SIZE 1 52 | Append 53 | 54 | String FILENAME P "%ID%.dsp" 55 | Get MEM_SIZE asize -1 56 | Log FILENAME 0 MEM_SIZE -1 57 | 58 | Math ENTRY + 0x20 59 | Next A 60 | 61 | 62 | -------------------------------------------------------------------------------- /QuickBMS/GameCube/StarFox_Assault_(GameCube)_CHD-CBD_v2.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Star Fox Assault (GameCube) 3 | # CHD/CBD audio extract 4 | # QuickBMS script by DKDave, 2022 5 | # ================================================================================ 6 | 7 | # Notes: 8 | # Use with the .CHD file, the .CBD data file will be automatically detected 9 | # Some CBD data files are blank and will be ignored 10 | 11 | 12 | Endian Big 13 | 14 | IDString "CHDp" 15 | 16 | Open FDDE "cbd" 1 17 | 18 | Get TEMPNAME basename 19 | Get CBD_SIZE asize 1 20 | 21 | If CBD_SIZE = 0 22 | Print "CBD data is empty - nothing to extract." 23 | Exit 24 | Endif 25 | 26 | Goto 0x08 27 | Get FILES Short 28 | Get JUNK Short 29 | Math ENTRY = 0x10 30 | 31 | For A = 0 < FILES 32 | Goto ENTRY 33 | Get OFFSET Long 34 | Goto 0x4c 0 SEEK_CUR 35 | SavePos DSP_HEADER 36 | Get SAMP_COUNT Long 37 | XMath SIZE "((SAMP_COUNT + 13) / 14) * 8" # Data size 38 | 39 | Log MEMORY_FILE DSP_HEADER 0x60 40 | Append 41 | Log MEMORY_FILE OFFSET SIZE 1 42 | Append 43 | 44 | String FILENAME P "%TEMPNAME%_%A%.dsp" 45 | Get MEM_SIZE asize -1 46 | Log FILENAME 0 MEM_SIZE -1 47 | 48 | Math ENTRY + 0xb0 49 | Next A 50 | 51 | -------------------------------------------------------------------------------- /QuickBMS/Midnight_Club_LA_CSR.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Midnight Club: LA (XBox 360/PS3) 3 | # CSR file decompression 4 | # QuickBMS script by Dave, 2021 5 | # ================================================================================ 6 | 7 | 8 | Get FILE_ID Long 9 | 10 | If FILE_ID = 0x52534306 # PS3 11 | Comtype zlib 12 | 13 | Get TEMPNAME basename 14 | Get ZSIZE asize 15 | Math ZSIZE - 12 16 | 17 | String FILENAME P "%TEMPNAME%_dec" 18 | 19 | CLog FILENAME 0x0c ZSIZE 0x2000000 20 | 21 | Endif 22 | 23 | 24 | If FILE_ID = 0x52534305 # XBOX360 25 | Comtype xmemlzx 26 | 27 | Get TEMPNAME basename 28 | Get ZSIZE asize 29 | Math ZSIZE - 0x14 30 | 31 | String FILENAME P "%TEMPNAME%_dec" 32 | 33 | CLog FILENAME 0x14 ZSIZE 0x2000000 34 | 35 | Endif 36 | -------------------------------------------------------------------------------- /QuickBMS/Mobile/Family_Hero_(Android)_afgpack.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Family Hero (Android) 3 | # .afgpack extract 4 | # QuickBMS script by DKDave, 2022 5 | # ================================================================================ 6 | 7 | # Note: the extracted files don't have extensions 8 | 9 | 10 | IDString "RDFZ" 11 | 12 | # Decompress filenames 13 | 14 | Goto 0x0c 15 | Get ZSIZE Long 16 | Get SIZE Long 17 | Math ZSIZE - 4 18 | 19 | CLog MEMORY_FILE 0x14 ZSIZE SIZE 20 | 21 | 22 | # Create folder/filename arrays 23 | 24 | Goto 0x10 -1 25 | 26 | For A = 0 To 1 27 | Get ENTRIES Long -1 28 | 29 | For B = 0 < ENTRIES 30 | Get LEN Long -1 31 | GetDString TEXT LEN -1 32 | PutArray A B TEXT 33 | Next B 34 | 35 | Next A 36 | 37 | 38 | XMath ENTRY "ZSIZE + 0x14" 39 | 40 | Goto ENTRY 41 | Get FILES Long 42 | SavePos ENTRY 43 | 44 | For A = 0 < FILES 45 | Goto ENTRY 46 | Get OFFSET Long 47 | Get ZSIZE Long 48 | Get FOLDER_IDX Long # folder name 49 | Get FILE_IDX Long # filename 50 | Get FLAG Long # 1 = compressed, 0 = uncompressed 51 | 52 | GetArray FOLDER_NAME 0 FOLDER_IDX 53 | GetArray FILENAME 1 FILE_IDX 54 | String FILENAME P "%FOLDER_NAME%\%FILENAME%" 55 | 56 | If FLAG = 0 57 | Log FILENAME OFFSET ZSIZE 58 | Else 59 | Goto OFFSET 60 | Get SIZE Long 61 | SavePos OFFSET 62 | Math ZSIZE - 4 63 | CLog FILENAME OFFSET ZSIZE SIZE 64 | Endif 65 | 66 | Math ENTRY + 0x14 67 | Next A 68 | 69 | -------------------------------------------------------------------------------- /QuickBMS/Mobile/Family_Hero_(Android)_misc.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Family Hero (Android) 3 | # Extract extensionless archives 4 | # QuickBMS script by DKDave, 2022 5 | # ================================================================================ 6 | 7 | Comtype deflate 8 | 9 | Goto 0x0c 10 | Get TABLE Long 11 | 12 | Goto TABLE 13 | Get FILES Long 14 | 15 | For A = 0 < FILES 16 | Get LEN Byte 17 | SavePos TEMP1 18 | Get BYTE2 Byte 19 | 20 | If BYTE2 = 1 21 | GetDString FILENAME LEN 22 | Else 23 | Goto TEMP1 24 | GetDString FILENAME LEN 25 | Endif 26 | 27 | Get OFFSET Long 28 | Get ZSIZE Long 29 | Get MISC Long 30 | Get SIZE Long 31 | GetDString JUNK 0x44 32 | 33 | If ZSIZE <> SIZE 34 | CLog FILENAME OFFSET ZSIZE SIZE 35 | Else 36 | Log FILENAME OFFSET ZSIZE 37 | Endif 38 | 39 | Next A 40 | 41 | -------------------------------------------------------------------------------- /QuickBMS/Mobile/Icy_Tower_(Nokia_N9)_PAK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Icy Tower (GameLion) (Nokia N9) 3 | # PAK extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Should work with other N9 GameLion games 8 | 9 | 10 | ComType lzma_dynamic 11 | 12 | Get DATA_START Long 13 | Math OFFSET = DATA_START 14 | XMath ZSIZE "OFFSET - 0x0c" 15 | Get BLOCK_SIZE Long 16 | Get SIZE Long 17 | 18 | CLog MEMORY_FILE 0x0c ZSIZE SIZE 19 | 20 | XMath FILES "SIZE / 4" 21 | 22 | For A = 0 < FILES 23 | Get BLOCK_END Long -1 24 | XMath FLAG "(BLOCK_END & 0x80000000) >> 31" # 0 = uncompressed, 1 = compressed 25 | XMath BLOCK_END "(BLOCK_END & 0x7fffffff) + DATA_START" 26 | XMath ZSIZE "BLOCK_END - OFFSET" 27 | 28 | Append 29 | 30 | If FLAG = 0 31 | Log MEMORY_FILE2 OFFSET BLOCK_SIZE 32 | Else 33 | CLog MEMORY_FILE2 OFFSET ZSIZE BLOCK_SIZE 34 | Endif 35 | 36 | Append 37 | 38 | Math OFFSET + ZSIZE 39 | Next A 40 | 41 | 42 | # Decompressed archive is now in MEMORY_FILE2 43 | 44 | Goto 0 -2 45 | Get FILES Long -2 46 | XMath NAMES "(FILES * 12) + 8" 47 | 48 | Math ENTRY = 8 49 | 50 | For A = 0 < FILES 51 | Goto ENTRY -2 52 | Get OFFSET Long -2 53 | Get SIZE Long -2 54 | Get LEN Long -2 55 | Goto NAMES -2 56 | Get FILENAME String -2 57 | SavePos NAMES -2 58 | 59 | Log FILENAME OFFSET SIZE -2 60 | 61 | Math ENTRY + 12 62 | Next A 63 | 64 | 65 | -------------------------------------------------------------------------------- /QuickBMS/Mobile/Need_For_Speed_No_Limits_(Mobile)_SB3D.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Need For Speed: No Limits (Mobile) 3 | # .sb3d extract 4 | # QuickBMS script by Dave, 2021 5 | # ================================================================================ 6 | 7 | # This script will extract and decompress all of the data parts 8 | # Further analysis will be required to combine the files correctly for the models 9 | 10 | 11 | ComType ZSTD 12 | 13 | Get TEMPNAME basename 14 | 15 | FindLoc BULK_OFFSET String "BULK" 0 "" 16 | FindLoc BARG_OFFSET String "BARG" 0 "" 17 | 18 | Goto BULK_OFFSET 19 | Get JUNK Long 20 | Get BULK_SIZE Long 21 | Get JUNK Long 22 | SavePos TEMP1 23 | XMath DATA_START "BARG_OFFSET + 12" 24 | XMath ENTRIES "BULK_SIZE / 8" 25 | 26 | 27 | For A = 0 < ENTRIES 28 | Goto TEMP1 29 | Get OFFSET Long 30 | Get ZSIZE Long 31 | Math OFFSET + DATA_START 32 | 33 | Goto OFFSET 34 | Get TYPE Long # 0 = not compressed, 2 = compressed 35 | Get SIZE Long 36 | 37 | If TYPE = 2 38 | Math OFFSET + 16 39 | Math ZSIZE - 16 40 | String FILENAME P "%TEMPNAME%_%A%" 41 | CLog FILENAME OFFSET ZSIZE SIZE 42 | Endif 43 | 44 | Math TEMP1 + 8 45 | Next A 46 | 47 | 48 | -------------------------------------------------------------------------------- /QuickBMS/Mobile/Ragnarok_Origin_(Mobile)_PKG.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Ragnarok Origin 3 | # PKG extract 4 | # QuickBMS script by DKDave, 2022 5 | # ================================================================================ 6 | 7 | 8 | Get TABLE Long 9 | Math TABLE + 0xa 10 | Goto TABLE 11 | Get FILES Long 12 | 13 | For A = 0 < FILES 14 | Get TEXT_LEN Long 15 | GetDString FILENAME TEXT_LEN 16 | GetDString JUNK 0x14 17 | Get OFFSET Long 18 | Get JUNK Long 19 | Get SIZE Long 20 | Get JUNK Long 21 | 22 | Log FILENAME OFFSET SIZE 23 | 24 | Next A 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /QuickBMS/Mobile/Royal_Chaos_(Android).bms: -------------------------------------------------------------------------------- 1 | # Royal Chaos (Android) 2 | # main.obb extract 3 | # QuickBMS script by DKDave, 2022 4 | 5 | 6 | Comtype gzip 7 | 8 | Get ZSIZE Long 9 | Goto ZSIZE 10 | Get SIZE Long 11 | Math ZSIZE - 4 12 | 13 | CLog MEMORY_FILE 4 ZSIZE SIZE 14 | 15 | Math OFFSET = 0 16 | Math DATA_OFFSET = ZSIZE 17 | Math DATA_OFFSET + 8 18 | 19 | For A = 0 20 | If OFFSET = SIZE 21 | Break 22 | Endif 23 | 24 | Goto OFFSET -1 25 | GetCT TEXT1 String 0x7c -1 26 | 27 | String MISC v TEXT1 "," FILENAME SIZE2 28 | Math SIZE2 = SIZE2 29 | 30 | Log FILENAME DATA_OFFSET SIZE2 31 | 32 | SavePos OFFSET -1 33 | Math DATA_OFFSET + SIZE2 34 | 35 | Next A 36 | 37 | -------------------------------------------------------------------------------- /QuickBMS/Multi-Game Archives/3DO_Company_ASB-ATX.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # ASB audio extract 3 | # QuickBMS script by DKDave, 2023 4 | # ================================================================================ 5 | 6 | # Should work for various games by The 3DO Company: 7 | 8 | # Heroes Of Might & Magic: Quest For The Dragonbone Staff (PS2) 9 | # Warriors Of Might & Magic (PS2) 10 | # Shifters Of Might & Magic (PS2) 11 | 12 | 13 | Open FDDE "ATX" 1 14 | 15 | Goto 0x08 16 | Get FILES Long 17 | Get TEMPNAME basename 18 | 19 | Math ENTRY = 0x14 20 | Math NAME_OFF = 0 21 | 22 | For A = 0 < FILES 23 | Goto ENTRY 24 | Get OFFSET Long 25 | Goto OFFSET 26 | Get SIZE Long 27 | Math OFFSET + 0x24 28 | Goto NAME_OFF 1 29 | 30 | GetCT FILENAME String 0x09 1 31 | GetCT JUNK String 0x0A 1 32 | String FILENAME + ".vag" 33 | SavePos NAME_OFF 1 34 | 35 | Log MEMORY_FILE OFFSET SIZE 36 | PutVarChr MEMORY_FILE 0 0x70474156 Long 37 | Log FILENAME 0 SIZE -1 38 | 39 | Math ENTRY + 4 40 | Next A 41 | 42 | 43 | -------------------------------------------------------------------------------- /QuickBMS/Multi-Game Archives/Climax_Action_Games_ARC.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Climax Action games 3 | # ARC extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Works on the following Climax Action games that I've tested: 8 | 9 | # Silent Hill: Shattered Memories (PS2) 10 | # Ghost Rider (PS2) 11 | 12 | 13 | IDString "A2.0" 14 | 15 | ComType zlib 16 | 17 | Get FILES Long 18 | Get DATA_START Long 19 | Get FILENAMES Long 20 | 21 | Math ENTRY = 0x14 22 | 23 | For A = 0 < FILES 24 | Goto ENTRY 25 | Get FNAME_OFFSET Long 26 | Get OFFSET Long 27 | Get ZSIZE Long 28 | Get SIZE Long 29 | Math FNAME_OFFSET + FILENAMES 30 | Goto FNAME_OFFSET 31 | Get FILENAME String 32 | 33 | If SIZE = 0 34 | Log FILENAME OFFSET ZSIZE 35 | Else 36 | CLog FILENAME OFFSET ZSIZE SIZE 37 | Endif 38 | 39 | Math ENTRY + 0x10 40 | Next A 41 | -------------------------------------------------------------------------------- /QuickBMS/Multi-Game Archives/Krome_Studios_RKV.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Krome Studios RKV extract 3 | # QuickBMS script by DKDave, 2023 4 | # ================================================================================ 5 | 6 | # Tested on the following games: 7 | 8 | # Legend Of Spyro: A New Beginning (PS2, 2006) 9 | # Legend Of Spyro: The Eternal Night (PS2, 2007) 10 | # Star Wars: The Force Unleashed (PS2, 2008) 11 | 12 | 13 | IDString "RKV2" 14 | 15 | Get FILES Long 16 | 17 | Goto 0x14 18 | Get ENTRY Long 19 | XMath NAMES "ENTRY + (FILES * 0x14)" 20 | 21 | For A = 0 < FILES 22 | Goto ENTRY 23 | Get NAME_OFF Long 24 | Get JUNK Long 25 | Get SIZE Long 26 | Get OFFSET Long 27 | Math NAME_OFF + NAMES 28 | Goto NAME_OFF 29 | Get FILENAME String 30 | 31 | Log FILENAME OFFSET SIZE 32 | 33 | Math ENTRY + 0x14 34 | Next A 35 | 36 | -------------------------------------------------------------------------------- /QuickBMS/Multi-Game Archives/Platinum_Games_PKZ.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Platinum Games 3 | # .PKZ Extract 4 | # QuickBMS script by DKDave, 2023 (v2) 5 | # ================================================================================ 6 | 7 | # Used in Astral Chain (2019), Bayonetta 3 (2022) + others 8 | 9 | 10 | IDString "pkzl" 11 | 12 | Goto 0x10 13 | Get FILES Long 14 | Get ENTRY Long 15 | XMath NAMES "ENTRY + (FILES * 0x20)" 16 | Goto NAMES 17 | Get COMP_TYPE String 18 | 19 | If COMP_TYPE = "None" 20 | Comtype "" 21 | Elif COMP_TYPE = "ZStandard" 22 | Comtype zstd 23 | Elif COMP_TYPE = "OodleKraken" 24 | Comtype oodle 25 | Else 26 | Print "Unknown compression: %COMP_TYPE%" 27 | Exit 28 | Endif 29 | 30 | For A = 0 < FILES 31 | Goto ENTRY 32 | Get NAME_OFF LongLong 33 | Math NAME_OFF + NAMES 34 | Get SIZE LongLong 35 | Get OFFSET LongLong 36 | Get ZSIZE LongLong 37 | Goto NAME_OFF 38 | Get FILENAME String 39 | 40 | If ZSIZE = SIZE 41 | Log FILENAME OFFSET ZSIZE 42 | Else 43 | CLog FILENAME OFFSET ZSIZE SIZE 44 | Endif 45 | 46 | Math ENTRY + 0x20 47 | Next A 48 | 49 | -------------------------------------------------------------------------------- /QuickBMS/Nights_Into_Dreams_DDM.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Nights Into Dreams 3 | # DDM extract 4 | # QuickBMS script by Dave, 2020 5 | # ================================================================================ 6 | 7 | 8 | FindLoc DSFN_OFFSET String "DSFN" 0 "" 9 | 10 | Goto DSFN_OFFSET 11 | Get JUNK Long 12 | Get CHUNK_SIZE Long 13 | Get JUNK Short 14 | Get FILE_COUNT Long 15 | Get JUNK Short 16 | 17 | For A = 1 To FILE_COUNT 18 | Get FILENAME String 19 | String FILENAME - "E:\" 20 | PutArray 0 A FILENAME 21 | Next A 22 | 23 | XMath DSCK_OFFSET "DSFN_OFFSET + CHUNK_SIZE + 8" 24 | 25 | For A = 1 To FILE_COUNT 26 | Goto DSCK_OFFSET 27 | Get JUNK Long 28 | Get CHUNK_SIZE Long 29 | Get SIZE Long 30 | XMath OFFSET "DSCK_OFFSET + 0x10" 31 | GetArray FILENAME 0 A 32 | 33 | Log FILENAME OFFSET SIZE 34 | 35 | XMath DSCK_OFFSET "DSCK_OFFSET + CHUNK_SIZE + 8" 36 | Next A 37 | -------------------------------------------------------------------------------- /QuickBMS/Nintendo DS/American_Girl_Kit_Mystery_Challenge_(NDS)_PAK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # American Girl: Kit Mystery Challenge (2008, NDS) 3 | # .PAK extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Comtype jcalg 9 | 10 | Get FILES Long 11 | 12 | Math ENTRY = 4 13 | 14 | For A = 0 < FILES 15 | Goto ENTRY 16 | Get HASH Long 17 | Get ENTRY2 Long 18 | Get TOTAL_SIZE Long 19 | Get PARTS Long 20 | 21 | XMath OFFSET "ENTRY2 + (PARTS * 4)" # start of compressed data blocks for this file 22 | 23 | Log MEMORY_FILE 0 0 24 | 25 | For B = 0 < PARTS 26 | Goto ENTRY2 27 | Get PART_END Long 28 | Goto OFFSET 29 | Get COMP Long # 0 = uncompressed block, 1 = compressed block 30 | Get SIZE Long 31 | SavePos OFFSET 32 | XMath ZSIZE "PART_END - OFFSET" 33 | 34 | If COMP = 0 35 | Append 36 | Log MEMORY_FILE OFFSET SIZE 37 | Append 38 | Else 39 | Set MEMORY_FILE2 binary "JC\x00\x00\x00\x00\x00\x00\x00\x00" # fake block header for QuickBMS 40 | Append 41 | Log MEMORY_FILE2 OFFSET ZSIZE 42 | Append 43 | XMath ZSIZE2 "ZSIZE + 10" 44 | 45 | Append 46 | CLog MEMORY_FILE 0 ZSIZE2 SIZE -2 47 | Append 48 | Endif 49 | 50 | Math OFFSET + ZSIZE 51 | Math ENTRY2 + 4 52 | Next B 53 | 54 | Get MEM_SIZE asize -1 # Should be same as TOTAL_SIZE 55 | 56 | String FILENAME P "FILESYSTEM_%A%" 57 | Log FILENAME 0 MEM_SIZE -1 58 | 59 | Math ENTRY + 0x10 60 | Next A 61 | 62 | 63 | -------------------------------------------------------------------------------- /QuickBMS/Nintendo DS/Assassins_Creed_Altairs_Chronicles_(NDS)_BAR.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Assassin's Creed: Altair's Chronicles (DS) 3 | # .bar extract 4 | # QuickBMS script by Dave, 2020 5 | # ================================================================================ 6 | 7 | Get ENTRIES Short 8 | XMath DATA_START "(ENTRIES * 4) + 2" 9 | Math ENTRIES - 1 10 | 11 | 12 | Set ENTRY_START Long 2 13 | 14 | For A = 1 to ENTRIES 15 | Goto ENTRY_START 16 | 17 | Get OFFSET Long 18 | Get OFFSET2 Long 19 | XMath SIZE "OFFSET2 - OFFSET" 20 | Math OFFSET + DATA_START 21 | 22 | String FILENAME = "sounds_" 23 | String FILENAME + A 24 | String FILENAME + ".wav" 25 | 26 | If SIZE <> 0 27 | Log FILENAME OFFSET SIZE 28 | Endif 29 | 30 | Math ENTRY_START + 4 31 | 32 | Next A 33 | 34 | -------------------------------------------------------------------------------- /QuickBMS/Nintendo DS/Sprung_(NDS)_filesystem.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Sprung (NDS) 3 | # filesystem.bin extract 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | 8 | Endian Big 9 | 10 | Goto 2 11 | Get FILES Short 12 | Math OFFSET = 4 13 | 14 | For A = 0 < FILES 15 | Goto OFFSET 16 | Padding 4 17 | Get FILENAME String 18 | Padding 4 19 | Get SIZE Long 20 | Get MISC1 Long # Could be compression flag, but always 0 21 | SavePos OFFSET 22 | 23 | Log FILENAME OFFSET SIZE 24 | 25 | Math OFFSET + SIZE 26 | Next A 27 | 28 | -------------------------------------------------------------------------------- /QuickBMS/Ollie_King_(Arcade)_DIR-FIL-BIN.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Kodai Ouja Kyouryuu King (Ollie King) (Arcade) 3 | # FIL/DIR/BIN extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the DIR file 8 | 9 | 10 | comtype NISLZS 11 | 12 | Open FDDE "fil" 1 13 | Open FDDE "bin" 2 14 | 15 | Get FOLDER_COUNT asize 16 | Math FOLDER_COUNT / 0x28 17 | 18 | For A = 0 < FOLDER_COUNT 19 | Get START_FILE Long 20 | Get FILE_COUNT Long 21 | GetDString FOLDER_NAME 0x20 22 | 23 | XMath FILE_OFF "START_FILE * 0x2c" 24 | Goto FILE_OFF 1 25 | 26 | For B = 0 < FILE_COUNT 27 | Get OFFSET Long 1 28 | Get SIZE Long 1 29 | Get COMP_FLAG Long 1 30 | GetDString FILENAME 0x20 1 31 | String OUTFILE P "%FOLDER_NAME%\%FILENAME%" 32 | 33 | If COMP_FLAG = 0 34 | Log OUTFILE OFFSET SIZE 2 35 | Else 36 | Goto OFFSET 2 37 | Get JUNK Long 2 # Should be ZZSL 38 | Get SIZE Long 2 39 | Get ZSIZE Long 2 40 | Math ZSIZE - 12 41 | SavePos OFFSET2 2 42 | CLog OUTFILE OFFSET2 ZSIZE SIZE 2 43 | Endif 44 | 45 | Next B 46 | 47 | Next A 48 | 49 | -------------------------------------------------------------------------------- /QuickBMS/Once_Human_Beta_NPK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Once Human (Beta) 3 | # NPK archive extract 4 | # QuickBMS script by DKDave, 2023 - updated 3 January 2024 5 | # ================================================================================ 6 | 7 | # Should work for older NetEase games with the same archive format 8 | 9 | 10 | IDString "NXPK" 11 | 12 | Get FILES Long 13 | Goto 0x14 14 | Get ENTRY Long 15 | XMath NAMES "ENTRY + (FILES * 0x1c) + 0x10" 16 | 17 | For A = 0 < FILES 18 | Goto ENTRY 19 | Get MISC1 Long 20 | Get OFFSET Long 21 | Get ZSIZE Long 22 | Get SIZE Long 23 | Get MISC2 Long 24 | Get MISC3 Long 25 | Get COMP_TYPE Long 26 | Goto NAMES 27 | Get FILENAME String 28 | SavePos NAMES 29 | 30 | If ZSIZE <> SIZE # Compressed files 31 | If COMP_TYPE = 2 32 | ComType LZ4 33 | CLog FILENAME OFFSET ZSIZE SIZE 34 | 35 | ElIf COMP_TYPE = 3 36 | Comtype ZSTD 37 | CLog FILENAME OFFSET ZSIZE SIZE 38 | Endif 39 | 40 | Else # Uncompressed files 41 | If ZSIZE > 0 42 | Log FILENAME OFFSET ZSIZE 43 | Endif 44 | Endif 45 | 46 | Math ENTRY + 0x1c 47 | Next A 48 | 49 | 50 | -------------------------------------------------------------------------------- /QuickBMS/PC/Blood_&_Magic_(PC)_MAP-STF.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Blood & Magic (PC) 3 | # .MAP / .STF extract 4 | # QuickBMS script by DKDave, 2021 5 | # ================================================================================ 6 | 7 | # Use this script on the .MAP file 8 | 9 | Open FDDE "STF" 1 10 | 11 | Get TEMPNAME basename 12 | Get ENTRIES asize 13 | Math ENTRIES / 0x6f 14 | Math ENTRY = 0 15 | 16 | For A = 1 To ENTRIES 17 | Goto ENTRY 18 | Get JUNK Long 19 | Get JUNK Threebyte 20 | Get OFFSET Long 21 | 22 | Goto OFFSET 1 23 | Get JUNK Long 1 24 | Get JUNK Short 1 25 | Get SIZE Long 1 26 | Math OFFSET + 0x1c 27 | Goto OFFSET 1 28 | GetDString FILE_ID 4 1 29 | 30 | If FILE_ID = "RIFF" 31 | String FILENAME P "%TEMPNAME%_%A%.wav" 32 | Else 33 | String FILENAME P "%TEMPNAME%_%A%" 34 | Endif 35 | 36 | Log FILENAME OFFSET SIZE 1 37 | 38 | Math ENTRY + 0x6f 39 | Next A 40 | 41 | -------------------------------------------------------------------------------- /QuickBMS/PC/Blood_Omen_2_Legacy_Of_Kain_(PC)_RKV.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Blood Omen 2: Legacy Of Kain (PC, 2002) 3 | # PC.RKV extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Goto 0x27 9 | Get FILES Long 10 | 11 | For A = 0 < FILES 12 | Get MISC1 Long 13 | Get LEN Long 14 | GetDString FILENAME LEN 15 | String FILENAME + ".ogg" 16 | Get MISC2 Long 17 | Get OFFSET Long 18 | Get SIZE Long 19 | Math OFFSET * 0x800 20 | Math OFFSET + 0x1a000 21 | 22 | Log FILENAME OFFSET SIZE 23 | Next A 24 | 25 | -------------------------------------------------------------------------------- /QuickBMS/PC/Chaos_Control_(PC)_GB.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Chaos Control (PC, 1995) 3 | # CHAOS.GB extract 4 | # QuickBMS script by Dave, 2020 5 | # ================================================================================ 6 | 7 | IDString "\x01\x55\x42\x41" 8 | 9 | Get DIR_END Long 10 | 11 | Math FILE_ENTRY = 0x08 12 | 13 | For 14 | If FILE_ENTRY = DIR_END 15 | Break 16 | Endif 17 | 18 | Goto FILE_ENTRY 19 | GetDString FILENAME 0x0d 20 | Get OFFSET Long 21 | Get SIZE Long 22 | Get JUNK Long # possibly uncompressed size (not used in this game) 23 | 24 | Log FILENAME OFFSET SIZE 25 | 26 | Math FILE_ENTRY + 0x19 27 | 28 | Next 29 | -------------------------------------------------------------------------------- /QuickBMS/PC/Cold_Zero_Last_Stand_(PC)_GLT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Cold Zero: The Last Stand (aka Cold Zero: No Mercy) (PC, 2003) 3 | # .glt extract 4 | # QuickBMS script by Dave, 2021 5 | # ================================================================================ 6 | 7 | Comtype LZAH 8 | 9 | FindLoc OFFSET String "EndOfFile" 0 "" 10 | Math OFFSET - 8 11 | Goto OFFSET 12 | Get ENTRIES Long 13 | Get FILE_END asize 14 | 15 | XMath ENTRY "FILE_END - (ENTRIES * 0x80)" 16 | Math ENTRIES - 1 # Final entry isn't a proper file 17 | 18 | For A = 1 To ENTRIES 19 | Goto ENTRY 20 | Get MISC1 Short 21 | Get MISC2 Short 22 | Get ZSIZE Long 23 | Get OFFSET Long 24 | Get FILENAME String 25 | 26 | Goto OFFSET 27 | GetDString JUNK 12 # "DE ZLock" etc. 28 | Get SIZE Long 29 | Math ZSIZE - 16 30 | Math OFFSET + 16 31 | 32 | CLog FILENAME OFFSET ZSIZE SIZE 33 | 34 | Math ENTRY + 0x80 35 | Next A 36 | 37 | -------------------------------------------------------------------------------- /QuickBMS/PC/Comanche_3_(PC)_RES.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Comanche 3 (PC, 1997) 3 | # RESOURCE.RES extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | IDString "RESOURCE2xxx" 9 | 10 | Get FILES Long 11 | Math ENTRY = 0x10 12 | 13 | For A = 0 < FILES 14 | Goto ENTRY 15 | Goto 12 0 SEEK_CUR 16 | Get OFFSET Long 17 | Math OFFSET + 0x14 18 | Get SIZE Long 19 | 20 | Goto OFFSET 21 | GetDString TYPE 4 22 | 23 | String FILENAME P "C3_%A%" 24 | 25 | If TYPE = "RIFF" 26 | String FILENAME + ".wav" 27 | Elif TYPE = "LZP1" 28 | String FILENAME + ".lzp" 29 | Elif TYPE = "3DO1" 30 | String FILENAME + ".3do1" 31 | Elif TYPE = "MThd" 32 | String FILENAME + ".mid" 33 | Endif 34 | 35 | Log FILENAME OFFSET SIZE 36 | 37 | Math ENTRY + 0x14 38 | Next A 39 | -------------------------------------------------------------------------------- /QuickBMS/PC/Conflict_Desert_Storm_(PC)_DAT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Conflict: Desert Storm (PC) 3 | # ,dat extract 4 | # QuickBMS script by Dave, 2021 5 | # ================================================================================ 6 | 7 | 8 | Get TEMPNAME basename 9 | 10 | Math A = 0 11 | Math ENTRY = 0 12 | 13 | For A 14 | Goto ENTRY 15 | Get MISC1 Long 16 | Get OFFSET Long 17 | Get SIZE Long 18 | 19 | If MISC1 = 0 20 | Break 21 | Endif 22 | 23 | Goto OFFSET 24 | Get FILE_TYPE Long 25 | 26 | String FILENAME P "%TEMPNAME%\%TEMPNAME%_%A%" 27 | 28 | If FILE_TYPE = 0x4a424f45 29 | String FILENAME + ".eobj" 30 | Elif FILE_TYPE = 0x434f4c53 31 | String FILENAME + ".sloc" 32 | Elif FILE_TYPE = 0x20534444 33 | String FILENAME + ".dds" 34 | Elif FILE_TYPE = 0x474e5089 35 | String FILENAME + ".png" 36 | Endif 37 | 38 | Log FILENAME OFFSET SIZE 39 | 40 | Math ENTRY + 0x0c 41 | Next A 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /QuickBMS/PC/Dark_Reign_2_(PC)_ZWP.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Dark Reign 2 (PC, 2000) 3 | # ZWP archive extract 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | 8 | IDString "NORK" 9 | 10 | Goto 8 11 | GET DIRS Long 12 | Get DIR_ENTRY Long 13 | Get FILES Long 14 | Get ENTRY Long 15 | 16 | Goto DIR_ENTRY 17 | 18 | For A = 0 < DIRS 19 | Get LEN Byte 20 | GetDString DIR_NAME LEN 21 | PutArray 0 A DIR_NAME 22 | Next A 23 | 24 | 25 | For A = 0 < FILES 26 | Goto ENTRY 27 | Get DIR_IDX Long 28 | Get LEN Byte 29 | GetDString FILENAME LEN 30 | Get OFFSET Long 31 | Get SIZE Long 32 | Math DIR_IDX - 1 33 | 34 | GetArray DIR_NAME 0 DIR_IDX 35 | String FILENAME P "%DIR_NAME%\%FILENAME%" 36 | 37 | Log FILENAME OFFSET SIZE 38 | 39 | SavePos ENTRY 40 | 41 | Next A 42 | 43 | -------------------------------------------------------------------------------- /QuickBMS/PC/Dark_Reign_Future_Of_War_(PC)_FTG.bms: -------------------------------------------------------------------------------- 1 | # Dark Reign: The Future Of War (PC, 1997) 2 | # FTG audio archive extract 3 | # QuickBMS script by DKDave, 2024 4 | 5 | 6 | IDString "BOTG" 7 | 8 | Get ENTRY Long 9 | Get FILES Long 10 | Goto ENTRY 11 | 12 | For A = 0 < FILES 13 | GetDString FILENAME 0x1c 14 | Get OFFSET Long 15 | Get SIZE Long 16 | Log FILENAME OFFSET SIZE 17 | Next A 18 | 19 | 20 | -------------------------------------------------------------------------------- /QuickBMS/PC/Devil_May_Cry_4_(PC)_ARC.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Devil May Cry 4 (PC) 3 | # .arc extract 4 | # QuickBMS script by Dave, 2020 5 | # ================================================================================ 6 | 7 | ComType XMEMLZX 8 | 9 | IDString "ARC\x00" 10 | 11 | Get JUNK Short 12 | Get ENTRIES Short 13 | 14 | For A = 1 to ENTRIES 15 | 16 | GetDString FILENAME 0x40 17 | Get JUNK Long 18 | Get SIZE Long 19 | Get JUNK Long 20 | Get OFFSET Long 21 | 22 | CLog FILENAME OFFSET SIZE 0x10000000 23 | 24 | Next A 25 | 26 | 27 | -------------------------------------------------------------------------------- /QuickBMS/PC/Dishonored_2_(PC)_PCK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Dishonored 2 (PC) 3 | # .PCK extract 4 | # QuickBMS script by Dave, 2020 5 | # ================================================================================ 6 | 7 | # This script extracts the audio files and creates .wem files playable in Foobar/VGMStream 8 | 9 | 10 | IDString "AKPK" 11 | 12 | Goto 0x0c 13 | Get TEXT_SIZE Long 14 | 15 | XMath BKHD_HEADER "TEXT_SIZE + 0x1c" 16 | 17 | Goto BKHD_HEADER 18 | Get BKHD_COUNT Long 19 | 20 | Get FOLDER_NAME basename 21 | 22 | XMath FILE_TABLE "(BKHD_COUNT * 20) + BKHD_HEADER + 4" 23 | 24 | Goto FILE_TABLE 25 | Get ENTRIES Long 26 | 27 | For A = 1 to ENTRIES 28 | 29 | Get MISC1 Long 30 | Get MISC2 Long 31 | Get SIZE Long 32 | Get OFFSET Long 33 | Get MISC3 Long 34 | 35 | String FILENAME P "%FOLDER_NAME%\File_%A%.wem" 36 | 37 | Log FILENAME OFFSET SIZE 38 | 39 | Next A 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /QuickBMS/PC/Dungeon_Keeper_2_(PC)_SDT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Dungeon Keeper 2 (PC) 3 | # SDT audio extract 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | 8 | Get FILES Long 9 | Math ENTRY = 4 10 | 11 | For A = 0 < FILES 12 | Goto ENTRY 13 | Get OFFSET Long 14 | Goto OFFSET 15 | Get HEADER_SIZE Long 16 | Math OFFSET + HEADER_SIZE 17 | Get SIZE Long 18 | GetDString FILENAME 0x10 19 | 20 | If SIZE <> 0 21 | Log FILENAME OFFSET SIZE 22 | Endif 23 | 24 | Math ENTRY + 4 25 | Next A 26 | 27 | -------------------------------------------------------------------------------- /QuickBMS/PC/Earth_2150_Escape_From_The_Blue_Planet_(PC)_WD.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Earth 2150: Escape From The Blue Planet (PC) 3 | # .WD archive extract 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | 8 | Goto -4 9 | Get TEMP Long 10 | Get OFFSET asize 11 | Math OFFSET - TEMP 12 | XMath ZSIZE "TEMP - 4" 13 | 14 | CLog MEMORY_FILE OFFSET ZSIZE 0x100000 15 | 16 | Goto 8 -1 17 | Get FILES Short -1 18 | 19 | For A = 0 < FILES 20 | Get LEN Byte -1 21 | GetDString FILENAME LEN -1 22 | Get MISC1 Byte -1 23 | Get OFFSET Long -1 24 | Get ZSIZE Long -1 25 | Get SIZE Long -1 26 | 27 | If ZSIZE = SIZE 28 | Log FILENAME OFFSET ZSIZE 29 | Else 30 | CLog FILENAME OFFSET ZSIZE SIZE 31 | Endif 32 | 33 | Next A 34 | 35 | -------------------------------------------------------------------------------- /QuickBMS/PC/Earth_And_Beyond_(PC)_MIX.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Earth And Beyond (PC, 2002) 3 | # MIX archive extract 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | 8 | IDString "MIX1" 9 | 10 | Get ENTRY Long 11 | Get NAMES Long 12 | Math NAMES + 4 13 | Goto ENTRY 14 | Get FILES Long 15 | SavePos ENTRY 16 | 17 | For A = 0 < FILES 18 | Goto ENTRY 19 | Get MISC1 Long 20 | Get OFFSET Long 21 | Get SIZE Long 22 | Goto NAMES 23 | Get LEN Byte 24 | GetDString FILENAME LEN 25 | SavePos NAMES 26 | 27 | Log FILENAME OFFSET SIZE 28 | 29 | Math ENTRY + 12 30 | Next A 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /QuickBMS/PC/Freelancer_(PC)_UTF.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Freelancer (PC) 3 | # UTF audio extract 4 | # QuickBMS script by DKDave, 2020 5 | # ================================================================================ 6 | 7 | IDString "UTF " 8 | 9 | Get TEMPNAME basename 10 | 11 | Goto 0x08 12 | Get FILE_ENTRY Long 13 | Get ENTRIES Long 14 | Math ENTRIES / 0x2c 15 | Goto 0x18 16 | Get NAMES Long 17 | Goto 0x24 18 | Get DATA_START Long 19 | 20 | For A = 1 To ENTRIES 21 | Goto FILE_ENTRY 22 | Get MISC1 Long 23 | Get NAME_OFFSET Long 24 | Math NAME_OFFSET + NAMES 25 | Get MISC2 Short 26 | Get MISC3 Short 27 | Get MISC4 Long 28 | Get OFFSET Long 29 | Math OFFSET + DATA_START 30 | Get SIZE Long 31 | Get MISC5 Long 32 | Get MISC6 Long 33 | Goto NAME_OFFSET 34 | Get FILENAME String 35 | String FILENAME P "%TEMPNAME%\%A%_%FILENAME%.wav" 36 | 37 | If MISC2 = 0x80 38 | Log FILENAME OFFSET SIZE 39 | Endif 40 | 41 | Math FILE_ENTRY + 0x2c 42 | Next A 43 | 44 | -------------------------------------------------------------------------------- /QuickBMS/PC/Guild_Gold_Edition_(PC)_SBF.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # The Guild: Gold Edition (PC) 3 | # .SBF audio extract 4 | # QuickBMS script by DKDave, 2023 (v2) 5 | # ================================================================================ 6 | 7 | # Filenames are not yet read from the .sdf files 8 | 9 | 10 | Goto 0x134 11 | Get FILES Long 12 | 13 | Math ENTRY = 0x144 14 | 15 | For A = 0 < FILES 16 | Goto ENTRY 17 | Get OFFSET Long 18 | GetDString FILENAME 0x32 19 | Get ENTRY_TYPE Short # 1 = 1 file, 2 = multiple files 20 | Goto OFFSET 21 | 22 | If ENTRY_TYPE = 1 23 | Get MISC1 Long 24 | Get SIZE Long 25 | Get MISC2 Long 26 | SavePos OFFSET2 27 | String FILENAME2 P "%FILENAME%_%B%.wav" 28 | Log FILENAME2 OFFSET2 SIZE 29 | 30 | ElIf ENTRY_TYPE = 2 31 | Get FILES2 Long 32 | XMath OFFSET2 "OFFSET + (FILES2 * 0x0c) + 12" 33 | Goto 8 0 SEEK_CUR 34 | 35 | SavePos ENTRY2 36 | 37 | For B = 0 < FILES2 38 | Goto ENTRY2 39 | Get MISC1 Long 40 | Get SIZE Long 41 | Get MISC2 Long 42 | String FILENAME2 P "%FILENAME%_%B%.wav" 43 | Log FILENAME2 OFFSET2 SIZE 44 | 45 | Math OFFSET2 + SIZE 46 | Math ENTRY2 + 12 47 | Next B 48 | 49 | Endif 50 | 51 | Math ENTRY + 0x40 52 | Next A 53 | 54 | -------------------------------------------------------------------------------- /QuickBMS/PC/Gunmetal_(PC)_IDX-DAT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Gunmetal (PC, 1998) 3 | # .IDX / .DAT extract 4 | # QuickBMS script by DKDave, 2021 5 | # ================================================================================ 6 | 7 | IDString "BIGFILE\x1a" 8 | 9 | Open FDDE "DAT" 1 10 | 11 | Get ENTRIES Long 12 | Get FILE_END asize 1 13 | 14 | For A = 1 To ENTRIES 15 | GetDString FILENAME 8 16 | Get OFFSET Long 17 | 18 | If A < ENTRIES 19 | SavePos TEMP1 20 | GetDString JUNK 8 21 | Get OFFSET2 Long 22 | XMath SIZE "OFFSET2 - OFFSET" 23 | Goto TEMP1 24 | Else 25 | XMath SIZE "FILE_END - OFFSET" 26 | Endif 27 | 28 | Log FILENAME OFFSET SIZE 1 29 | 30 | Next A 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /QuickBMS/PC/I_Have_No_Mouth_And_I_Must_Scream_(PC)_RES.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # I Have No Mouth And I Must Scream (PC) 3 | # .RES extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Get TEMPNAME basename 9 | 10 | Goto -8 11 | Get ENTRY Long 12 | Get FILES Long 13 | Goto ENTRY 14 | 15 | For A = 0 < FILES 16 | Goto ENTRY 17 | Get OFFSET Long 18 | Get SIZE Long 19 | 20 | Goto OFFSET 21 | GetDString TYPE 4 22 | String FILENAME P "%TEMPNAME%_%A%" 23 | 24 | If TYPE = "RIFF" 25 | String FILENAME + ".wav" 26 | Elif TYPE = "FORM" 27 | String FILENAME + ".mid" 28 | Endif 29 | 30 | Log FILENAME OFFSET SIZE 31 | 32 | Math ENTRY + 8 33 | Next A 34 | 35 | -------------------------------------------------------------------------------- /QuickBMS/PC/Incredible_Machine_2_(PC)_MAP-001.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Incredible Machine 2 (PC) 3 | # MAP/001 archive extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the .MAP file 8 | # Compressed data within the files is not yet supported 9 | 10 | 11 | Open FDDE "001" 1 12 | 13 | Goto 0x13 14 | Get FILES Short 15 | 16 | For A = 0 < FILES 17 | Get MISC1 Long 18 | Get OFFSET Long 19 | Goto OFFSET 1 20 | GetDString FILENAME 13 1 21 | Get SIZE Long 1 22 | SavePos OFFSET 1 23 | Log FILENAME OFFSET SIZE 1 24 | Next A 25 | 26 | -------------------------------------------------------------------------------- /QuickBMS/PC/LA_Noire_(PC)_audio.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # LA Noire (PC) 3 | # File extract (audio and movies) 4 | # QuickBMS script by DKDave, 2020 5 | # ================================================================================ 6 | 7 | Goto -4 8 | Get FILE_END asize 9 | Get TEMPNAME filename 10 | Get FILE_TABLE Long 11 | XMath FILE_TABLE "FILE_END - FILE_TABLE" 12 | Goto FILE_TABLE 13 | Get JUNK Long 14 | Get ENTRIES Long 15 | SavePos FILE_ENTRY 16 | 17 | For A = 1 To ENTRIES 18 | Goto FILE_ENTRY 19 | Get FILE_ID Long 20 | Get OFFSET Long 21 | Math OFFSET * 0x10 22 | Get SIZE Long 23 | 24 | If TEMPNAME = "audio.big.pc" 25 | String FILENAME P "audio\LA_Noire_%A%.fsb" 26 | 27 | Elif TEMPNAME = "movies.big.pc" 28 | String FILENAME P "movies\LA_Noire_%A%.ogg" 29 | Else 30 | Print "Script not designed for this file." 31 | CleanExit 32 | Endif 33 | 34 | Log FILENAME OFFSET SIZE 35 | 36 | Math FILE_ENTRY + 0x14 37 | Next A 38 | 39 | -------------------------------------------------------------------------------- /QuickBMS/PC/MechWarrior_4_(PC)_MW4.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # MechWarrior 4 3 | # .MW4 archive extractor - from MW4: Vengeance (2000), MW4: Black Knight (2001), MW4: Mercenaries (2002) 4 | # QuickBMS script by DKDave, 2019 5 | ================================================================================ 6 | 7 | IDString "#VBD" 8 | ComType unlzwx 9 | 10 | Goto 0x0c 11 | Get DATA_START Long 12 | Get ENTRIES Short 13 | Get JUNK Short 14 | 15 | For A = 0 < ENTRIES 16 | 17 | Get JUNK Long 18 | Get JUNK Long 19 | Get SIZE Long 20 | Get ZSIZE Long 21 | Get FILE_START Long 22 | Math FILE_START + DATA_START 23 | Get JUNK Short 24 | Get FNAME_LEN Byte 25 | GetDString FILENAME FNAME_LEN 26 | 27 | If SIZE > ZSIZE 28 | CLog FILENAME FILE_START ZSIZE SIZE 29 | Else 30 | Log FILENAME FILE_START ZSIZE 31 | Endif 32 | 33 | Next A 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /QuickBMS/PC/Normal_Fishing_Demo_(PC)_audio.bms: -------------------------------------------------------------------------------- 1 | # Normal Fishing (Demo) (PC) 2 | # Audio extract 3 | # QuickBMS script by DKDave, 2024 4 | 5 | # Use this script on the data.win file, with audiogroup1.dat and audiogroup2.dat in the same folder 6 | 7 | 8 | Open FDSE "audiogroup1.dat" 1 9 | Open FDSE "audiogroup2.dat" 2 10 | 11 | Goto 0x268 # SOND audio table 12 | Get FILES Long 13 | SavePos ENTRY 14 | 15 | For A = 0 < FILES 16 | Goto ENTRY 17 | Get INFO_OFF Long 18 | Goto INFO_OFF 19 | Get FLDR_OFF Long # Absolute offset of folder name (or just song name?) 20 | Get MISC2 Long # Always 0x65 21 | Get MISC3 Long # Always 0 22 | Get FNAME_OFF Long # Absolute offset of filename 23 | Get MISC5 Long 24 | Get MISC6 Long # Some float - volume ? 25 | Get MISC7 Long 26 | Get ARC Long # Archive number (1 or 2) 27 | Get IDX Long # Index of file in corresponding archive 28 | 29 | Goto FLDR_OFF 30 | Get FOLDER String 31 | Goto FNAME_OFF 32 | Get FILENAME String 33 | 34 | XMath INDEX_OFF "(IDX * 4) + 0x14" 35 | Goto INDEX_OFF ARC 36 | Get DATA_OFF Long ARC 37 | Goto DATA_OFF ARC 38 | Get SIZE Long ARC 39 | SavePos OFFSET ARC 40 | 41 | Log FILENAME OFFSET SIZE ARC 42 | 43 | Math ENTRY + 4 44 | Next A 45 | 46 | -------------------------------------------------------------------------------- /QuickBMS/PC/Outforce_(PC)_BOX.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # The Outforce (PC, 2001) 3 | # .BOX extract 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | 8 | Goto -4 9 | Get ENTRY Long 10 | 11 | Goto ENTRY 12 | Get FILES Long 13 | 14 | For A = 0 < FILES 15 | Get FILENAME String 16 | Get OFFSET Long 17 | Get SIZE Long 18 | Log FILENAME OFFSET SIZE 19 | Next A 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /QuickBMS/PC/Revenant_(PC)_PAK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Revenant (PC, 1999) 3 | # SOUND.PAK extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Goto 4 9 | Get FILES Long 10 | Get ENTRY Long 11 | Get NAMES Long 12 | 13 | For A = 0 < FILES 14 | Goto ENTRY 15 | Get OFFSET Long 16 | Get NAME_OFF Long 17 | Math NAME_OFF + NAMES 18 | Get SIZE Long 19 | Goto NAME_OFF 20 | Get FILENAME String 21 | String FILENAME - ".\" 22 | 23 | Log FILENAME OFFSET SIZE 24 | 25 | Math ENTRY + 0x22 26 | Next A 27 | 28 | -------------------------------------------------------------------------------- /QuickBMS/PC/Ring_Of_Elysium_(PC)_SFC.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Ring Of Elysium (PC) 3 | # SFC extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | ComType LZ4 9 | 10 | Get TEMPNAME basename 11 | 12 | Goto 0x8 13 | Get FILES Long 14 | Math ENTRY = 0x0c 15 | 16 | For A = 0 < FILES 17 | Goto ENTRY 18 | GetDString JUNK 8 19 | Get OFFSET Long 20 | Goto OFFSET 21 | Get ZSIZE Long 22 | SavePos OFFSET 23 | Goto ZSIZE 0 SEEK_CUR 24 | Get SIZE Long 25 | 26 | String FILENAME P "%TEMPNAME%_%A%.wem" 27 | CLog FILENAME OFFSET ZSIZE SIZE 28 | 29 | Math ENTRY + 12 30 | Next A 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /QuickBMS/PC/Sacrifice_(PC)_SCP_audio.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Sacrifice (PC) 3 | # .SCP audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | IDString "WAD>" 9 | 10 | Get DIR Long 11 | Get SIZE Long 12 | Get ZSIZE asize 13 | Math ZSIZE - DIR 14 | 15 | CLog MEMORY_FILE DIR ZSIZE SIZE # file table 16 | 17 | Math ENTRY = 0x1c 18 | Math OFFSET = 0x14 19 | Math FILE_END = SIZE 20 | 21 | For A = 0 22 | If ENTRY = FILE_END 23 | Break 24 | Endif 25 | 26 | Goto ENTRY -1 27 | GetDString TYPE1 4 -1 28 | GetDString TYPE2 4 -1 29 | Get ZSIZE Long -1 30 | Get SIZE Long -1 31 | Get MISC1 Long -1 32 | Get TYPE Long -1 # 1 = folder 33 | 34 | If TYPE2 = "RDLF" 35 | String FOLDER_NAME = TYPE1 36 | Endif 37 | 38 | If TYPE2 = "TXET" And FOLDER_NAME = "PMAS" 39 | Goto OFFSET 40 | GetDString FILENAME ZSIZE 41 | String FILENAME + ".wav" 42 | Endif 43 | 44 | If TYPE2 = "PMAS" And FOLDER_NAME = "PMAS" 45 | Goto OFFSET 46 | Goto 0x20 0 SEEK_CUR 47 | SavePos OFFSET2 48 | Goto 4 0 SEEK_CUR 49 | Get SIZE2 Long 50 | Math SIZE2 + 8 51 | 52 | Log FILENAME OFFSET2 SIZE2 53 | Endif 54 | 55 | If TYPE <> 1 56 | Math OFFSET + ZSIZE 57 | Endif 58 | 59 | Math ENTRY + 0x1c 60 | 61 | Next A 62 | 63 | -------------------------------------------------------------------------------- /QuickBMS/PC/Second_Sight_(PC)_PAK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Second Sight (PC) 3 | # .PAK extract 4 | # QuickBMS script by Dave, 2019 5 | # ================================================================================ 6 | 7 | IDString "P4CK" 8 | 9 | Goto 0x04 10 | Get FILE_TABLE Long 11 | Set ENTRY_OFFSET FILE_TABLE 12 | Get ENTRIES Long 13 | Math ENTRIES / 0x10 14 | 15 | For A = 1 to ENTRIES 16 | 17 | Goto ENTRY_OFFSET 18 | Get FNAME_OFF Long 19 | Get OFFSET Long 20 | Get SIZE Long 21 | Math FNAME_OFF + FILE_TABLE 22 | Goto FNAME_OFF 23 | Get FILENAME String 24 | 25 | Log FILENAME OFFSET SIZE 26 | 27 | Math ENTRY_OFFSET + 0x10 28 | Next A 29 | -------------------------------------------------------------------------------- /QuickBMS/PC/Star_Wars_Galaxies_(PC)_TRE.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Star Wars Galaxies 3 | # .TRE extract 4 | # QuickBMS script by DKDave, 2022 5 | # ================================================================================ 6 | 7 | 8 | IDString "EERT5000" 9 | 10 | Goto 0xc 11 | Get FILE1 Long # file table 12 | Get JUNK Long 13 | Get ZSIZE1 Long 14 | Get JUNK Long 15 | Get ZSIZE2 Long 16 | XMath FILE2 "FILE1 + ZSIZE1" # filenames 17 | 18 | CLog MEMORY_FILE FILE1 ZSIZE1 0x10000000 19 | CLog MEMORY_FILE2 FILE2 ZSIZE2 0x10000000 20 | 21 | Get FILES asize -1 22 | Math FILES / 0x18 23 | 24 | Goto 0 -1 25 | 26 | For A = 0 < FILES 27 | Get MISC1 Long -1 28 | Get SIZE Long -1 29 | Get OFFSET Long -1 30 | Get COMP_FLAG Long -1 # compression flag (0 = none, 2 = zlib) 31 | Get ZSIZE Long -1 # 0 if no compression 32 | Get FN_OFF Long -1 # filename offset 33 | Goto FN_OFF -2 34 | Get FILENAME String -2 35 | 36 | If COMP_FLAG = 0 37 | Log FILENAME OFFSET SIZE 38 | Endif 39 | 40 | If COMP_FLAG = 2 41 | CLog FILENAME OFFSET ZSIZE SIZE 42 | Endif 43 | Next A 44 | 45 | -------------------------------------------------------------------------------- /QuickBMS/PC/Starsiege_(PC)_VOL.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Starsiege (PC) 3 | # .vol extract 4 | # QuickBMS script by Dave, 2021 5 | # ================================================================================ 6 | 7 | IDString " VOL" 8 | 9 | Get TEMPNAME basename 10 | Get FILE_TABLE Long 11 | 12 | Goto FILE_TABLE 13 | GetDString JUNK 20 14 | Get TEXT_SIZE Long 15 | SavePos TEXT_DATA 16 | 17 | XMath FILE_TABLE "TEXT_DATA + TEXT_SIZE + 4" 18 | XMath REMAINDER "FILE_TABLE % 2" 19 | 20 | If REMAINDER = 1 21 | Math FILE_TABLE + 1 22 | Endif 23 | 24 | Goto FILE_TABLE 25 | Get ENTRIES Long 26 | SavePos ENTRY 27 | Math ENTRIES / 0x11 28 | 29 | For A = 1 To ENTRIES 30 | Goto ENTRY 31 | Get JUNK Long 32 | Get TEXT_OFF Long 33 | Get OFFSET Long 34 | Math OFFSET + 8 35 | Get SIZE Long 36 | Math TEXT_OFF + TEXT_DATA 37 | Goto TEXT_OFF 38 | Get FILENAME String 39 | 40 | String FILENAME P "%TEMPNAME%\%FILENAME%" 41 | 42 | Log FILENAME OFFSET SIZE 43 | 44 | Math ENTRY + 0x11 45 | Next A 46 | 47 | -------------------------------------------------------------------------------- /QuickBMS/PC/Starsky_&_Hutch_(PC)_wCF.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Starsky & Hutch (PC) 3 | # .wCF extract 4 | # QuickBMS script by Dave, 2020 5 | # ================================================================================ 6 | 7 | IDString "AFHI" 8 | Get ENTRIES Long 9 | Goto 0x28 10 | Get FILE_ENTRY Long 11 | Goto 0x34 12 | Get NAMES_TABLE Long 13 | Goto 0x3c 14 | Get DATA_START Long 15 | 16 | For A = 1 to ENTRIES 17 | Goto FILE_ENTRY 18 | Get JUNK Long 19 | Get JUNK Long 20 | Get JUNK Long 21 | Get JUNK Long 22 | Get NAME_OFFSET Long 23 | Get OFFSET Long 24 | Get SIZE Long 25 | Math OFFSET + DATA_START 26 | Math NAME_OFFSET + NAMES_TABLE 27 | Goto NAME_OFFSET 28 | Get FILENAME String 29 | String FILENAME + ".ogg" 30 | 31 | Log FILENAME OFFSET SIZE 32 | 33 | Math FILE_ENTRY + 0x30 34 | 35 | Next A 36 | -------------------------------------------------------------------------------- /QuickBMS/PC/State_Of_Emergency_(PC)_PBH-PBK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # State Of Emergency (PC) 3 | # PBH/PBK audio extract 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | 8 | Open FDDE "pbk" 1 9 | 10 | Get TEMPNAME basename 11 | Get FILES Long 12 | Math ENTRY = 4 13 | 14 | For A = 0 < FILES 15 | Goto ENTRY 16 | GetDString JUNK 0x14 17 | SavePos WAV_INFO 18 | GetDString JUNK 0x14 19 | Get OFFSET Long 20 | Get SIZE Long 21 | 22 | Set MEMORY_FILE binary "RIFF\x00\x00\x00\x00WAVEfmt \x10\x00\x00\x00" 23 | 24 | Append 25 | Log MEMORY_FILE WAV_INFO 0x10 26 | Append 27 | 28 | PutVarChr MEMORY_FILE 0x24 0x61746164 Long # "data" 29 | PutVarChr MEMORY_FILE 0x28 SIZE Long 30 | XMath RIFF_SIZE "SIZE + 0x24" 31 | PutVarChr MEMORY_FILE 0x04 RIFF_SIZE Long 32 | 33 | Append 34 | Log MEMORY_FILE OFFSET SIZE 1 # audio data from PBK file 35 | Append 36 | 37 | String FILENAME P "%TEMPNAME%_%A%.wav" 38 | Get FINAL_SIZE asize -1 39 | Log FILENAME 0 FINAL_SIZE -1 40 | 41 | Math ENTRY + 0x5c 42 | Next A 43 | 44 | -------------------------------------------------------------------------------- /QuickBMS/PC/Titan_Quest_(PC)_ARC.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Titan Quest 3 | # ARC extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | IDString "ARC\x00" 9 | 10 | ComType zlib 11 | 12 | Goto 8 13 | Get FILES Long 14 | Get JUNK Long 15 | Get SIZE1 Long 16 | Get SIZE2 Long 17 | Get TABLE1_OFFSET Long 18 | 19 | Set FNAMES TABLE1_OFFSET 20 | Math FNAMES + SIZE1 # address of filenames 21 | Set FILE_TABLE FNAMES 22 | Math FILE_TABLE + SIZE2 # address of file table 23 | 24 | For A = 0 < FILES 25 | Goto FILE_TABLE 26 | Get COMP_FLAG Long 27 | Get OFFSET Long 28 | Get ZSIZE Long 29 | Get SIZE Long 30 | Get JUNK Long 31 | Get JUNK Long 32 | Get JUNK Long 33 | Get JUNK Long 34 | Get JUNK Long 35 | Get JUNK Long 36 | Get FNAME_OFF Long 37 | Math FNAME_OFF + FNAMES # = address of filename text 38 | Goto FNAME_OFF 39 | Get FILENAME String 40 | 41 | If COMP_FLAG = 1 # no compression 42 | Log FILENAME OFFSET ZSIZE 43 | Endif 44 | 45 | If COMP_FLAG = 3 # zlib compression 46 | CLog FILENAME OFFSET ZSIZE SIZE 47 | Endif 48 | 49 | Math FILE_TABLE + 0x2C 50 | Next A 51 | -------------------------------------------------------------------------------- /QuickBMS/PS1/007_The_World_Is_Not_Enough_(PS1)_SHBIN.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # 007: The World Is Not Enough (PS1) 3 | # SHBIN.BIN extract 4 | # QuickBMS script by DKDave, 2022 5 | # ================================================================================ 6 | 7 | 8 | Math ENTRY = 0 9 | Get FILE_END asize 10 | 11 | For A = 0 12 | Goto ENTRY 13 | GetDString FILENAME 0x1a 14 | Get OFFSET Short 15 | Math OFFSET * 0x800 16 | 17 | If OFFSET = FILE_END 18 | Break 19 | Endif 20 | 21 | GetDString JUNK 0x1a 22 | Get OFFSET2 Short 23 | Math OFFSET2 * 0x800 24 | XMath SIZE "OFFSET2 - OFFSET" 25 | 26 | Log FILENAME OFFSET SIZE 27 | 28 | Math ENTRY + 0x1c 29 | Next A 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Alien_Resurrection_(PS1)_CVB.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Alien Resurrection (PS1) 3 | # CVB audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Goto 4 9 | Get FILES Long 10 | XMath OFFSET "(FILES * 0x14) + 8" 11 | Get TEMPNAME basename 12 | 13 | For A = 0 < FILES 14 | Get RATE Long 15 | Goto 0x0c 0 SEEK_CUR 16 | Get SIZE Long 17 | 18 | Log MEMORY_FILE 0 0 19 | PutVarChr MEMORY_FILE 0x2f 0 Byte 20 | PutVarChr MEMORY_FILE 0 0x70474156 Long 21 | 22 | Endian Big 23 | PutVarChr MEMORY_FILE 0x0c SIZE Long 24 | PutVarChr MEMORY_FILE 0x10 RATE Long 25 | Endian Little 26 | 27 | Append 28 | Log MEMORY_FILE OFFSET SIZE 29 | Append 30 | 31 | String FILENAME P "%TEMPNAME%_%A%.vag" 32 | Get MEM_SIZE asize -1 33 | Log FILENAME 0 MEM_SIZE -1 34 | 35 | Math OFFSET + SIZE 36 | Next A 37 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Alien_Resurrection_(PS1)_CVD.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Alien Resurrection (PS1) 3 | # CVD/CVS extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Extract all the files from the .PACK and .WAD archives first, then put all CVD and CVS files in the same folder for batch extraction 8 | # .vag files are created with the offset as part of the filename to eliminate duplicates from multiple CVD files 9 | 10 | 11 | IDString "CVD " 12 | 13 | Get FILES Long 14 | GetDString ARCHIVE 8 15 | String ARC_NAME P "%ARCHIVE%.cvs" 16 | Open FDSE ARC_NAME 1 17 | Get TEMPNAME basename 18 | 19 | Goto 0x10 20 | 21 | For A = 0 < FILES 22 | Get SIZE Long 23 | Get OFFSET Long 24 | 25 | Log MEMORY_FILE 0 0 26 | PutVarChr MEMORY_FILE 0x2f 0 Byte 27 | PutVarChr MEMORY_FILE 0 0x70474156 Long 28 | PutVarChr MEMORY_FILE 0x10 0x44ac0000 Long 29 | 30 | Endian Big 31 | PutVarChr MEMORY_FILE 0x0c SIZE Long 32 | Endian Little 33 | 34 | String FILENAME P "%ARCHIVE%_%OFFSET|x%.vag" 35 | 36 | Append 37 | Log MEMORY_FILE OFFSET SIZE 1 38 | Append 39 | 40 | Get MEM_SIZE asize -1 41 | Log FILENAME 0 MEM_SIZE -1 42 | Next A 43 | 44 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Alien_Resurrection_(PS1)_PACK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Alien Resurrection (PS1) 3 | # PACK.BIN extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Get FILES Long 9 | 10 | For A = 0 < FILES 11 | GetDString FILENAME 0x0c 12 | Get SIZE Long 13 | Get OFFSET Long 14 | Log FILENAME OFFSET SIZE 15 | Next A 16 | 17 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Alien_Resurrection_(PS1)_WAD.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Alien Resurrection (PS1) 3 | # WAD file extact 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Note: Use this script on the WAD files extracted from PACK.BIN 8 | 9 | 10 | Goto 0x10 11 | Get FILES Long 12 | Math OFFSET = 0x800 13 | Get TEMPNAME basename 14 | 15 | Math ENTRY = 0x20 16 | 17 | For A = 0 < FILES 18 | Goto ENTRY 19 | Get TYPE Long 20 | Get SIZE Long 21 | ReverseLong TYPE 22 | String TYPE N TYPE 23 | 24 | String FILENAME P "%TEMPNAME%_%A%.%TYPE%" 25 | 26 | Log FILENAME OFFSET SIZE 27 | 28 | Math OFFSET + SIZE 29 | Goto OFFSET 30 | Padding 0x800 31 | SavePos OFFSET 32 | 33 | Math ENTRY + 8 34 | Next A 35 | 36 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Anastasia_(PS1)_GAMEDATA.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Anastasia (PS1) 3 | # GAMEDATA.BIN extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the SLES_029.61 file 8 | 9 | 10 | Open FDSE "GAMEDATA.BIN" 1 11 | 12 | Math ENTRY = 0x1fe80 13 | 14 | For A = 0 < 0xd8 15 | Goto ENTRY 16 | Get NAME_OFFSET Short 17 | Get MISC1 Short 18 | Get OFFSET Long 19 | Get JUNK Long 20 | Get OFFSET2 Long 21 | 22 | If A = 0xd7 23 | XMath SIZE "(0x1adc - OFFSET) * 0x800" 24 | Else 25 | XMath SIZE "(OFFSET2 - OFFSET) * 0x800" 26 | Endif 27 | 28 | Math OFFSET * 0x800 29 | Math NAME_OFFSET + 0x800 30 | Goto NAME_OFFSET 31 | Get FILENAME String 32 | 33 | Log FILENAME OFFSET SIZE 1 34 | 35 | Math ENTRY + 8 36 | Next A 37 | 38 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Apocalypse_(PS1)_HED-WAD.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Apocalypse (PS1) 3 | # HED / WAD extract 4 | # QuickBMS script by DKDave, 2021 5 | # ================================================================================ 6 | 7 | Open FDDE "WAD" 1 8 | 9 | Get SIZE asize 10 | XMath SIZE "(SIZE - 1) / 0x14" 11 | 12 | For A = 0 < ENTRIES 13 | SavePos TEMP1 14 | Get TEMP2 Byte 15 | 16 | If TEMP2 = 0xFF 17 | Break 18 | Endif 19 | 20 | Goto TEMP1 21 | Get FILENAME String 22 | Padding 4 23 | Get OFFSET Long 24 | Get SIZE Long 25 | 26 | Log FILENAME OFFSET SIZE 1 27 | Next A 28 | 29 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Ark_Of_Time_(PS1)_DAT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Ark Of Time (PSX) 3 | # .DAT extract 4 | # QuickBMS script by DKDave, 2021 5 | # ================================================================================ 6 | 7 | IDString "ARK0" 8 | 9 | Get ENTRIES Long 10 | 11 | For A = 0 < ENTRIES 12 | GetDString FILENAME 8 13 | Get OFFSET Long 14 | Get SIZE Long 15 | Get MISC1 Long 16 | Log FILENAME OFFSET SIZE 17 | Next A 18 | 19 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Aztec_The_Curse_In_The_Heart_Of_The_City_Of_Gold_(PS1)_DIR-LNK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Aztec: The Curse In The Heart Of The City Of Gold (PS1) 3 | # DIR / LNK extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Open FDDE "LNK" 1 9 | 10 | Goto 0x14 11 | Get DIRS Long 12 | XMath DIRS "(DIRS - 0x14) / 0x18" 13 | 14 | Goto 0x10 15 | Get ENTRY Long 16 | Get DIR_OFF Long 17 | String DIR_NAME = "" 18 | 19 | CallFunction DO_DIR 1 DIR_OFF # process root folder 20 | 21 | 22 | For A = 0 < DIRS 23 | Goto ENTRY 24 | GetDString DIR_NAME 0x14 25 | Get DIR_OFF Long 26 | 27 | CallFunction DO_DIR 1 DIR_OFF 28 | 29 | Math ENTRY + 0x18 30 | Next A 31 | 32 | 33 | StartFunction DO_DIR 34 | Goto DIR_OFF 35 | Get FILES Long 36 | SavePos ENTRY2 37 | 38 | For B = 0 < FILES 39 | Goto ENTRY2 40 | Get OFFSET Long 41 | GetDString FILENAME 0x10 42 | Get OFFSET2 Long 43 | XMath SIZE "OFFSET2 - OFFSET" 44 | 45 | String FILENAME P "%DIR_NAME%\%FILENAME%" 46 | 47 | Log FILENAME OFFSET SIZE 1 48 | 49 | Math ENTRY2 + 0x14 50 | Next B 51 | 52 | EndFunction 53 | 54 | 55 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Bio_FREAKS_(PS1)_MUK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Bio F.R.E.A.K.S. (PS1) 3 | # MUK extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | For A = 0 9 | GetDString FILENAME 8 10 | 11 | If FILENAME = "" 12 | Break 13 | Endif 14 | 15 | Get SIZE Long 16 | Get OFFSET Long 17 | 18 | Log FILENAME OFFSET SIZE 19 | 20 | Next A 21 | 22 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Bio_FREAKS_(PS1)_SND.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Bio F.R.E.A.K.S. (PS1) 3 | # SND extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Get TEMPNAME basename 9 | Math ENTRY = 0 10 | 11 | For A = 0 12 | Goto ENTRY 13 | Get OFFSET Long 14 | 15 | If OFFSET = 0 16 | Break 17 | Endif 18 | 19 | Goto OFFSET 20 | Goto 0x0c 0 SEEK_CUR 21 | Get SIZE Long 22 | ReverseLong SIZE 23 | Goto 0x10 0 SEEK_CUR 24 | GetDString FILENAME 0x10 25 | Math SIZE + 0x30 26 | String FILENAME P "%TEMPNAME%\%FILENAME%.vag" 27 | 28 | Log FILENAME OFFSET SIZE 29 | 30 | Math ENTRY + 4 31 | Next A 32 | 33 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Colony_Wars_(PS1)_RSC.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Colony Wars (PS1) 3 | # GAME.RSC extract 4 | # QuickBMS script by Dave, 2021 5 | # ================================================================================ 6 | 7 | 8 | Get FILES Long 9 | Math ENTRY = 4 10 | 11 | For A = 0 < FILES 12 | Goto ENTRY 13 | GetDString FILENAME 0x10 14 | Get OFFSET Long 15 | XMath TEMP1 "ENTRY + 0x30" 16 | Goto TEMP1 17 | Get OFFSET2 Long 18 | XMath SIZE "OFFSET2 - OFFSET" 19 | 20 | Log FILENAME OFFSET SIZE 21 | 22 | Math ENTRY + 0x20 23 | Next A 24 | 25 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Colony_Wars_Vengeance_(PS1)_RSC.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Colony Wars: Vengeance (PS1) 3 | # GAME.RSC extract 4 | # QuickBMS script by DKDave, 2021 5 | # ================================================================================ 6 | 7 | # Note: only a very slight difference in the file format between this and Colony Wars 8 | 9 | 10 | Get FILES Long 11 | Math ENTRY = 4 12 | 13 | For A = 0 < FILES 14 | Goto ENTRY 15 | GetDString FILENAME 0x10 16 | Get OFFSET Long 17 | XMath TEMP1 "ENTRY + 0x24" 18 | Goto TEMP1 19 | Get OFFSET2 Long 20 | XMath SIZE "OFFSET2 - OFFSET" 21 | 22 | Log FILENAME OFFSET SIZE 23 | 24 | Math ENTRY + 0x14 25 | Next A 26 | 27 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Dance_Dance_Revolution_Disney_Mix_(PS1)_STM2.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Dance Dance Revolution / Dancing Stage - Disney Mix (PS1) 3 | # STM2.CAT extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | # Create SS2 header 9 | 10 | Log MEMORY_FILE 0 0 11 | PutVarChr MEMORY_FILE 0x27 0 Byte 12 | PutVarChr MEMORY_FILE 0 0x64685353 Long # SShd 13 | PutVarChr MEMORY_FILE 0x04 0x18 Long 14 | PutVarChr MEMORY_FILE 0x08 2 Long # PS ADPCM 15 | PutVarChr MEMORY_FILE 0x0c 44100 Long # Sample rate 16 | PutVarChr MEMORY_FILE 0x10 2 Long # Channels 17 | PutVarChr MEMORY_FILE 0x14 0x4000 Long # Interleave 18 | PutVarChr MEMORY_FILE 0x20 0x64625353 Long # SSbd 19 | PutVarChr MEMORY_FILE 0x18 0xFFFFFFFF Long 20 | PutVarChr MEMORY_FILE 0x1c 0xFFFFFFFF Long 21 | 22 | Math ENTRY = 0 23 | 24 | For A = 0 25 | Goto ENTRY 26 | Get JUNK Long 27 | Get JUNK Long 28 | Get SIZE Long 29 | Get JUNK Short 30 | Get OFFSET Short 31 | ReverseShort OFFSET 32 | Math OFFSET * 0x800 33 | Math OFFSET + 0x800 34 | Math SIZE * 0x800 35 | 36 | If SIZE = 0 37 | Break 38 | Endif 39 | 40 | PutVarChr MEMORY_FILE 0x24 SIZE Long 41 | 42 | String FILENAME P "STM2_%A%.ss2" 43 | 44 | Log FILENAME 0 0x28 -1 45 | Append 46 | Log FILENAME OFFSET SIZE 47 | Append 48 | 49 | Math ENTRY + 0x10 50 | Next A 51 | 52 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Dance_UK_(PS1)_PAK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Dance UK (PS1) 3 | # DATA.PAK extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Get FILES Long 9 | 10 | Math ENTRY1 = 0x14 # Name offsets 11 | XMath ENTRY2 "(FILES * 4) + ENTRY1" # File sizes 12 | XMath ENTRY3 "(FILES * 4) + ENTRY2" # File block offsets 13 | 14 | For A = 0 < FILES 15 | Goto ENTRY1 16 | Get NAME_OFF Long 17 | Goto ENTRY2 18 | Get SIZE Long 19 | Goto ENTRY3 20 | Get OFFSET Long 21 | Math OFFSET * 0x800 22 | Goto NAME_OFF 23 | Get FILENAME String 24 | 25 | Log FILENAME OFFSET SIZE 26 | 27 | Math ENTRY1 + 4 28 | Math ENTRY2 + 4 29 | Math ENTRY3 + 4 30 | Next A 31 | 32 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Danger_Girl_(PS1)_WB-WBX.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Danger Girl (PS1) 3 | # WB / WBX audio extract (mostly sfx) 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # There are fewer filenames than files, so the names are not used for now 8 | 9 | 10 | Open FDDE "WBX" 1 11 | 12 | Get TEMPNAME basename 13 | Get JUNK Short 14 | Get FILES Short 15 | XMath TABLE2 "(FILES * 12) + 4" 16 | 17 | Goto TABLE2 18 | Get JUNK Long 19 | Get FILES2 Long 20 | Goto 8 0 SEEK_CUR 21 | SavePos ENTRY 22 | 23 | For A = 0 < FILES2 24 | Goto ENTRY 25 | Get OFFSET Long 26 | Get JUNK Short 27 | Get SIZE Short 28 | Math SIZE * 0x10 29 | Get RATE Short 30 | 31 | If SIZE <> 0 32 | String FILENAME P "%TEMPNAME%_%A%.vag" 33 | 34 | Log MEMORY_FILE 0 0 35 | PutVarChr MEMORY_FILE 0x2f 0 Byte 36 | PutVarChr MEMORY_FILE 0 0x70474156 Long 37 | 38 | XMath RATE "(RATE * 48000) / 4096" 39 | 40 | Endian Big 41 | PutVarChr MEMORY_FILE 0xc SIZE Long 42 | PutVarChr MEMORY_FILE 0x10 RATE Long 43 | Endian Little 44 | 45 | Append 46 | Log MEMORY_FILE OFFSET SIZE 1 47 | Append 48 | 49 | Get MEM_SIZE asize -1 50 | Log FILENAME 0 MEM_SIZE -1 51 | Endif 52 | 53 | Math ENTRY + 0x14 54 | Next A 55 | 56 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Darklight_Conflict_(PS1)_INF-WAD.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Darklight Conflict (PS1) 3 | # INF / WAD extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the .INF file 8 | 9 | 10 | Endian Big 11 | 12 | Open FDDE "WAD" 1 13 | 14 | Get FILES asize 15 | Math FILES / 0x18 16 | 17 | For A = 0 < FILES 18 | Get OFFSET Long 19 | Get SIZE Long 20 | Math OFFSET * 0x800 21 | GetDString FILENAME 0x10 22 | Log FILENAME OFFSET SIZE 1 23 | Next A 24 | 25 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Delta_Force_Urban_Warfare_(PS1)_DCF.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Delta Force: Urban Warfare (PS1) 3 | # DCF extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | IDString "DCAT" 9 | Get FILES Short 10 | Get MISC1 Short 11 | 12 | For A = 0 < FILES 13 | GetDString FILENAME 0x0c 14 | Get JUNK Long 15 | Get SIZE Long 16 | Get OFFSET Long 17 | Log FILENAME OFFSET SIZE 18 | Next A 19 | 20 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Delta_Force_Urban_Warfare_(PS1)_PSS.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Delta Force: Urban Warfare (PS1) 3 | # CORE.PSS audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Get FILES Long 9 | Get JUNK Long 10 | Get FILE_END asize 11 | Math ENTRY = 8 12 | XMath DATA_START "(FILES * 12) + 8" 13 | 14 | Log MEMORY_FILE 0 0 15 | PutVarChr MEMORY_FILE 0x2f 0 Byte 16 | PutVarChr MEMORY_FILE 0 0x70474156 Long 17 | 18 | For A = 1 To FILES 19 | Goto ENTRY 20 | Get ID Long 21 | Get RATE Short 22 | Get MISC1 Short 23 | Get OFFSET Long 24 | Math OFFSET + DATA_START 25 | Math RATE * 10 26 | 27 | If A < FILES 28 | Goto 8 0 SEEK_CUR 29 | Get OFFSET2 Long 30 | XMath SIZE "OFFSET2 - OFFSET + DATA_START" 31 | Else 32 | XMath SIZE "FILE_END - OFFSET" 33 | Endif 34 | 35 | Log MEMORY_FILE 0 0 36 | PutVarChr MEMORY_FILE 0x2f 0 Byte 37 | PutVarChr MEMORY_FILE 0 0x70474156 Long 38 | 39 | Endian Big 40 | PutVarChr MEMORY_FILE 0x0c SIZE Long 41 | PutVarChr MEMORY_FILE 0x10 RATE Long 42 | Endian Little 43 | 44 | Append 45 | Log MEMORY_FILE OFFSET SIZE 46 | Append 47 | 48 | String FILENAME P "CORE_%A%.vag" 49 | Get MEM_SIZE asize -1 50 | Log FILENAME 0 MEM_SIZE -1 51 | 52 | Math ENTRY + 12 53 | Next A 54 | 55 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Discworld_(PS1)_IDX_SMP.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Discworld 1 (PS1) 3 | # IDX/SMP audio extract 4 | # QuickBMS script by Dave, 2020 5 | # ================================================================================ 6 | 7 | # This script will extract the audio files from ENGLISH.SMP and create playable .vag files 8 | # Use the script with ENGLISH.IDX 9 | 10 | 11 | Open FDDE "SMP" 1 12 | 13 | Set MEMORY_FILE binary "VAGp\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" 14 | 15 | Get ENTRIES asize 16 | Math ENTRIES / 4 17 | Math FILE_COUNT = 1 18 | 19 | For A = 1 to ENTRIES 20 | Get OFFSET Long 21 | 22 | If OFFSET <> 0 23 | Goto OFFSET 1 24 | Get SIZE Long 1 25 | SavePos OFFSET 1 26 | ReverseLong SIZE 27 | PutVarChr MEMORY_FILE 0x0c SIZE Long 28 | ReverseLong SIZE 29 | 30 | String FILENAME P "DW1_%FILE_COUNT%.vag" 31 | 32 | Log FILENAME 0 48 -1 33 | Append 34 | Log FILENAME OFFSET SIZE 1 35 | Append 36 | 37 | Math FILE_COUNT + 1 38 | Endif 39 | 40 | Next A 41 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Discworld_II_(PS1)_IDX-SAMP.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Discworld II: Mortality Bytes! (aka Missing Presumed ...) (PS1) 3 | # IDX / SAMP extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the IDX file 8 | 9 | 10 | Open FDDE "SMP" 1 11 | 12 | Get FILES asize 13 | Math FILES / 4 14 | 15 | For A = 0 < FILES 16 | Get OFFSET Long 17 | XMath MOD "A % 512" 18 | 19 | If OFFSET <> 0 And MOD <> 511 20 | Goto OFFSET 1 21 | Get MISC1 Long 1 22 | Get SIZE Long 1 23 | SavePos OFFSET 1 24 | 25 | Log MEMORY_FILE 0 0 26 | PutVarChr MEMORY_FILE 0x2f 0 Byte 27 | PutVarChr MEMORY_FILE 0 0x70474156 Long 28 | 29 | Endian Big 30 | PutVarChr MEMORY_FILE 0x10 22050 Long 31 | PutVarChr MEMORY_FILE 0x0c SIZE Long 32 | Endian Little 33 | 34 | Append 35 | Log MEMORY_FILE OFFSET SIZE 1 36 | Append 37 | 38 | String FILENAME P "DW2_%A%.vag" 39 | 40 | Get MEM_SIZE asize -1 41 | Log FILENAME 0 MEM_SIZE -1 42 | Endif 43 | 44 | Next A 45 | 46 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Discworld_Noir_(PS1)_ELF.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Discworld Noir (PS1) 3 | # CDIMAGE.ELF extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # There are no filenames or file types stored 8 | 9 | 10 | Get FILES Long 11 | Math ENTRY = 0x10 12 | 13 | For A = 0 < FILES 14 | Goto ENTRY 15 | Get MISC1 Long 16 | Get OFFSET Long 17 | Math OFFSET * 0x800 18 | Get SIZE Long 19 | Get MISC2 Short 20 | Get MISC3 Short 21 | 22 | String FILENAME P "DWN_%A%" 23 | Log FILENAME OFFSET SIZE 24 | 25 | Math ENTRY + 0x10 26 | Next A 27 | 28 | 29 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Dragonheart_Fire_&_Steel_(PS1)_LEV.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Dragonheart: Fire & Steel (PS1) 3 | # LEV extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # There are no file types or file names stored 8 | 9 | 10 | Get TEMPNAME basename 11 | Get FILES Long 12 | SavePos ENTRY 13 | XMath OFFSET "(FILES * 4) + 4" 14 | 15 | For A = 0 < FILES 16 | Goto ENTRY 17 | Get SIZE Long 18 | 19 | String FILENAME P "%TEMPNAME%_%A%" 20 | Log FILENAME OFFSET SIZE 21 | 22 | Math OFFSET + SIZE 23 | Math ENTRY + 4 24 | Next A 25 | 26 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Driver_1&2_(PS1)_BLK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Driver 1 & 2 (PS1) 3 | # BLK audio extract (VOICES.BLK & VOICES2.BLK) 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Get FILE_END asize 9 | Get TEMPNAME basename 10 | Math ENTRY = 0 11 | Math FNUM = 0 12 | 13 | Log MEMORY_FILE 0 0 14 | PutVarChr MEMORY_FILE 0x2f 0 Byte 15 | PutVarChr MEMORY_FILE 0 0x70474156 Long 16 | 17 | For A = 0 18 | Goto ENTRY 19 | Get OFFSET Long 20 | 21 | If OFFSET = FILE_END 22 | Break 23 | Endif 24 | 25 | Goto OFFSET 26 | Get FILES Long 27 | XMath DATA_START "OFFSET + 4 + (ENTRIES * 0x10)" 28 | 29 | For B = 0 < FILES 30 | Get OFFSET2 Long 31 | Math OFFSET2 + DATA_START 32 | Get SIZE Long 33 | Get MISC1 Long 34 | Get SAMP_RATE Long 35 | 36 | Endian Big 37 | PutVarChr MEMORY_FILE 0x0c SIZE Long 38 | PutVarChr MEMORY_FILE 0x10 SAMP_RATE Long 39 | Endian Little 40 | 41 | String FILENAME P "%TEMPNAME%_%FNUM%.vag" 42 | Log FILENAME 0 0x30 -1 43 | Append 44 | Log FILENAME OFFSET2 SIZE 45 | Append 46 | 47 | Math FNUM + 1 48 | Next B 49 | 50 | Math ENTRY + 4 51 | Next A 52 | 53 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Dune_2000_(PS1)_DAT-MIX-XA.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Dune 2000 (PS1) 3 | # FAT / MIX /XA extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Open FDDE "mix" 1 9 | Open FDDE "xa" 2 10 | 11 | Get COUNT1 Long # files in DATA.MIX archive 12 | Get COUNT2 Long # files in DATA.XA archive 13 | 14 | Math ENTRY = 8 15 | 16 | For A = 0 < COUNT1 17 | Goto ENTRY 18 | GetDString FILENAME 0x10 19 | Get OFFSET Long 20 | Math OFFSET * 0x800 21 | Get SIZE Long 22 | Get MISC1 Long 23 | 24 | Log FILENAME OFFSET SIZE 1 25 | 26 | Math ENTRY + 0x1c 27 | Next A 28 | 29 | 30 | Get XA_END asize 2 31 | 32 | For A = 1 To COUNT2 33 | Goto ENTRY 34 | GetDString FILENAME 0x10 35 | Get OFFSET Long 36 | Math OFFSET * 0x930 37 | Get SIZE Long # not accurate 38 | Get MISC1 Long 39 | 40 | If A < COUNT2 41 | Goto 0x10 0 SEEK_CUR 42 | Get OFFSET2 Long 43 | XMath SIZE2 "(OFFSET2 * 0x930) - OFFSET" 44 | Else 45 | XMath SIZE2 "XA_END - OFFSET" 46 | Endif 47 | 48 | Log FILENAME OFFSET SIZE2 2 49 | 50 | Math ENTRY + 0x1c 51 | Next A 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Frogger_2_(PS1)_DAT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Frogger 2: Swampy's Revenge (PS1) 3 | # FROGGER.DAT extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Comtype coreonline 9 | 10 | IDString "xV4\x12" 11 | 12 | Get FILES Long 13 | Math ENTRY = 8 14 | 15 | For A = 0 < FILES 16 | Goto ENTRY 17 | Get MISC1 Long 18 | Get OFFSET Long 19 | Math OFFSET * 0x800 20 | Math OFFSET + 0x4000 21 | Get ZSIZE Long 22 | 23 | String FILENAME P "F2_%A%" 24 | 25 | Goto OFFSET 26 | Get TYPE Long 27 | 28 | If TYPE = 0x32414c46 29 | Get SIZE Long 30 | Math ZSIZE - 8 31 | Math OFFSET + 8 32 | CLog FILENAME OFFSET ZSIZE SIZE 33 | Else 34 | Log FILENAME OFFSET ZSIZE 35 | Endif 36 | 37 | Math ENTRY + 12 38 | Next A 39 | 40 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Game_Of_Life_(PS1)_PAK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Game Of Life (PS1) 3 | # PAK extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # This script extracts the basic files. Vag files will be extracted with their names. Some files have unknown compression 8 | 9 | 10 | Get TEMPNAME basename 11 | Goto 4 12 | Get FILES Long 13 | Math ENTRY = 8 14 | 15 | For A = 0 < FILES 16 | Goto ENTRY 17 | Get OFFSET Long 18 | Get SIZE Long 19 | Goto OFFSET 20 | Get TYPE Long 21 | 22 | If TYPE = 0x70474156 23 | Goto 0x1c 0 SEEK_CUR 24 | GetDString FILENAME 0x10 25 | String FILENAME + ".vag" 26 | Log FILENAME OFFSET SIZE 27 | Else 28 | String FILENAME P "%TEMPNAME%_%A%" 29 | Log FILENAME OFFSET SIZE 30 | Endif 31 | 32 | Math ENTRY + 8 33 | Next A 34 | 35 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Gex_(PS1)_BIGFILE.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Gex (PS1) 3 | # BIGFILE.BIG extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Get FILES Long 9 | 10 | Goto 0x14 11 | 12 | For A = 0 < FILES 13 | Get MISC1 Long 14 | Get SIZE Long 15 | Get OFFSET Long 16 | Get MISC2 Long 17 | 18 | String FILENAME P "BIGFILE_%A%" 19 | Log FILENAME OFFSET SIZE 20 | 21 | Next A 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Gex_3D_Return_Of_The_Gecko_(PS1)_BIGFILE.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Gex 3D: Return Of The Gecko (PS1) [SLES_005.96] 3 | # BIGFILE.DAT extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Comtype LZRW1 9 | 10 | Get FILES Long 11 | 12 | For A = 0 < FILES 13 | Get MISC1 Long 14 | Get SIZE Long 15 | Get ZSIZE Long # = 0 if file isn't compressed 16 | Get OFFSET Long 17 | Get MISC3 Long 18 | Get MISC4 Long 19 | 20 | String FILENAME P "BIGFILE_%A%" 21 | 22 | If ZSIZE = 0 23 | Log FILENAME OFFSET SIZE 24 | Else 25 | CLog FILENAME OFFSET ZSIZE SIZE 26 | Endif 27 | 28 | Next A 29 | 30 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Hellnight_(PS1)_DAT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Hellnight (PS1) 3 | # DAT.MD extractor 4 | # QuickBMS script by DKDave, 2019 5 | # ================================================================================ 6 | 7 | 8 | IDString "MDFI" 9 | 10 | Goto 0x10 11 | Get FILES Long 12 | Math ENTRY = 0x14 13 | 14 | For A = 0 < FILES 15 | Goto ENTRY 16 | Get FNAME_OFFSET Long 17 | Get OFFSET Long 18 | Get SIZE Long 19 | Goto FNAME_OFFSET 20 | Get FILENAME String 21 | 22 | Log FILENAME OFFSET SIZE 23 | 24 | Math ENTRY + 0x0c 25 | Next A 26 | 27 | 28 | -------------------------------------------------------------------------------- /QuickBMS/PS1/In_Cold_Blood_(PS1)_CLU-SND-SPK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # In Cold Blood (PS1) 3 | # .CLU / .SND / .SPK audio extraction 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | IDString "CLU\x00" 9 | 10 | Get EXT extension 11 | Get TEMPNAME basename 12 | Math FLAG = 0 13 | 14 | If EXT = "snd" # SND files are headerless, SND and SPK are standard VAG files 15 | Math FLAG = 1 16 | Endif 17 | 18 | Log MEMORY_FILE 0 0 19 | PutVarChr MEMORY_FILE 47 0 20 | PutVarChr MEMORY_FILE 0x00 0x70474156 Long 21 | 22 | Get JUNK Long 23 | Get DATA_START Long 24 | Get FILES Long 25 | 26 | Goto 0x54 27 | 28 | For A = 0 < FILES 29 | Get JUNK Long 30 | Get SIZE Long 31 | Get OFFSET Long 32 | Get JUNK Long 33 | 34 | String FILENAME P "%TEMPNAME%_%A%.vag" 35 | 36 | If FLAG = 0 37 | Log FILENAME OFFSET SIZE 38 | Else 39 | Endian Big 40 | PutVarChr MEMORY_FILE 0x0c SIZE Long 41 | PutVarChr MEMORY_FILE 0x10 0x3e80 Long # Always 16000 ? 42 | Endian Little 43 | 44 | Log FILENAME 0 48 -1 45 | Append 46 | Log FILENAME OFFSET SIZE 47 | Append 48 | Endif 49 | Next A 50 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Koudelka_(PS1)_MCF.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Koudelka (PS1) 3 | # Demux audio from .MCF videos 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Audio is saved as playable .ss2 files 8 | 9 | 10 | Get FILENAME basename 11 | String FILENAME + ".ss2" 12 | 13 | # Create SS2 header 14 | 15 | Log MEMORY_FILE 0 0 16 | PutVarChr MEMORY_FILE 0x27 0 Byte 17 | PutVarChr MEMORY_FILE 0 0x64685353 Long # SShd 18 | PutVarChr MEMORY_FILE 0x04 0x18 Long 19 | PutVarChr MEMORY_FILE 0x08 2 Long # PS ADPCM 20 | PutVarChr MEMORY_FILE 0x0c 44100 Long # Sample rate 21 | PutVarChr MEMORY_FILE 0x10 2 Long # Channels 22 | PutVarChr MEMORY_FILE 0x14 0x690 Long # Interleave 23 | PutVarChr MEMORY_FILE 0x18 0xFFFFFFFF Long 24 | PutVarChr MEMORY_FILE 0x1c 0xFFFFFFFF Long 25 | PutVarChr MEMORY_FILE 0x20 0x64625353 Long # SSbd 26 | 27 | Get BLOCKS asize 28 | Math BLOCKS / 0x800 29 | Math OFFSET = 0 30 | 31 | For A = 0 < BLOCKS 32 | Goto OFFSET 33 | Get MISC Short 34 | Get TYPE Short 35 | 36 | If TYPE = 4 # audio block 37 | Goto 0x3c 0 SEEK_CUR # skip rest of block header 38 | SavePos OFFSET2 39 | 40 | Append 41 | Log MEMORY_FILE OFFSET2 0x690 42 | Append 43 | Endif 44 | 45 | Math OFFSET + 0x800 46 | Next A 47 | 48 | Get MEM_SIZE asize -1 49 | Math MEM_SIZE - 0x28 50 | PutVarChr MEMORY_FILE 0x24 MEM_SIZE Long 51 | Math MEM_SIZE + 0x28 52 | Log FILENAME 0 MEM_SIZE -1 53 | 54 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Legacy_Of_Kain_Soul_Reaver_(PS1)_BIGFILE.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Legacy Of Kain: Soul Reaver (PS1) [SLES_013.01] 3 | # BIGFILE.DAT extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Get FILES Long 9 | Math TABLE1 = 4 10 | String KEY = "\x22\xb7" 11 | 12 | For A = 0 < FILES 13 | Goto TABLE1 14 | Get MISC1 Short 15 | Get FILES2 Short 16 | Get OFFSET Long 17 | 18 | Goto OFFSET 19 | Get TEMP1 Long # Should match count value in main table, otherwise table is encrypted 20 | SavePos ENTRY 21 | 22 | For B = 0 < FILES2 23 | Goto ENTRY 24 | 25 | If TEMP1 <> FILES2 26 | FileXor KEY 27 | Else 28 | FileXor 0 29 | Endif 30 | 31 | Get UNK1 Long # File ID ? 32 | Get SIZE2 Long 33 | Get OFFSET2 Long 34 | Get UNK2 Long 35 | 36 | FileXor 0 37 | 38 | Goto OFFSET2 39 | GetDString TYPE 4 40 | 41 | String FILENAME P "SR_%A%_%B%" 42 | 43 | # Some identifiable files types: 44 | 45 | If TYPE = "PMSa" 46 | String FILENAME + ".smp" 47 | Elif TYPE = "DNSa" 48 | String FILENAME + ".snd" 49 | Elif TYPE = "FNSa" 50 | String FILENAME + ".snf" 51 | Elif TYPE = "FMSa" 52 | String FILENAME + ".smf" 53 | Endif 54 | 55 | Log FILENAME OFFSET2 SIZE2 56 | 57 | Math ENTRY + 0x10 58 | Next B 59 | 60 | Math TABLE1 + 8 61 | Next A 62 | 63 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Legend_Of_Legaia_(PS1)_PROT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Legend Of Legaia (PS1) 3 | # PROT.DAT extract 4 | # QuickBMS script by DKDave, 2022 5 | # ================================================================================ 6 | 7 | Goto 4 8 | Get ENTRIES Long 9 | Math ENTRIES - 1 10 | Math ENTRY = 0x0c 11 | 12 | For A = 0 < ENTRIES 13 | Goto ENTRY 14 | Get OFFSET Long 15 | Get SIZE Long 16 | Math SIZE - OFFSET 17 | Math OFFSET * 0x800 18 | Math SIZE * 0x800 19 | 20 | String FILENAME P "LOL_%A%" 21 | 22 | Log FILENAME OFFSET SIZE 23 | 24 | Math ENTRY + 4 25 | Next A 26 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Lunar_2_Eternal_Blue_(PSX)_IDX_PAK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Lunar 2: Eternal Blue (PSX) [SLUS_010.71] 3 | # IDX / PAK / UPD extract 4 | # QuickBMS script by DKDave, 2021 5 | # ================================================================================ 6 | 7 | # Use this script on the IDX file 8 | 9 | 10 | Open FDDE "PAK" 1 11 | Open FDDE "UPD" 2 12 | 13 | Goto 4 2 14 | Get ENTRIES Long 2 15 | GetDString JUNK 8 2 16 | Get NAMES Long 2 17 | 18 | Math ENTRY = 0x18 19 | 20 | For A = 0 < ENTRIES 21 | Goto ENTRY 2 22 | Get NAME_OFF Long 2 23 | GetDString JUNK 8 2 24 | Get ENTRY_ID Long 2 25 | Get SIZE Long 2 26 | Math NAME_OFF + NAMES 27 | Goto NAME_OFF 2 28 | Get FILENAME String 2 29 | 30 | XMath IDX_OFF "ENTRY_ID * 5" 31 | Goto IDX_OFF 0 32 | Get OFFSET Threebyte 0 33 | Math OFFSET << 8 34 | ReverseLong OFFSET 35 | Math OFFSET * 0x800 36 | 37 | Log FILENAME OFFSET SIZE 1 38 | 39 | Math ENTRY + 0x14 40 | Next A 41 | 42 | -------------------------------------------------------------------------------- /QuickBMS/PS1/MediEvil_(PS1)_MWD.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # MediEvil (PS1) 3 | # MEDRES.MWD extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the MEDIEVIL.EXE file and put MEDRES.MWD in the same folder 8 | 9 | 10 | Comtype PP20 11 | 12 | Open FDSE "MEDRES.MWD" 1 13 | 14 | Math ENTRY = 0xad064 15 | 16 | For A = 0 < 0x316 17 | Goto ENTRY 18 | Goto 12 0 SEEK_CUR 19 | Get OFFSET Long 20 | 21 | If OFFSET <> 0 22 | Math OFFSET * 0x800 23 | Goto 8 0 SEEK_CUR 24 | Get ZSIZE Long 25 | Get SIZE Long 26 | Math SIZE & 0x1FFFFFF # bit 25 = compression flag 27 | 28 | String FILENAME P "MEDRES_%A%" 29 | 30 | If SIZE > ZSIZE 31 | CLog FILENAME OFFSET ZSIZE SIZE 1 32 | Else 33 | Log FILENAME OFFSET ZSIZE 1 34 | Endif 35 | Endif 36 | 37 | Math ENTRY + 0x20 38 | Next A 39 | 40 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Metal_Gear_Solid_(PS1)_STAGE.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Metal Gear Solid (PS1) 3 | # STAGE.DIR extract 4 | # QuickBMS script by DKDave, 2020 5 | # ================================================================================ 6 | 7 | Get FILES Long 8 | Math FILES / 12 9 | Math ENTRY = 4 10 | 11 | For A = 0 < FILES 12 | Goto ENTRY 13 | GetDString FILENAME 8 14 | Get OFFSET Long 15 | Math OFFSET * 0x800 16 | Goto OFFSET 17 | Get JUNK Short 18 | Get SIZE Short 19 | Math SIZE * 0x800 20 | 21 | Log FILENAME OFFSET SIZE 22 | 23 | Math ENTRY + 12 24 | Next A 25 | 26 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Mori_No_Oukoku_(PS1)_SOUNDDAT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Mori No Oukoku (PS1) 3 | # SOUND.DAT extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Get FILES Long 9 | Math ENTRY = 4 10 | Get TEMPNAME basename 11 | 12 | For A = 0 < FILES 13 | Goto ENTRY 14 | Get OFFSET Long 15 | Goto OFFSET 16 | Goto 12 0 SEEK_CUR 17 | Get SIZE Long 18 | ReverseLong SIZE 19 | Math SIZE + 0x30 20 | 21 | String FILENAME P "%TEMPNAME%_%A%.vag" 22 | Log FILENAME OFFSET SIZE 23 | 24 | Math ENTRY + 4 25 | Next A 26 | 27 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Mortal_Kombat_Special_Forces_(PS1)_SFCDF.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Mortal Kombat: Special Forces (PS1) 3 | # SF.CDF extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | IDString "sf.cdf" 9 | 10 | Goto 0x0c 11 | Get FILES Long 12 | Get JUNK Long 13 | 14 | For A = 0 < FILES 15 | GetDString FILENAME 12 16 | Get OFFSET Long 17 | Get SIZE Long 18 | Log FILENAME OFFSET SIZE 19 | Next A 20 | 21 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Nuclear_Strike_(PS1)_AF.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Nuclear Strike (PS1) 3 | # Extract audio from *.AFx files 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | IDString "FAPG" 9 | 10 | Get TEMPNAME basename 11 | Get TEMPEXT extension 12 | 13 | Goto 0x0e 14 | Get HEADER_SIZE Short 15 | XMath DATA_START "HEADER_SIZE + 0xc" 16 | 17 | Goto 0x12 18 | Get FILES Short 19 | Math ENTRY = 0x14 20 | 21 | For A = 0 < FILES 22 | Goto ENTRY 23 | Get MISC1 Short 24 | Get RATE Short 25 | XMath RATE "(RATE * 48000) / 4096" 26 | Get OFFSET Short 27 | Math OFFSET + DATA_START 28 | Goto 4 0 SEEK_CUR 29 | Get OFFSET2 Short 30 | Math OFFSET2 + DATA_START 31 | XMath SIZE "OFFSET2 - OFFSET" 32 | 33 | Log MEMORY_FILE 0 0 34 | PutVarChr MEMORY_FILE 0x2f 0 Byte 35 | 36 | Endian Big 37 | PutVarChr MEMORY_FILE 0 0x56414770 Long 38 | PutVarChr MEMORY_FILE 0x0c SIZE Long 39 | PutVarChr MEMORY_FILE 0x10 RATE Long 40 | Endian Little 41 | 42 | Append 43 | Log MEMORY_FILE OFFSET SIZE 44 | Append 45 | 46 | Get MEM_SIZE asize -1 47 | String FILENAME P "%TEMPNAME%_%TEMPEXT%_%A%.vag" 48 | Log FILENAME 0 MEM_SIZE -1 49 | 50 | Math ENTRY + 6 51 | Next A 52 | 53 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Reboot_(PS1)_BIG_v2.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Reboot (PS1) 3 | # ROB.BIG extract 4 | # QuickBMS script by Dave, 2020 5 | # ================================================================================ 6 | 7 | # Input file is ROB.BIG, output files are .MUS that can be played in Foobar/vgmstream 8 | 9 | 10 | Get FILE_END asize 11 | Get TEMPNAME basename 12 | Math BLACK_START = 0 13 | Math FILE_COUNT = 0 14 | 15 | For 16 | If BLOCK_START = FILE_END 17 | Break 18 | Endif 19 | 20 | Goto BLOCK_START 21 | GetDString BLOCK_NAME 4 22 | Get BLOCK_SIZE Long 23 | 24 | If BLOCK_NAME = "SCEl" # end block for each file 25 | Append 26 | Log MEMORY_FILE BLOCK_START BLOCK_SIZE 27 | Append 28 | 29 | String FILENAME P "REBOOT_%FILE_COUNT%.mus" # write the completed file 30 | Get MEM_SIZE asize -1 31 | Log FILENAME 0 MEM_SIZE -1 32 | Math FILE_COUNT + 1 33 | Log MEMORY_FILE 0 0 # Reset memory file for next file 34 | Else 35 | Append 36 | Log MEMORY_FILE BLOCK_START BLOCK_SIZE 37 | Append 38 | 39 | Endif 40 | 41 | Math BLOCK_START + BLOCK_SIZE 42 | Next 43 | 44 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Ridge_Racer_4_(PS1)_BIN.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Ridge Racer 4 (PSX) 3 | # R4.BIN extract 4 | # QuickBMS Script by Dave, 2020 5 | # ================================================================================ 6 | 7 | Get ENTRIES Long 8 | Math ENTRY = 4 9 | 10 | For A = 1 To ENTRIES 11 | Goto ENTRY 12 | Get OFFSET Long 13 | Get OFFSET2 Long 14 | Math OFFSET * 0x800 15 | Math OFFSET2 * 0x800 16 | XMath SIZE "OFFSET2 - OFFSET" 17 | String FILENAME P "R4_BIN_%A%" 18 | 19 | Log FILENAME OFFSET SIZE 20 | 21 | Math ENTRY + 4 22 | Next A 23 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Rollcage_(PS1)_IMG.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Rollcage (PS1) 3 | # SPEED.IMG extract 4 | # QuickBMS script by DKDave, 2020 5 | # ================================================================================ 6 | 7 | Comtype LEGO_IXS 8 | 9 | Goto 4 10 | Get ENTRIES Long 11 | Math ENTRIES - 1 12 | Math ENTRIES / 0x10 13 | 14 | Math TABLE = 0x10 15 | 16 | For A = 1 To ENTRIES 17 | Goto TABLE 18 | Get OFFSET Long 19 | Get ZSIZE Long 20 | Get SIZE Long 21 | Get MISC1 Long 22 | 23 | String FILENAME P "ROLLCAGE_%A%_%MISC1%" 24 | 25 | If ZSIZE = SIZE 26 | Log FILENAME OFFSET ZSIZE 27 | Else 28 | Goto OFFSET 29 | Get MISC1 Long 30 | Get MISC2 Long # size - should be same as in file table 31 | Get MISC3 Long # same value as in header 32 | Get HEADER_SIZE Long 33 | XMath OFFSET2 "OFFSET + 0x10 + HEADER_SIZE" 34 | XMath ZSIZE "ZSIZE - HEADER_SIZE - 0x10" 35 | 36 | CLog FILENAME OFFSET2 ZSIZE SIZE 37 | Endif 38 | 39 | Math TABLE + 0x10 40 | Next A 41 | 42 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Small_Soldiers_(PS1)_RSC.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Small Soldiers (PS1) 3 | # RSC extract 4 | # QuickBMS script by DKDave, 2022 5 | # ================================================================================ 6 | 7 | 8 | Goto 0x40 9 | Get FILES Long 10 | 11 | Goto 0x48 12 | 13 | For A = 0 < FILES 14 | GetDString FILENAME 0x44 15 | Get SIZE Long 16 | Get OFFSET Long 17 | Get MISC1 Long 18 | 19 | Log FILENAME OFFSET SIZE 20 | Next A 21 | 22 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Tony_Hawk's_Pro_Skater_(PS1)_HED-WAD.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Tony Hawk's Pro Skater (PS1) 3 | # HED/WAD extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the HED file 8 | 9 | 10 | Open FDDE "WAD" 1 11 | 12 | Get FILE_END asize 13 | Math ENTRY = 0 14 | 15 | For A = 0 16 | Goto ENTRY 17 | Get TEMP Byte 18 | 19 | If TEMP = 0xFF 20 | Break 21 | Endif 22 | 23 | Goto ENTRY 24 | Get FILENAME String 25 | Padding 4 26 | Get OFFSET Long 27 | Get SIZE Long 28 | 29 | SavePos ENTRY 30 | 31 | Log FILENAME OFFSET SIZE 1 32 | 33 | Next A 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Wing_Commander_3&4_(PS1)_LIB.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Wing Commander III & IV (PS1) 3 | # LIB extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Log MEMORY_FILE 0 0 9 | PutVarChr MEMORY_FILE 0x2f 0 Byte 10 | PutVarChr MEMORY_FILE 0 0x70474156 Long 11 | PutVarChr MEMORY_FILE 0x10 0x112B0000 Long 12 | 13 | Get FILES Short 14 | 15 | For A = 0 < FILES 16 | Get SIZE Long 17 | Get OFFSET Long 18 | GetDString FILENAME 0x10 19 | String TEMP1 = FILENAME 20 | String TEMP1 $ ".tai" 21 | 22 | If TEMP1 = ".tai" # Add vag header to raw audio 23 | Endian Big 24 | PutVarChr MEMORY_FILE 0x0c SIZE Long 25 | Endian Little 26 | String FILENAME R ".tai" ".vag" 27 | Log FILENAME 0 0x30 -1 28 | Append 29 | Log FILENAME OFFSET SIZE 30 | Append 31 | Else 32 | Log FILENAME OFFSET SIZE 33 | Endif 34 | 35 | Next A 36 | -------------------------------------------------------------------------------- /QuickBMS/PS1/Wipeout3_(PS1)_PBP.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Wipeout 3 (PSX) 3 | # PBP Extract 4 | # QuickBMS script by Dave, 2021 5 | # ================================================================================ 6 | 7 | # use wipeout_tool to extract the .cmp files 8 | 9 | 10 | Get TEMPNAME basename 11 | 12 | Set MEMORY_FILE binary "\x01\x00\x00\x00\x00\x00\x00\x00" 13 | 14 | Goto 0x50 15 | Get ENTRIES Long 16 | 17 | Goto 0x58 18 | 19 | For A = 0 < ENTRIES 20 | Get OFFSET Long 21 | Get SIZE Long 22 | Get ZSIZE Long 23 | 24 | String FILENAME P "%TEMPNAME%\%TEMPNAME%_%A%.cmp" 25 | 26 | If ZSIZE = SIZE 27 | Log FILENAME OFFSET ZSIZE 28 | Else # create fake CMP header for 1 file 29 | PutVarChr MEMORY_FILE 4 SIZE Long 30 | Log FILENAME 0 8 -1 31 | Append 32 | Log FILENAME OFFSET ZSIZE 33 | Append 34 | Endif 35 | 36 | Next A 37 | 38 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Altered_Beast_(PS2)_TB-BIN.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Altered Beast (PS2) 3 | # TB/BIN audio extract (sound effects) 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Files are extracted as playable .vag files 8 | 9 | 10 | Open FDDE "BIN" 1 11 | 12 | Get TEMPNAME basename 13 | 14 | Log MEMORY_FILE 0 0 15 | PutVarChr MEMORY_FILE 0x2f 0 Byte 16 | PutVarChr MEMORY_FILE 0 0x70474156 Long 17 | 18 | Goto 0xb8 19 | Get ENTRY Long 20 | 21 | Goto ENTRY 22 | Get FILES Long 23 | 24 | For A = 0 < FILES 25 | Get OFFSET Long 26 | Goto 6 0 SEEK_CUR 27 | Get SAMP_RATE Short 28 | Get SIZE Long 29 | 30 | ReverseLong SAMP_RATE 31 | ReverseLong SIZE 32 | PutVarChr MEMORY_FILE 0x0c SIZE Long 33 | PutVarChr MEMORY_FILE 0x10 SAMP_RATE Long 34 | ReverseLong SAMP_RATE 35 | ReverseLong SIZE 36 | 37 | String FILENAME P "%TEMPNAME%_%A%.vag" 38 | 39 | Log FILENAME 0 0x30 -1 40 | Append 41 | Log FILENAME OFFSET SIZE 1 42 | Append 43 | 44 | Next A 45 | 46 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Ape_Escape_2_(PS2&PS4)_GZS.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Ape Escape 2 (PS2/PS4) 3 | # GZS extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Comtype gzip 9 | 10 | IDString "gzs" 11 | 12 | Goto 0x10 13 | Get FILES Long 14 | 15 | Goto 0x20 16 | 17 | For A = 0 < FILES 18 | GetDString FILENAME 0x10 19 | Get OFFSET Long 20 | Math OFFSET * 0x800 21 | Get ZSIZE Long 22 | Math ZSIZE * 0x800 23 | Get SIZE Long 24 | Get JUNK Long 25 | 26 | CLog MEMORY_FILE OFFSET ZSIZE SIZE 27 | 28 | # Extract files from IDP archive 29 | 30 | IDString -1 "IDP" 31 | 32 | Goto 8 -1 33 | Get FILES2 Long -1 34 | Goto 0x10 -1 35 | 36 | For B = 0 < FILES2 37 | GetDString FILENAME2 0x10 -1 38 | Get OFFSET2 Long -1 39 | GetDString EXT 4 -1 40 | Get SIZE2 Long -1 41 | Get JUNK Long -1 42 | String FILENAME2 P "%FILENAME2%.%EXT%" 43 | Log FILENAME2 OFFSET2 SIZE2 -1 44 | Next B 45 | 46 | Next A 47 | 48 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Ape_Escape_2_(PS2&PS4)_VGS.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Ape Escape 2 (PS2/PS4) 3 | # VGS audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Note: PS2 and PS4 files are identical 8 | 9 | 10 | Log MEMORY_FILE 0 0 11 | PutVarChr MEMORY_FILE 0x2f 0 Byte 12 | PutVarChr MEMORY_FILE 0 0x70474156 Long 13 | 14 | For A = 0 15 | GetDString FILENAME 0x10 16 | 17 | If FILENAME = "" 18 | Break 19 | Endif 20 | 21 | Get OFFSET Long 22 | Math OFFSET * 0x800 23 | Get JUNK Long 24 | Get SIZE Long 25 | Get RATE Long 26 | 27 | Goto 0x20 -1 28 | PutDString FILENAME 0x10 -1 29 | String FILENAME + ".vag" 30 | 31 | Endian Big 32 | PutVarChr MEMORY_FILE 0x0c SIZE Long 33 | PutVarChr MEMORY_FILE 0x10 RATE Long 34 | Endian Little 35 | 36 | Log FILENAME 0 0x30 -1 37 | Append 38 | Log FILENAME OFFSET SIZE 39 | Append 40 | Next A 41 | 42 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Armored_Core_2_Another_Age_(PS2)_VVV.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Armored Core 2: Another Age (PS2) 3 | # BRIEF*.VVV audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Most of the vag files have names within them, the ones that don't have been given generic names 8 | # There are also a few duplicates which can be ignored 9 | 10 | 11 | Get TEMPNAME basename 12 | 13 | For A = 0 14 | FindLoc OFFSET String "VAGp" 0 "" 15 | 16 | If OFFSET = "" 17 | Break 18 | Endif 19 | 20 | Goto OFFSET 21 | Goto 12 0 SEEK_CUR 22 | Get SIZE Long 23 | ReverseLong SIZE 24 | Math SIZE + 0x30 25 | Goto 0x10 0 SEEK_CUR 26 | GetDString FILENAME 0x10 27 | 28 | If FILENAME = "\\Server_mng\snd" 29 | String FILENAME P "%TEMPNAME%_%A%" 30 | Endif 31 | 32 | String FILENAME + ".vag" 33 | 34 | Log FILENAME OFFSET SIZE 35 | Next A 36 | 37 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Avatar_Into_The_Inferno_(PS2)_PAK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Avatar: Into The Inferno (PS2) 3 | # PAK extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Some of the extracted files are also PAK archives which can be further extracted with this script 8 | 9 | 10 | IDString "kcap" 11 | 12 | Goto 8 13 | Get ENTRY Long 14 | Get JUNK Long 15 | Get NAMES Long 16 | Get FILES Long 17 | Math NAMES + ENTRY 18 | 19 | For A = 0 < FILES 20 | Goto ENTRY 21 | Get OFFSET Long 22 | Get SIZE Long 23 | Get ZSIZE Long 24 | Get NAME_OFF Long 25 | Math NAME_OFF + NAMES 26 | Goto NAME_OFF 27 | Get FILENAME String 28 | 29 | If ZSIZE = SIZE 30 | Log FILENAME OFFSET ZSIZE 31 | Else 32 | CLog FILENAME OFFSET ZSIZE SIZE 33 | Endif 34 | 35 | Math ENTRY + 0x18 36 | Next A 37 | 38 | 39 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Baroque_(PS2)_SFS.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Baroque (PS2) 3 | # BRQSOUND extract 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | 8 | Get FILE_END asize 9 | Math ENTRY = 0 10 | 11 | For A = 0 12 | Goto ENTRY 13 | Get OFFSET Long 14 | Math OFFSET * 0x800 15 | Get OFFSET2 Long 16 | Math OFFSET2 * 0x800 17 | XMath SIZE "OFFSET2 - OFFSET" 18 | 19 | If OFFSET = FILE_END 20 | Break 21 | Endif 22 | 23 | Goto OFFSET 24 | GetDString TYPE 4 25 | 26 | If TYPE = "VAGp" 27 | Goto 8 0 SEEK_CUR 28 | Get VAG_SIZE Long 29 | ReverseLong VAG_SIZE 30 | Math VAG_SIZE + 0x30 31 | Goto 0x10 0 SEEK_CUR 32 | GetDString FILENAME 0x10 33 | String FILENAME - ".wav" 34 | String FILENAME + ".vag" 35 | Log FILENAME OFFSET VAG_SIZE 36 | 37 | Elif TYPE = "STER" 38 | Goto 8 0 SEEK_CUR 39 | Get VAG_SIZE Long 40 | ReverseLong VAG_SIZE 41 | Math VAG_SIZE * 2 42 | Math VAG_SIZE + 0x30 43 | Goto 0x10 0 SEEK_CUR 44 | GetDString FILENAME 0x10 45 | String FILENAME - ".wav" 46 | String FILENAME + ".ster" 47 | Log FILENAME OFFSET VAG_SIZE 48 | 49 | Elif A = 0 50 | String FILENAME = "BRQSOUND.BD" 51 | Log FILENAME OFFSET SIZE 52 | 53 | Elif A = 1 54 | String FILENAME = "BRQSOUND.HD" 55 | Log FILENAME OFFSET SIZE 56 | 57 | Endif 58 | 59 | Math ENTRY + 4 60 | Next A 61 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Beatmania_II_DX_3_(PS2)_BIN.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Beatmania II DX 3 (PS2) 3 | # BM2DX3.BIN extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the SLPM_650.06 file and have BM2DX3.BIN in the same folder 8 | # There are no filenames or file types, so this just extracts the data for further analysis 9 | 10 | 11 | Open FDSE "BM2DX3.BIN" 1 12 | 13 | Math ENTRY = 0x145cd0 14 | 15 | For A = 0 < 0x15c 16 | Goto ENTRY 17 | Get OFFSET Long 18 | Math OFFSET * 0x800 19 | Get SIZE Long 20 | Get MISC1 Long 21 | 22 | String FILENAME P "BM2DX3_%A%" 23 | Log FILENAME OFFSET SIZE 1 24 | 25 | Math ENTRY + 12 26 | Next A 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Contra_Shattered_Soldier_(PS2)_FILEDATA.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Contra: Shattered Soldier (PS2) 3 | # FILEDATA.BIN extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Math TABLE = 0x1000 9 | Get END asize 10 | 11 | For A = 0 12 | Goto TABLE 13 | Get MISC1 Long 14 | 15 | If MISC1 = 0x544f4f42 16 | Break 17 | Endif 18 | 19 | Get JUNK Long 20 | Get TABLE_SIZE Long 21 | Get JUNK Long 22 | Get FILES Long 23 | Get ENTRY Long 24 | Math ENTRY + TABLE 25 | 26 | For B = 0 < FILES 27 | Goto ENTRY 28 | Get ID Long 29 | Get TYPE Long # Only 0 or 2 ? 30 | Get OFFSET Long 31 | Math OFFSET + ENTRY # Data is relative to the start of its entry in file table 32 | Get SIZE Long 33 | 34 | String FILENAME P "FILEDATA_%A%_%B%" 35 | Log FILENAME OFFSET SIZE 36 | 37 | Math ENTRY + 0x10 38 | Next B 39 | 40 | Math TABLE + TABLE_SIZE 41 | Next A 42 | 43 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Contra_Shattered_Soldier_(PS2)_PALSD.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Contra: Shattered Soldier (PS2) 3 | # PAL_SD.BIN extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # This archive contains music and instrument/sequence data 8 | 9 | 10 | IDString "TYOSD v-1.01" 11 | 12 | Get FILES Long 13 | SavePos ENTRY 14 | 15 | For A = 0 < FILES 16 | Goto ENTRY 17 | Get OFFSET Long 18 | Get SIZE Long 19 | Math OFFSET * 0x800 20 | 21 | Goto OFFSET 22 | GetDString TYPE 4 23 | 24 | String FILENAME P "PAL_%A%" 25 | 26 | If TYPE = "IECS" 27 | String FILENAME + ".hd" 28 | Elif TYPE = "SdDt" 29 | String FILENAME + ".sddt" 30 | Elif TYPE = "Svag" 31 | String FILENAME + ".svag" 32 | Else 33 | String FILENAME + ".bd" 34 | Endif 35 | 36 | Log FILENAME OFFSET SIZE 37 | 38 | Math ENTRY + 8 39 | Next A 40 | 41 | 42 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Disaster_Report_(PS2)_FAT-DAT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Disaster Report (PS2) 3 | # FAT/DAT extract 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | 8 | IDString "FAT " 9 | 10 | Open FDDE "DAT" 1 11 | 12 | Get FILES Long 13 | Math ENTRY = 0x100 14 | 15 | For A = 0 < FILES 16 | Goto ENTRY 17 | Get OFFSET Long 18 | Get SIZE Long 19 | Get MISC1 Long 20 | Get NAME_OFF Long 21 | Goto NAME_OFF 22 | Get FILENAME String 23 | 24 | Log FILENAME OFFSET SIZE 1 25 | 26 | Math ENTRY + 0x10 27 | Next A 28 | 29 | 30 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Donald_Duck_Goin_Quackers_(PS2)-FAT-000.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Donald Duck: Goin' Quackers (PS2) 3 | # FAT/000 extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the .FAT files 8 | 9 | 10 | Comtype lzo1x 11 | 12 | Open FDDE "000" 1 13 | 14 | Get END asize 15 | 16 | Math ENTRY = 1 17 | 18 | For A = 0 19 | If ENTRY = END 20 | Break 21 | Endif 22 | 23 | Goto ENTRY 24 | Get LOC Long 25 | Get OFFSET Long # 1 = folder 26 | Get TOTAL_SIZE Long # size of all uncompressed parts 27 | Get TOTAL_ZSIZE Long # size of all compressed parts (without headers) 28 | Goto 0x10 0 SEEK_CUR 29 | Get LEN Long 30 | GetDString FILENAME LEN 31 | SavePos ENTRY 32 | 33 | If OFFSET <> 1 34 | Log MEMORY_FILE 0 0 35 | 36 | For B = 0 37 | Goto OFFSET 1 38 | Get SIZE Long 1 39 | Get ZSIZE Long 1 40 | Goto 8 1 SEEK_CUR # Skip "BEBAADDE0341e866" 41 | SavePos OFFSET 1 42 | 43 | If ZSIZE = SIZE 44 | Append 45 | Log MEMORY_FILE OFFSET ZSIZE 1 46 | Append 47 | Else 48 | Append 49 | CLog MEMORY_FILE OFFSET ZSIZE SIZE 1 50 | Append 51 | Endif 52 | 53 | Math OFFSET + ZSIZE 54 | Get MEM_SIZE asize -1 55 | 56 | If MEM_SIZE = TOTAL_SIZE 57 | Log FILENAME 0 TOTAL_SIZE -1 58 | Break 59 | Endif 60 | Next B 61 | 62 | Endif 63 | 64 | Next A 65 | 66 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Echo_Night_Beyond_(PS2)_BND.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Echo Night: Beyond (PS2) 3 | # BND extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Note: the files in the "savedata" folders have non-ASCII characters in the names 8 | 9 | 10 | IDString "BND\x00" 11 | 12 | Goto 0x10 13 | Get FILES Long 14 | Math ENTRY = 0x20 15 | 16 | For A = 0 < FILES 17 | Goto ENTRY 18 | Get JUNK Long 19 | Get OFFSET Long 20 | Get SIZE Long 21 | Get FNAME_OFFSET Long 22 | Goto FNAME_OFFSET 23 | Get FILENAME String 24 | 25 | Log FILENAME OFFSET SIZE 26 | 27 | Math ENTRY + 0x10 28 | Next A 29 | 30 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Eve_Of_Extinction_(PS2)_ADP.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Eve Of Extinction (PS2) 3 | # .ADP audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | IDString "ADP_" 8 | 9 | Get FILES Long 10 | Get CHANNELS Long 11 | Get SAMP_RATE Long 12 | Get JUNK Long 13 | Get TEMPNAME basename 14 | 15 | Log MEMORY_FILE 0 0 16 | PutVarChr MEMORY_FILE 0x2f 0 Byte 17 | PutVarChr MEMORY_FILE 0 0x70474156 Long 18 | 19 | For A = 0 < FILES 20 | Get SIZE Long 21 | Get OFFSET Long 22 | 23 | Endian Big 24 | PutVarChr MEMORY_FILE 0x0c SIZE Long 25 | PutVarChr MEMORY_FILE 0x10 SAMP_RATE Long 26 | Endian Little 27 | 28 | String FILENAME P "%TEMPNAME%_%A%.vag" 29 | 30 | Log FILENAME 0 0x30 -1 31 | Append 32 | Log FILENAME OFFSET SIZE 33 | Append 34 | Next A 35 | 36 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Eve_Of_Extinction_(PS2)_ADV.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Eve Of Extinction (PS2) 3 | # .ADV audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | IDString "ADV_" 8 | 9 | Get TEMPNAME basename 10 | Get FILES Long 11 | Math ENTRY = 8 12 | 13 | For A = 0 < FILES 14 | Goto ENTRY 15 | Get OFFSET Long 16 | Get MISC1 Long # Size in blocks, not needed 17 | Math OFFSET * 0x800 18 | Goto OFFSET 19 | Goto 0x24 0 SEEK_CUR 20 | Get SIZE Long 21 | Math SIZE + 0x28 22 | 23 | String FILENAME P "%TEMPNAME%_%A%.ss2" 24 | Log FILENAME OFFSET SIZE 25 | 26 | Math ENTRY + 8 27 | Next A 28 | 29 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Eve_Of_Extinction_(PS2)_BDH-BDP.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Eve Of Extinction (PS2) 3 | # BDH/BDP extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the BDH file 8 | 9 | 10 | IDString "BDP_" 11 | 12 | Open FDDE "BDP" 1 13 | 14 | Get TEMPNAME basename 15 | Get FILES Long 16 | SavePos ENTRY 17 | 18 | For A = 0 < FILES 19 | Goto ENTRY 20 | Get OFFSET Long 21 | Get SIZE Long 22 | Math OFFSET * 0x800 23 | Math SIZE * 0x800 24 | 25 | Goto OFFSET 1 26 | GetDString TYPE 4 1 27 | 28 | If TYPE = "APC_" 29 | String EXT = ".apc" 30 | Elif TYPE = "BRS_" 31 | String EXT = ".brs" 32 | Elif TYPE = "BMV2" 33 | String EXT = ".bmv2" 34 | Elif TYPE = "PAC_" 35 | String EXT = ".pac" 36 | Else 37 | String EXT = "" 38 | Endif 39 | 40 | String FILENAME P "%TEMPNAME%_%A%%EXT%" 41 | Log FILENAME OFFSET SIZE 1 42 | 43 | Math ENTRY + 8 44 | Next A 45 | 46 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Fatal_Frame_(PS2)_IMGBD.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Fatal Frame (aka Zero/Project Zero) (PS2) 3 | # IMG_HD/IMG_BD extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on IMG_HD.BIN - place IMG_BD.BIN and SLUS_203.88 in the same folder 8 | 9 | 10 | Open FDSE "IMG_BD.BIN" 1 11 | Open FDSE "SLUS_203.88" 2 12 | 13 | Get ENTRIES asize 14 | Math ENTRIES / 8 15 | Math FNAMES = 0x58b7df 16 | 17 | For A = 0 18 | Goto FNAMES 2 19 | GetDString TEMP1 1 2 20 | 21 | If TEMP1 = ";" 22 | Break 23 | Endif 24 | 25 | If TEMP1 = "\" 26 | Get JUNK Byte 2 27 | Else 28 | Goto FNAMES 2 29 | Endif 30 | 31 | GetCT FILENAME String 0x3a 2 32 | GetCT FNUM String 0x2c 2 33 | SavePos FNAMES 2 34 | 35 | String FILENAME2 = FILENAME 36 | String FILENAME2 $ "_" 37 | String FILENAME - FILENAME2 38 | String FILENAME2 R "_" "." 39 | String FILENAME + FILENAME2 40 | Math FNUM = FNUM 41 | 42 | XMath ENTRY "FNUM * 8" 43 | Goto ENTRY 44 | Get OFFSET Long 45 | Get SIZE Long 46 | 47 | If SIZE <> 0 48 | Math OFFSET * 0x800 49 | Log FILENAME OFFSET SIZE 1 50 | Endif 51 | 52 | Next A 53 | 54 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Fighting_Fury_(PS2)_DATALIST.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Fighting Fury (PS2) 3 | # DATALIST DAT/BIN extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the DATALIST.DAT file 8 | 9 | 10 | IDString "baki" 11 | 12 | Open FDDE "bin" 1 13 | 14 | Get TEMPNAME basename 15 | Get FILES Long 16 | 17 | For A = 0 < FILES 18 | Get OFFSET Long 19 | Get SIZE Long 20 | Math OFFSET * 0x800 21 | Math SIZE * 0x800 22 | 23 | String FILENAME P "%TEMPNAME%_%A%" 24 | 25 | Log FILENAME OFFSET SIZE 1 26 | Next A 27 | 28 | 29 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Firefighter_FD18_(PS2)_BIN.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Firefighter FD 18 (PS2) 3 | # AUDIO.BIN extract 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | 8 | IDString "TYOSD v-1.28" 9 | 10 | Get TEMPNAME basename 11 | Get FILES Long 12 | Math ENTRY = 0x10 13 | 14 | For A = 0 < FILES 15 | Goto ENTRY 16 | Get OFFSET Long 17 | Math OFFSET * 0x800 18 | Get SIZE Long 19 | Goto OFFSET 20 | GetDString TYPE 4 21 | 22 | If TYPE = "Svag" 23 | String EXT l "svag" 24 | Elif TYPE = "SdDt" 25 | String EXT l "sddt" 26 | Elif TYPE = "IECS" 27 | String EXT l "hd" 28 | Else 29 | String EXT l "bd" 30 | Endif 31 | 32 | String FILENAME P "%TEMPNAME%_%A%.%EXT%" 33 | 34 | Log FILENAME OFFSET SIZE 35 | 36 | Math ENTRY + 8 37 | Next A 38 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Forbidden_Siren_(PS2)_TBL.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Siren (PS2) 3 | # TBL extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Files are extracted directly from the ISO, no need to extract the SIREN.xxx archives first 8 | 9 | 10 | QuickBMSVer -64 11 | 12 | Open FDSE "Siren.iso" 1 13 | 14 | Get ZSIZE asize 0 15 | FileXor 0xff 16 | Log MEMORY_FILE 0 ZSIZE 17 | FileXor 0 18 | 19 | Goto 4 -1 20 | Get FILES Long -1 21 | Goto 0x10 -1 22 | Get ENTRY Long -1 23 | Get NAMES Long -1 24 | 25 | For A = 0 < FILES 26 | Goto ENTRY -1 27 | Get OFFSET Long -1 28 | Math OFFSET * 0x800 29 | Get SIZE Long -1 30 | Get NAME_OFF Long -1 31 | Math NAME_OFF + NAMES 32 | Goto NAME_OFF -1 33 | Get FILENAME String -1 34 | 35 | Log FILENAME OFFSET SIZE 1 36 | 37 | Math ENTRY + 12 38 | Next A 39 | 40 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Forbidden_Siren_2_(PS2)_ROM.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Forbidden Siren 2 (PS2) 3 | # SPK.ROM / ROM.xxx extract 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | 8 | IDString "SLPK" 9 | 10 | Goto 0x08 11 | Get FILES Long 12 | Get NAMES Long 13 | Math ENTRY = 0x20 14 | 15 | For A = 0 < FILES 16 | Goto ENTRY 17 | Get NAME_OFF Long # Offset to filename 18 | Math NAME_OFF + NAMES 19 | Get ARCNAME_OFF Long # Offset to archive name 20 | Math ARCNAME_OFF + NAMES 21 | Get OFFSET Long # Offset 22 | Get SIZE Long # Size 23 | XMath FLAG "(SIZE & 0x80000000) >> 31" # bit 31 = ? 24 | Math SIZE & 0x7fffffff 25 | 26 | Goto NAME_OFF 27 | Get FILENAME String 28 | Goto ARCNAME_OFF 29 | Get ARCNAME String 30 | 31 | Open FDSE ARCNAME 1 32 | 33 | If SIZE > 0 34 | Log FILENAME OFFSET SIZE 1 35 | Endif 36 | 37 | Math ENTRY + 0x10 38 | Next A 39 | 40 | 41 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Freaky_Flyers_(PS2)_MST.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Freaky Flyers (PS2) 3 | # MST extract 4 | # QuickBMS script by DKDave, 2022 5 | # ================================================================================ 6 | 7 | 8 | IDString "FANG" 9 | 10 | Goto 0x0c 11 | Get ENTRIES Long 12 | 13 | Goto 0x6c 14 | 15 | For A = 0 < ENTRIES 16 | GetDString FILENAME 0x18 17 | Get OFFSET Long 18 | Get SIZE Long 19 | Get MISC1 Long 20 | Get MISC2 Long 21 | Log FILENAME OFFSET SIZE 22 | Next A 23 | 24 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Frequency_(PS2)_ARK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Frequency (PS2) 3 | # .ARK archive extract 4 | # QuickBMS script by Dave, 2021 5 | # ================================================================================ 6 | 7 | Comtype gzip 8 | 9 | IDString "ARK\x00" 10 | 11 | Goto 0x08 12 | Get FILE_TABLE Long 13 | Get ENTRIES Long 14 | Get FOLDER_TABLE Long 15 | Get FOLDER_ENTRIES Long 16 | Get NAMES Long 17 | 18 | Math FOLDER_ENTRIES - 1 19 | 20 | For A = 0 To FOLDER_ENTRIES 21 | Goto FOLDER_TABLE 22 | Get MISC1 Long 23 | Get FNAME_OFF Long 24 | Goto FNAME_OFF 25 | Get FNAME String 26 | 27 | PutArray 0 A FNAME 28 | 29 | Math FOLDER_TABLE + 8 30 | Next A 31 | 32 | 33 | For A = 1 To ENTRIES 34 | Goto FILE_TABLE 35 | Get MISC1 Long 36 | Get FILENAME_OFF Long 37 | Get FOLDER_ID Short 38 | GetArray FOLDER_NAME 0 FOLDER_ID 39 | 40 | Get DATA_OFFSET Short 41 | Get START_BLOCK Long 42 | Get ZSIZE Long 43 | Get SIZE Long 44 | XMath OFFSET "(START_BLOCK * 0x800) + DATA_OFFSET" 45 | 46 | Goto FILENAME_OFF 47 | Get FILENAME String 48 | String FILENAME P "%FOLDER_NAME%/%FILENAME%" 49 | 50 | If ZSIZE = SIZE 51 | Log FILENAME OFFSET ZSIZE 52 | Else 53 | String FILENAME - ".gz" 54 | CLog FILENAME OFFSET ZSIZE ZSIZE 55 | Endif 56 | 57 | Math FILE_TABLE + 0x18 58 | Next A 59 | 60 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Glass_Rose_(PS2)_FIF-FPK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Glass Rose (PS2) 3 | # FIF / FPK archive extract 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | # Use this script on the FIF file 8 | 9 | 10 | Open FDDE "FPK" 1 11 | 12 | Get FILES asize 13 | Math FILES / 0x18 14 | 15 | For A = 0 16 | GetDString FILENAME 0x10 17 | Get OFFSET Long 18 | Get SIZE Long 19 | Math OFFSET * 0x800 20 | 21 | If FILENAME = "" 22 | Break 23 | Endif 24 | 25 | Log FILENAME OFFSET SIZE 1 26 | 27 | Next A 28 | 29 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Gungrave_(PS2)_BIN.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Gungrave (PS2) 3 | # .BIN audio extract (from SE folder) 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Get TEMPNAME basename 9 | 10 | Log MEMORY_FILE 0 0 11 | PutVarChr MEMORY_FILE 0x2f 0 Byte 12 | PutVarChr MEMORY_FILE 0 0x70474156 Long 13 | 14 | Math ENTRY = 0 15 | 16 | For A = 0 17 | Goto ENTRY 18 | Get OFFSET Long 19 | Get SAMP_RATE Long 20 | 21 | If OFFSET = 0xFFFFFFFF 22 | Break 23 | Endif 24 | 25 | If SAMP_RATE <> 0 26 | ReverseLong SAMP_RATE 27 | PutVarChr MEMORY_FILE 0x10 SAMP_RATE Long 28 | 29 | Goto OFFSET 30 | Get SIZE Threebyte 31 | Get MISC1 Byte 32 | GetDString NAME 0x10 33 | SavePos OFFSET 34 | ReverseLong SIZE 35 | PutVarChr MEMORY_FILE 0x0c SIZE Long 36 | ReverseLong SIZE 37 | 38 | String FILENAME P "%TEMPNAME%_%A%.vag" 39 | 40 | Log FILENAME 0 0x30 -1 41 | Append 42 | Log FILENAME OFFSET SIZE 43 | Append 44 | 45 | Endif 46 | 47 | Math ENTRY + 8 48 | Next A 49 | 50 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Jak_2_Renegade_(PS2)_VAGDIR-WAD.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Jak II: Renegade (PS2) 3 | # VAGDIR / VAGWAD extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the VAGDIR file 8 | 9 | 10 | Open FDSE "VAGWAD.ENG" 1 11 | 12 | Get FILES Long 13 | Math ENTRY = 4 14 | 15 | For A = 0 < FILES 16 | Goto ENTRY 17 | GetDString FILENAME 8 18 | Get OFFSET Long 19 | Math OFFSET * 0x800 20 | Get CHANNELS Long 21 | Goto OFFSET 1 22 | Goto 0x0c 1 SEEK_CUR 23 | Get SIZE Long 1 24 | 25 | If CHANNELS = 1 26 | Math SIZE + 0x2000 27 | Endif 28 | 29 | String FILENAME R " " "" 30 | String FILENAME + ".vag" 31 | 32 | Log FILENAME OFFSET SIZE 1 33 | 34 | Math ENTRY + 0x10 35 | Next A 36 | 37 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Jak_Daxter_Precursor_Legacy_(PS2)_VAGDIR-WAD.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Jak And Daxter: The Precursor Legacy (PS2) 3 | # VAGDIR / VAGWAD extract 4 | # QuickBMS script by DKDave, 2021 5 | # ================================================================================ 6 | 7 | # Use this script on the VAGDIR.AYB file 8 | 9 | 10 | Open FDSE "VAGWAD.ENG" 1 11 | 12 | Get ENTRIES Long 13 | 14 | For A = 0 < ENTRIES 15 | GetDString FILENAME 8 16 | String FILENAME R " " "" 17 | String FILENAME + ".vag" 18 | 19 | Get OFFSET Long 20 | Math OFFSET * 0x800 21 | 22 | Goto OFFSET 1 23 | GetDString JUNK 12 1 24 | Get SIZE Long 1 25 | ReverseLong SIZE 26 | Math SIZE + 0x20 27 | 28 | Log FILENAME OFFSET SIZE 1 29 | 30 | Next A 31 | -------------------------------------------------------------------------------- /QuickBMS/PS2/James_Bond_Nightfire_(PS2)_FILESBIN.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # James Bond 007: Nightfire (PS2) 3 | # FILES.BIN extract 4 | # QuickBMS script by DKDave, 2022 (updated 2023) (v2) 5 | # ================================================================================ 6 | 7 | # Open the script with ACTION.ELF 8 | # Each .bin file in the FILES.BIN archive will be extracted into their own separate folders 9 | 10 | 11 | Open FDSE "FILES.BIN" 1 12 | 13 | Math ENTRY = 0x13f2a0 14 | 15 | For A = 0 < 118 16 | Goto ENTRY 17 | GetDString FILENAME1 16 18 | Get OFFSET Long 19 | Get SIZE Long 20 | Set EXT extension FILENAME1 21 | 22 | If EXT = "bin" 23 | Goto OFFSET 1 24 | Get TABLE_SIZE Long 1 25 | Get FILES Long 1 26 | XMath ENTRY2 "OFFSET + 0x800" 27 | XMath OFFSET2 "ENTRY2 + TABLE_SIZE" 28 | 29 | Goto ENTRY2 1 30 | 31 | For B = 0 < FILES 32 | Get SIZE2 Long 1 33 | Get TYPE Byte 1 34 | Get FILENAME2 String 1 35 | 36 | String OUTFILE P "%FILENAME1%\%FILENAME2%" 37 | 38 | Log OUTFILE OFFSET2 SIZE2 1 39 | 40 | Math OFFSET2 + SIZE2 41 | Next B 42 | 43 | Endif 44 | 45 | Math ENTRY + 0x20 46 | Next A 47 | 48 | -------------------------------------------------------------------------------- /QuickBMS/PS2/MTV_Music_Generator_3_(PS2)_WBD-DBD.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # MTV Music Generator 3 (PS2) 3 | # WBD / DBD audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Input file is OUTPUT.WBD 8 | 9 | 10 | Open FDSE "DBBODY.DBD" 1 11 | 12 | # Create SS2 header 13 | 14 | Log MEMORY_FILE 0 0 15 | PutVarChr MEMORY_FILE 0x27 0 Byte 16 | PutVarChr MEMORY_FILE 0 0x64685353 Long # SShd 17 | PutVarChr MEMORY_FILE 0x04 0x18 Long 18 | PutVarChr MEMORY_FILE 0x08 1 Long # 16-bit PCM 19 | PutVarChr MEMORY_FILE 0x0c 44100 Long 20 | PutVarChr MEMORY_FILE 0x10 1 Long # Channels 21 | PutVarChr MEMORY_FILE 0x14 0 Long # Interleave 22 | PutVarChr MEMORY_FILE 0x20 0x64625353 Long # SSbd 23 | PutVarChr MEMORY_FILE 0x18 0xFFFFFFFF Long 24 | PutVarChr MEMORY_FILE 0x1c 0xFFFFFFFF Long 25 | 26 | Goto 8 27 | Get FILES Long 28 | Math ENTRY = 0x2a6c 29 | 30 | For A = 0 < FILES 31 | Goto ENTRY 32 | Goto 0x20 0 SEEK_CUR 33 | Get SIZE Long 34 | Get OFFSET Long 35 | Get JUNK Long 36 | Get FILENAME String 37 | String FILENAME + ".ss2" 38 | 39 | PutVarChr MEMORY_FILE 0x24 SIZE Long 40 | 41 | Log FILENAME 0 0x28 -1 42 | Append 43 | Log FILENAME OFFSET SIZE 1 44 | Append 45 | 46 | Math ENTRY + 0x3c 47 | Next A 48 | 49 | 50 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Made_Man_(PS2)_MFS.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Made Man (PS2) 3 | # MFS extract 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | 8 | Get FILES Long 9 | Goto 0x10 10 | Get BLOCK_SIZE Long 11 | Goto 0x34 12 | Get NAMES Long 13 | Get NAMES_SIZE Long 14 | XMath DATA_START "NAMES + NAMES_SIZE" 15 | Math ENTRY = 0x40 16 | 17 | For A = 0 < FILES 18 | Goto ENTRY 19 | Get MISC1 Long 20 | Get OFFSET Long 21 | Math OFFSET * BLOCK_SIZE 22 | Get ZSIZE Long 23 | Get SIZE Long 24 | Get MISC2 Long 25 | XMath NAME_TEMP "NAMES + 12 + (A * 8)" 26 | Goto NAME_TEMP 27 | Get NAME_OFF Long 28 | Goto NAME_OFF 29 | Get FILENAME String 30 | 31 | Log FILENAME OFFSET ZSIZE 32 | 33 | Math ENTRY + 0x14 34 | Next A 35 | 36 | 37 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Malice_(PS2)_TBL.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Malice (PS2) 3 | # TBL/LTP extract 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | # Note: Use this script on the PACK.TBL file 8 | 9 | 10 | Open FDSE "PACK0.LTP" 1 11 | Open FDSE "PACK1.LTP" 2 12 | 13 | Goto 4 14 | Get FILES Long 15 | Math ENTRY = 8 16 | XMath NAMES "ENTRY + (FILES * 0x0c)" 17 | 18 | For A = 0 < FILES 19 | Goto ENTRY 20 | Get NAME_OFF Long 21 | Get OFFSET Long 22 | Get SIZE Long 23 | Math OFFSET * 0x800 24 | 25 | If OFFSET >= 0x3f43e800 26 | Math ARC = 2 27 | Math OFFSET - 0x3f43e800 28 | Else 29 | Math ARC = 1 30 | Endif 31 | 32 | Math NAME_OFF + NAMES 33 | Goto NAME_OFF 34 | Get FILENAME String 35 | 36 | If SIZE > 0 37 | Log FILENAME OFFSET SIZE ARC 38 | Endif 39 | 40 | Math ENTRY + 0x0c 41 | Next A 42 | 43 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Mercenaries_1&2_(PS2)_MSH_MSB.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Mercenaries: Playground Of Destruction & Mercenaries 2: World In Flames (PS2) 3 | # MSH/MSB audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the MSH file 8 | # Audio is extracted as playable .vag files 9 | 10 | 11 | Open FDDE "MSB" 1 12 | Get TEMPNAME basename 13 | 14 | Goto 0x08 15 | Get FILES Long 16 | 17 | For A = 0 < FILES 18 | Get SIZE Long 19 | Get MISC1 Long 20 | Get OFFSET Long 21 | Get SAMP_RATE Long 22 | 23 | Log MEMORY_FILE 0 0 24 | PutVarChr MEMORY_FILE 0x2f 0 Byte 25 | PutVarChr MEMORY_FILE 0 0x70474156 Long 26 | 27 | Endian Big 28 | PutVarChr MEMORY_FILE 0x0c SIZE Long 29 | PutVarChr MEMORY_FILE 0x10 SAMP_RATE Long 30 | Endian Little 31 | 32 | Append 33 | Log MEMORY_FILE OFFSET SIZE 1 34 | Append 35 | 36 | Get MEM_SIZE asize -1 37 | 38 | String FILENAME P "%TEMPNAME%_%A%.vag" 39 | Log FILENAME 0 MEM_SIZE -1 40 | Next A 41 | 42 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Midnight_Club_2_(PS2)_BANKS.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Midnight Club 2 (PS2) 3 | # BANKS.DAT extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | IDString "DAVE" 8 | 9 | Get FILES Long 10 | Get DIR_SIZE Long 11 | Get NAMES_SIZE Long 12 | XMath NAMES "0x800 + DIR_SIZE" 13 | 14 | Math ENTRY = 0x800 15 | 16 | For A = 0 < FILES 17 | Goto ENTRY 18 | Get NAME_OFF Long 19 | Math NAME_OFF + NAMES 20 | Get OFFSET Long 21 | Get ZSIZE Long 22 | Get SIZE Long 23 | Goto NAME_OFF 24 | Get FILENAME String 25 | 26 | Log FILENAME OFFSET ZSIZE 27 | 28 | Math ENTRY + 0x10 29 | Next A 30 | 31 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Midnight_Club_2_(PS2)_STREAMS.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Midnight Club 2 (PS2) 3 | # STREAMS.DAT extract 4 | # QuickBMS script by DKDave, 2021 5 | # ================================================================================ 6 | 7 | IDString "Hash" 8 | 9 | Get FILES Long 10 | 11 | For A = 0 < FILES 12 | Get HASH Long 13 | Get OFFSET Long 14 | Get SIZE Long 15 | 16 | String FILENAME P "STREAMS_%A%.stm" 17 | Log FILENAME OFFSET SIZE 18 | 19 | Next A 20 | 21 | 22 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Monster_Rancher_4_(PS2).bms: -------------------------------------------------------------------------------- 1 | # Monster Rancher 4 (PS2) 2 | # MF4.DAT extract 3 | # QuickBMS script by DKDave, 2023 4 | 5 | # Use this script on the SLUS_207.02 file in the same folder as MF4.DAT 6 | 7 | 8 | Open FDSE "MF4.DAT" 1 9 | 10 | Math ENTRY = 0x220604 11 | 12 | For A = 0 < 6712 13 | Goto ENTRY 14 | Get OFFSET Long 15 | Get OFFSET2 Long 16 | Math OFFSET * 0x800 17 | Math OFFSET2 * 0x800 18 | XMath SIZE "OFFSET2 - OFFSET" 19 | 20 | String FILENAME P "MR4_%A%" 21 | 22 | If SIZE > 0 23 | Log FILENAME OFFSET SIZE 1 24 | Endif 25 | 26 | Goto OFFSET 1 27 | GetDString NAME 8 1 28 | Get MISC1 Long 1 29 | 30 | Math ENTRY + 4 31 | Next A 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Prince_Of_Persia_Sands_Of_Time_(PS2)_BF.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Prince Of Persia: Sands Of Time (PS2) 3 | # .BF extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | IDString "BIG\x00" 9 | 10 | Comtype lzo1x 11 | 12 | Goto 8 13 | Get FILES Long 14 | Math ENTRY = 0x44 15 | 16 | For A = 0 < FILES 17 | Goto ENTRY 18 | Get OFFSET Long 19 | Get JUNK Threebyte 20 | Get TYPE Byte 21 | Goto OFFSET 22 | Get TOTAL_SIZE Long 23 | SavePos OFFSET 24 | String FILENAME P "BF_%A%" 25 | 26 | If TYPE = 0xfd # 1 compressed part 27 | Get SIZE Long 28 | Get ZSIZE Long 29 | SavePos OFFSET 30 | CLog FILENAME OFFSET ZSIZE SIZE 31 | 32 | ElIf TYPE = 0xff # multiple compressed parts 33 | Log MEMORY_FILE 0 0 34 | 35 | For B = 0 36 | Get SIZE Long 37 | Get ZSIZE Long 38 | SavePos OFFSET 39 | 40 | If SIZE = 0 41 | Break 42 | Endif 43 | 44 | Append 45 | 46 | If ZSIZE <> SIZE 47 | CLog MEMORY_FILE OFFSET ZSIZE SIZE 48 | Else 49 | Log MEMORY_FILE OFFSET ZSIZE 50 | Endif 51 | 52 | Append 53 | 54 | Goto ZSIZE 0 SEEK_CUR 55 | Next B 56 | 57 | Get MEM_SIZE asize -1 58 | Log FILENAME 0 MEM_SIZE -1 59 | 60 | Else 61 | String FILENAME P "%FILENAME%_%TYPE%" 62 | Log FILENAME OFFSET TOTAL_SIZE 63 | Endif 64 | 65 | Math ENTRY + 8 66 | Next A 67 | 68 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Prince_Of_Persia_Sands_Of_Time_(PS2)_BIGFAT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Prince Of Persia: Sands Of Time (PS2) 3 | # .FAT/.BIG extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | Open FDDE "BIG" 1 8 | 9 | Get END asize 10 | Math ENTRY = 0 11 | 12 | For A = 0 13 | If ENTRY = END 14 | Break 15 | Endif 16 | 17 | Goto ENTRY 18 | Get JUNK Long 19 | Get OFFSET Long 20 | Get SIZE Long 21 | Get JUNK Long 22 | Get JUNK Long 23 | Get FILENAME String 24 | SavePos ENTRY 25 | 26 | Log FILENAME OFFSET SIZE 1 27 | Next A 28 | 29 | 30 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Ready_2_Rumble_Boxing_Round_2_(PS2)_RAT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Ready 2 Rumble Boxing: Round 2 (PS2) 3 | # BOXING.RAT extract 4 | # QuickBMS script by DKDave, 2022 5 | # ================================================================================ 6 | 7 | 8 | IDstring "RAT\x00" 9 | 10 | Goto 0x18 11 | Get FILES Long 12 | 13 | Goto 0x20 14 | 15 | For A = 0 < FILES 16 | GetDString BASENAME 8 17 | GetDString EXT 4 18 | GetDString MISC1 4 19 | Get SIZE Long 20 | GetDString JUNK 8 21 | Get OFFSET Long 22 | String FILENAME P "%BASENAME%.%EXT%" 23 | 24 | Log FILENAME OFFSET SIZE 25 | Next A 26 | 27 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Roadkill_(PS2)_POD.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Roadkill (PS2) 3 | # POD archive extract 4 | # QuickBMS script by DKDave, 2025 5 | # ================================================================================ 6 | 7 | 8 | IDString "POD3" 9 | 10 | Goto 0x58 11 | Get FILES Long 12 | Goto 0x108 13 | Get ENTRY Long 14 | XMath NAMES "ENTRY + (FILES * 0x14)" 15 | 16 | For A = 0 < FILES 17 | Goto ENTRY 18 | Get NAME_OFF Long 19 | Get SIZE Long 20 | Get OFFSET Long 21 | Get UNK1 LongLong 22 | Math NAME_OFF + NAMES 23 | Goto NAME_OFF 24 | Get FILENAME String 25 | 26 | Log FILENAME OFFSET SIZE 27 | 28 | Math ENTRY + 0x14 29 | Next A 30 | 31 | 32 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Robotech_Invasion_(PS2)_PAK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Robotech: Invasion (PS2) 3 | # PAK extract 4 | # QuickBMS script by Dave, 2019 5 | # ================================================================================ 6 | 7 | Get ENTRIES Long 8 | Math ENTRY_START = 0x800 9 | 10 | For A = 1 to ENTRIES 11 | Goto ENTRY_START 12 | Get FILENAME String 13 | Math ENTRY_START + 0x28 14 | Goto ENTRY_START 15 | Get OFFSET Long 16 | Math OFFSET * 0x800 17 | Get SIZE Long 18 | 19 | Log FILENAME OFFSET SIZE 20 | 21 | Math ENTRY_START + 0x08 22 | Next A 23 | 24 | 25 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Shadow_Man_2econd_Coming_(PS2)_DIR-BIN.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Shadow Man: 2econd Coming (PS2) 3 | # DIR/BIN extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the PS2DATA.DIR file 8 | # No filenames or extensions are stored 9 | 10 | 11 | Comtype RNC 12 | 13 | Open FDDE "BIN" 1 14 | 15 | Math ENTRY = 4 16 | 17 | For A = 0 < 0x400 18 | Goto ENTRY 19 | Get START_IDX Long 20 | Get COUNT Long 21 | XMath START_ENTRY "(START_IDX * 0x10) + 0x2004" 22 | 23 | Goto START_ENTRY 24 | 25 | For B = 0 < COUNT 26 | Get MISC1 Long 27 | Get OFFSET Long 28 | Math OFFSET + 4 29 | Get SIZE Long 30 | Get ZSIZE Long 31 | Math ZSIZE & 0x7FFFFFFF 32 | 33 | String FILENAME P "SM2_%A%_%B%" 34 | 35 | If ZSIZE = 0 36 | Log FILENAME OFFSET SIZE 1 37 | Else 38 | CLog FILENAME OFFSET ZSIZE SIZE 1 39 | Endif 40 | Next B 41 | 42 | Math ENTRY + 8 43 | Next A 44 | 45 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Silent_Hill_3_(PS2)_MFA.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Silent Hill 3 (PS2) 3 | # MFA archive extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Get TEMPNAME basename 9 | Get END asize 10 | Math TABLE = 0 11 | 12 | For A = 0 13 | If TABLE = END 14 | Break 15 | Endif 16 | 17 | Goto TABLE 18 | 19 | FindLoc TEMP String "\x0c\x0a\x20\x20\x20" "" 0 20 | Goto TEMP 21 | GetDString JUNK 6 22 | Padding 8 23 | 24 | Get FILES Long 25 | Get TOTAL_SIZE Long 26 | SavePos ENTRY 27 | 28 | Goto ENTRY 29 | Get TEMP Long 30 | Math TEMP + TABLE 31 | Goto TEMP 32 | Get TEST String 33 | Padding 4 34 | SavePos DATA_START 35 | 36 | For B = 0 < FILES 37 | Goto ENTRY 38 | Get NAME_OFF Long 39 | Math NAME_OFF + TABLE 40 | Get OFFSET Long 41 | Math OFFSET + DATA_START 42 | Get JUNK Long 43 | Get SIZE Long 44 | Goto NAME_OFF 45 | Get FILENAME String 46 | 47 | Log FILENAME OFFSET SIZE 48 | 49 | Math ENTRY + 0x10 50 | Next B 51 | 52 | Math TABLE = DATA_START 53 | Math TABLE + TOTAL_SIZE 54 | 55 | Next A 56 | 57 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Silent_Hill_Origins_(PS2)_ARC.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Silent Hill Origins (PS2) 3 | # .arc extract 4 | # QuickBMS script by Dave, 2020 5 | # ================================================================================ 6 | 7 | IDString "A2.0" 8 | 9 | ComType zlib 10 | 11 | Get ENTRIES Long 12 | Get DATA_START Long 13 | Get FILENAMES Long 14 | 15 | Set FILE_ENTRY Long 0x14 16 | 17 | For A = 1 to ENTRIES 18 | Goto FILE_ENTRY 19 | Get FNAME_OFFSET Long 20 | Get OFFSET Long 21 | Get ZSIZE Long 22 | Get SIZE Long 23 | Math FNAME_OFFSET + FILENAMES 24 | Goto FNAME_OFFSET 25 | Get FILENAME String 26 | 27 | If SIZE = 0 28 | Log FILENAME OFFSET ZSIZE 29 | Else 30 | Clog FILENAME OFFSET ZSIZE SIZE 31 | Endif 32 | 33 | Math FILE_ENTRY + 0x10 34 | 35 | Next A 36 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Silent_Hill_Origins_(PS2)_IGCStream_audio.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Silent Hill: Origins (PS2) 3 | # Demux audio from IGCStream files 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Note: This will also work on the IGCStream files from the PSP version, except those are .at3 instead of .ads 8 | 9 | 10 | Get FILE_END asize 11 | Get TEMPNAME basename 12 | 13 | Goto 0x14 14 | Get MISCNAME String 15 | Padding 4 16 | SavePos OFFSET 17 | 18 | 19 | For A = 0 20 | If OFFSET = FILE_END 21 | Break 22 | Endif 23 | 24 | Goto OFFSET 25 | Get MISC1 Short 26 | Get SIZE Short 27 | 28 | If MISC1 = 0xa000 29 | XMath OFFSET2 "OFFSET + 4" 30 | 31 | Append 32 | Log MEMORY_FILE OFFSET2 SIZE 33 | Append 34 | 35 | Endif 36 | 37 | Math OFFSET + SIZE 38 | Math OFFSET + 4 39 | Next A 40 | 41 | Get MEM_SIZE asize -1 42 | String FILENAME P "%TEMPNAME%.ads" 43 | 44 | Log FILENAME 0 MEM_SIZE -1 45 | 46 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Spider-Man_2_(PS2)_PAK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Spider-Man 2 (PS2) 3 | # SOUNDS.PAK extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Goto 0x18 9 | Get DATA_START Long 10 | Goto 0x1dc 11 | Get FILES Long 12 | 13 | Math ENTRY = 0x258 14 | 15 | For A = 0 < FILES 16 | Goto ENTRY 17 | GetDString FILENAME 0x1c 18 | String FILENAME + ".wbk" 19 | Get JUNK Long 20 | Get OFFSET Long 21 | Math OFFSET + DATA_START 22 | Get SIZE Long 23 | 24 | Log FILENAME OFFSET SIZE 25 | 26 | Math ENTRY + 0x28 27 | Next A 28 | 29 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Spider-Man_Web_Of_Shadows_(PS2)_STREAMS.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Spider-Man: Web Of Shadows (PS2) 3 | # STREAMS.RES extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | IDString "res" 8 | 9 | Goto 0x0c 10 | Get TABLE1 Long 11 | Goto 0x14 12 | Get DATA_START Long 13 | Get JUNK Long 14 | Get DIR_SIZE Long 15 | XMath ENTRY "TABLE1 + DIR_SIZE" 16 | 17 | Goto ENTRY 18 | Get FILES Long 19 | Get JUNK Long 20 | SavePos ENTRY 21 | 22 | For A = 0 < FILES 23 | Goto ENTRY 24 | Get NAME_OFF Long 25 | GetDString TYPE 4 26 | Get INFO_OFF Long 27 | Math NAME_OFF + ENTRY 28 | Math INFO_OFF + ENTRY 29 | Math INFO_OFF + 8 30 | Goto NAME_OFF 31 | Get FILENAME String 32 | Goto INFO_OFF 33 | Goto 8 0 SEEK_CUR 34 | Get SIZE Long 35 | Get OFFSET Long 36 | Math OFFSET + DATA_START 37 | 38 | String FILENAME + ".fsb" 39 | Log FILENAME OFFSET SIZE 40 | 41 | Math ENTRY + 0x0c 42 | Next A 43 | 44 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Spy_Fiction_(PS2)_DSB-DAT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Spy Fiction (PS2) 3 | # DSB / DAT archive extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the ALLDATA.DSB file 8 | # NOTE: Not sure if this extracts everything as the extracted data is 1.91 GB compared to the 2.91 GB DAT archive 9 | 10 | 11 | Open FDSE "ALLDATA.DAT" 1 12 | 13 | IDString "DSB." 14 | 15 | Get FCOUNT Long 16 | 17 | Math F_ENTRY = 0x10 18 | 19 | For A = 0 < FCOUNT 20 | Goto F_ENTRY 21 | Get F_START Long 22 | GetDString F_NAME 0x0c 23 | Goto F_START 24 | 25 | For B = 0 26 | Get ENTRY_TYPE Byte 27 | 28 | If ENTRY_TYPE = 0x0d # End of data for this folder 29 | Break 30 | Endif 31 | 32 | If ENTRY_TYPE = 0x15 33 | For C = 0 < 0x10 # 0x10 file entries per block 34 | Get LEN Short 35 | GetDString FILENAME LEN 36 | String FILENAME P "%F_NAME%\%FILENAME%" 37 | Get LEN2 Short 38 | Get OFFSET Long # Start block in DAT archive 39 | Math OFFSET * 0x800 40 | Get BLOCKS Long # Size of file in blocks 41 | Get SIZE Long # Actual data size 42 | 43 | If SIZE <> 0 44 | Log FILENAME OFFSET SIZE 1 45 | Endif 46 | Next C 47 | 48 | GetDString JUNK 0x10 49 | Endif 50 | 51 | Next B 52 | 53 | Math F_ENTRY + 0x10 54 | Next A 55 | 56 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Star_Wars_Ep_3_Revenge_Of_The_Sith_(PS2)_HSH-PK2.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Star Wars Episode III: Revenge Of The Sith (PS2) 3 | # HSH/PK2 extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the HSH file 8 | 9 | 10 | Open FDSE "PS2PAK_0.PK2" 1 11 | Open FDSE "PS2PAK_1.PK2" 2 12 | 13 | Math ENTRY = 0 14 | Get FILE_END asize 15 | 16 | For A = 0 17 | If ENTRY = FILE_END 18 | Break 19 | Endif 20 | 21 | Goto ENTRY 22 | GetCT TEXT String 0x0a 0 23 | String JUNK v TEXT " " FILENAME ARC SIZE OFFSET 24 | Math ARC = ARC 25 | Math ARC + 1 26 | Math SIZE = SIZE 27 | Math OFFSET = OFFSET 28 | SavePos ENTRY 29 | 30 | Log FILENAME OFFSET SIZE ARC 31 | Next A 32 | 33 | 34 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Star_Wars_Ep_3_Revenge_Of_The_Sith_(PS2)_RP2.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Star Wars Episode III: Revenge Of The Sith (PS2) 3 | # RP2 audio extract 4 | # QuickBMS script by DKDave, 2021 5 | # ================================================================================ 6 | 7 | 8 | Goto 4 9 | Get FILES Long 10 | Get TEMPNAME basename 11 | 12 | Goto 0x20 13 | 14 | For A = 0 < FILES 15 | GetDString FILENAME 0x20 16 | String FILENAME P "%TEMPNAME%\%FILENAME%.msv" # just vag files with a different extension 17 | Get OFFSET Long 18 | Get SIZE Long 19 | Get MISC1 Long 20 | Log FILENAME OFFSET SIZE 21 | Next A 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Star_Wars_The_Force_Unleashed_(PS2)_SBK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Star Wars: The Force Unleashed (PS2) 3 | # SBK audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # This script extracts the audio from SBK archives and outputs playable .vag files 8 | 9 | 10 | IDString "SB01" 11 | 12 | Get FILES Long 13 | Goto 0x10 14 | 15 | For A = 0 < FILES 16 | GetDString FILENAME 0x20 17 | String FILENAME + ".vag" 18 | Get OFFSET Long 19 | Get SIZE Long 20 | Get RATE Short 21 | Get MISC1 Short 22 | Goto 0x14 0 SEEK_CUR 23 | 24 | Log MEMORY_FILE 0 0 25 | PutVarChr MEMORY_FILE 0x2f 0 Byte 26 | PutVarChr MEMORY_FILE 0 0x70474156 Long 27 | 28 | Endian Big 29 | PutVarChr MEMORY_FILE 0x0c SIZE Long 30 | PutVarChr MEMORY_FILE 0x10 RATE Long 31 | Endian Little 32 | 33 | Append 34 | Log MEMORY_FILE OFFSET SIZE 35 | Append 36 | 37 | Get MEM_SIZE asize -1 38 | Log FILENAME 0 MEM_SIZE -1 39 | Next A 40 | 41 | -------------------------------------------------------------------------------- /QuickBMS/PS2/State_Of_Emergency_(PS2)_BNK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # State Of Emergency (PS2) 3 | # BNK audio extract 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | 8 | Get FILES Long 9 | Get BNK_SIZE Long 10 | Get TEMPNAME basename 11 | 12 | For A = 0 < FILES 13 | Get MISC1 Long 14 | Get OFFSET Long 15 | Get SIZE Long 16 | 17 | String FILENAME P "%TEMPNAME%_%A%.vag" 18 | 19 | Log FILENAME OFFSET SIZE 20 | 21 | Next A 22 | 23 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Stuart_Little_3_Big_Photo_Adventure_(PS2)_SPH-SPB.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Stuart Little 3: Big Photo Adventure (PS2) 3 | # SPH / SPB extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Use this script on the SPH file 8 | 9 | 10 | Open FDDE "SPB" 1 11 | 12 | Log MEMORY_FILE 0 0 13 | PutVarChr MEMORY_FILE 0x2f 0 Byte 14 | PutVarChr MEMORY_FILE 0 0x70474156 Long 15 | 16 | Goto 4 17 | Get FILES Long 18 | 19 | For A = 0 < FILES 20 | Get OFFSET Long 21 | Get SIZE Long 22 | Get MISC1 Long 23 | Get RATE Short 24 | Get MISC2 Short 25 | 26 | Endian Big 27 | PutVarChr MEMORY_FILE 0x0c SIZE Long 28 | PutVarChr MEMORY_FILE 0x10 RATE Long 29 | Endian Little 30 | 31 | String FILENAME P "SL3_%A%.vag" 32 | Log FILENAME 0 0x30 -1 33 | Append 34 | Log FILENAME OFFSET SIZE 1 35 | Append 36 | Next A 37 | 38 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Syphon_Filter_Omega_Strain_(PS2)_HOG.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Syphon Filter: The Omega Strain (PS2) 3 | # HOG extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Goto 4 9 | Get FILES Long 10 | Get ENTRY Long 11 | Get NAMES Long 12 | Get DATA_START Long 13 | 14 | For A = 0 < FILES 15 | Goto ENTRY 16 | Get OFFSET Long 17 | Get OFFSET2 Long 18 | XMath SIZE "OFFSET2 - OFFSET" 19 | Math OFFSET + DATA_START 20 | 21 | Goto NAMES 22 | Get FILENAME String 23 | SavePos NAMES 24 | 25 | Log FILENAME OFFSET SIZE 26 | 27 | Math ENTRY + 4 28 | Next A 29 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Tak_The_Great_Juju_Challenge_(PS2)_HOG.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Tak: The Great Juju Challenge (PS2) 3 | # HOG archive extract 4 | # QuickBMS script by DKDave, 2025 5 | # ================================================================================ 6 | 7 | 8 | Goto 4 9 | Get FILES Long 10 | Goto 0x0c 11 | Get ENTRY Long 12 | 13 | For A = 0 < FILES 14 | Goto ENTRY 15 | Get NAME_OFF Long 16 | Get OFFSET Long 17 | Get SIZE Long 18 | Goto NAME_OFF 19 | Get FILENAME String 20 | 21 | Log FILENAME OFFSET SIZE 22 | 23 | Math ENTRY + 12 24 | Next A 25 | 26 | 27 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Terminator_Dawn_Of_Fate_(PS2)_MPK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Terminator: Dawn Of Fate (PS2) 3 | # *MUSIC.MPK archive extract (should work for all 5 music archives) 4 | # QuickBMS script by DKDave, 2022 5 | # ================================================================================ 6 | 7 | IDString "MPAK" 8 | 9 | Goto 0x08 10 | Get FILES Long 11 | Get NAMES_SIZE Long 12 | 13 | Math ENTRY = 0x10 14 | 15 | For A = 0 < FILES 16 | Goto ENTRY 17 | Get OFFSET Long 18 | Get SIZE Long 19 | Get NAME_OFF Long 20 | Math NAME_OFF + 0x10 21 | Goto NAME_OFF 22 | Get FILENAME String 23 | 24 | Log FILENAME OFFSET SIZE 25 | 26 | Math ENTRY + 0x0c 27 | Next A 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Test_Drive_Off-Road_Wide_Open_(PS2)_ZIP.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Test Drive Off-Road Wide Open (PS2) 3 | # ZIP extract 4 | # QuickBMS script by DKDave, 2021 5 | # ================================================================================ 6 | 7 | 8 | Comtype deflate 9 | 10 | IDString "DAVE" 11 | 12 | Get ENTRIES Long 13 | Get TABLE1_SIZE Long 14 | Get NAMES_SIZE Long 15 | 16 | XMath NAMES "TABLE1_SIZE + 0x800" 17 | Math ENTRY = 0x800 18 | 19 | For A = 0 < ENTRIES 20 | Goto ENTRY 21 | Get NAME_OFF Long 22 | Math NAME_OFF + NAMES 23 | Get OFFSET Long 24 | Get SIZE Long 25 | Get ZSIZE Long 26 | Goto NAME_OFF 27 | Get FILENAME String 28 | 29 | If ZSIZE <> SIZE 30 | CLog FILENAME OFFSET ZSIZE SIZE 31 | Else 32 | Log FILENAME OFFSET ZSIZE 33 | Endif 34 | 35 | Math ENTRY + 0x10 36 | Next A 37 | 38 | 39 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Trapt_(PS2)_RPS.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Trapt (aka Kagero: Dark Illusion II) (PS2) 3 | # .arc file extract 4 | # QuickBMS script by Dave, 2021 5 | # ================================================================================ 6 | 7 | IDString "RPS\x00" 8 | 9 | Get ENTRIES Long 10 | Get DATA_START Long 11 | Get TEMPNAME basename 12 | 13 | Math ENTRY_START = 0x14 14 | 15 | For A = 1 To ENTRIES 16 | Goto ENTRY_START 17 | Get JUNK Long 18 | Get SIZE Long 19 | Get JUNK Long 20 | Get FNAME_OFF Long 21 | Get OFFSET Long 22 | Math OFFSET + DATA_START 23 | Goto FNAME_OFF 24 | Get FILENAME String 25 | String FILENAME P "%TEMPNAME%\%FILENAME%" 26 | 27 | Log FILENAME OFFSET SIZE 28 | 29 | Math ENTRY_START + 0x14 30 | 31 | Next A 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Unison_Rebels_Of_Rhythm_And_Dance_(PS2)_DAT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Unison: Rebels Of Rhythm And Dance (PS2) 3 | # UNISON.DAT extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Run this script on the SLPS_250.10 file 8 | # There are no filenames or file types to identify anything easily 9 | 10 | 11 | Open FDSE "UNISON.DAT" 1 12 | Get FILE_END asize 1 13 | 14 | Math ENTRY = 0x212f88 15 | 16 | For A = 0 < 1642 17 | Goto ENTRY 18 | Get OFFSET Long 19 | Math OFFSET * 0x800 20 | Get OFFSET2 Long 21 | 22 | If OFFSET2 = 0 23 | XMath SIZE "FILE_END - OFFSET" 24 | Else 25 | Math OFFSET2 * 0x800 26 | XMath SIZE "OFFSET2 - OFFSEt" 27 | Endif 28 | 29 | String FILENAME P "UNISON_%A%" 30 | Log FILENAME OFFSET SIZE 1 31 | 32 | Math ENTRY + 4 33 | Next A 34 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Urban_Chaos_Riot_Response_(PS2)_DIR.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Urban Chaos: Riot Response (PS2) 3 | # DATA.DIR extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Open FDDE "WAD" 1 9 | Open FDDE "000" 2 10 | Open FDDE "001" 3 11 | Open FDDE "002" 4 12 | 13 | Get MISC1 long 14 | Get FILES long 15 | Math ARC = 1 16 | Math OFF2 = 0 17 | 18 | For A = 0 < FILES 19 | If A = 157 20 | Math ARC = 2 21 | Math OFF2 = 0x4A554800 22 | Endif 23 | 24 | If A = 165 25 | Math ARC = 3 26 | Math OFF2 = 0x989D2000 27 | Endif 28 | 29 | If A = 169 30 | Math ARC = 4 31 | Math OFF2 = 0xE5BDB800 32 | Endif 33 | 34 | GetDString FILENAME 0x40 35 | Get SIZE Long 36 | Get OFFSET Long 37 | Math OFFSET * 0x800 38 | Math OFFSET - OFF2 39 | 40 | Log FILENAME OFFSET SIZE ARC 41 | Next A 42 | 43 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Urban_Chaos_Riot_Response_(PS2)_ENT-GEO.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Urban Chaos: Riot Response (PS2) 3 | # ENT & GEO extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # ENT and GEO files have the same format 8 | 9 | 10 | Goto 0xc4 11 | Get FILES long 12 | 13 | For A = 0 < FILES 14 | Get LEN Short 15 | GetDString FILENAME LEN 16 | Get OFFSET Long 17 | Get SIZE Long 18 | Get ZSIZE Long 19 | Get JUNK Long 20 | 21 | If SIZE <> 0 22 | CLog FILENAME OFFSET ZSIZE SIZE 23 | Endif 24 | Next A 25 | 26 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Wacky_Races_(PS2)_SPK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Wacky Races (PS2) 3 | # SPK audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Get TEMPNAME basename 9 | 10 | PutVarChr MEMORY_FILE 0x2f 0 Byte 11 | PutVarChr MEMORY_FILE 0 0x70474156 Long 12 | 13 | Get FILES Long 14 | Math FILES / 0x10 15 | Get JUNK Long 16 | 17 | For A = 0 < FILES 18 | Get JUNK Long 19 | Get JUNK Long 20 | Get OFFSET Long 21 | Get SIZE Long 22 | 23 | ReverseLong SIZE 24 | PutVarChr MEMORY_FILE 0x0c SIZE Long 25 | ReverseLong SIZE 26 | PutVarChr MEMORY_FILE 0x10 0x22560000 Long 27 | 28 | String FILENAME P "%TEMPNAME%_%A%.vag" 29 | Log FILENAME 0 0x30 -1 30 | Append 31 | Log FILENAME OFFSET SIZE 32 | Append 33 | 34 | Next A 35 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Way_Of_The_Samurai_(PS2)_DAT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Way Of The Samurai (PS2) 3 | # VOLUME.DAT extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Endian Big 9 | 10 | Goto 8 11 | Get FILES Long 12 | Get DATA_START Long 13 | Math ENTRY = 0x14 14 | 15 | For A = 0 < FILES 16 | Goto ENTRY 17 | Get MISC1 Long 18 | Get OFFSET Long 19 | Math OFFSET + DATA_START 20 | Get SIZE Long 21 | Get MISC2 Long 22 | Get MISC3 Long 23 | Get MISC4 Long 24 | XMath NAME_OFF "OFFSET + SIZE" 25 | Goto NAME_OFF 26 | Get FILENAME String 27 | 28 | Log FILENAME OFFSET SIZE 29 | 30 | Math ENTRY + 0x18 31 | Next A 32 | 33 | -------------------------------------------------------------------------------- /QuickBMS/PS2/Way_Of_The_Samurai_(PS2)_VGD.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Way Of The Samurai (PS2) 3 | # common.VGD audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | IDString "VGS1" 8 | 9 | Get TEMPNAME basename 10 | 11 | Log MEMORY_FILE 0 0 12 | PutVarChr MEMORY_FILE 0x2f 0 Byte 13 | PutVarChr MEMORY_FILE 0 0x70474156 Long 14 | 15 | Get FILES Long 16 | 17 | XMath DATA_START "(FILES * 12) + 0x10" 18 | Goto DATA_START 19 | Padding 0x100 20 | SavePos DATA_START 21 | 22 | Goto 0x10 23 | 24 | For A = 0 < FILES 25 | Get ID Short 26 | Get SAMP_RATE Short 27 | Get OFFSET Long 28 | Math OFFSET + DATA_START 29 | Get SIZE Long 30 | 31 | Endian Big 32 | PutVarChr MEMORY_FILE 0x0c SIZE Long 33 | PutVarChr MEMORY_FILE 0x10 SAMP_RATE Long 34 | Endian Little 35 | 36 | String FILENAME P "%TEMPNAME%_%A%.vag" 37 | 38 | Log FILENAME 0 0x30 -1 39 | Append 40 | Log FILENAME OFFSET SIZE 41 | Append 42 | 43 | Next A 44 | 45 | -------------------------------------------------------------------------------- /QuickBMS/PS2/X-Files_Resist_Or_Serve_(PS2)_EFS.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # X Files: Resist Or Serve 3 | # .EFS extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | IDString "EFS " 9 | Goto 8 10 | Get FILES Long 11 | Math ENTRY = 0x10 12 | 13 | For A = 0 < FILES 14 | Goto ENTRY 15 | Get NAME_OFF Long 16 | Get OFFSET Long 17 | Get ZSIZE Long 18 | Get SIZE Long # Decompressed size - not needed? 19 | Goto NAME_OFF 20 | Get FILENAME String 21 | 22 | Log FILENAME OFFSET ZSIZE 23 | 24 | Math ENTRY + 0x14 25 | Next A 26 | 27 | -------------------------------------------------------------------------------- /QuickBMS/PS3/Armored_Core_Verdict_Day_(PS3)_BHD-BDT.bms: -------------------------------------------------------------------------------- 1 | # Armored Core: Verdict Day (PS3) 2 | # .BHD / .BDT extract 3 | # QuickBMS script by Dave, 2021 4 | 5 | QuickBMSVer -64 6 | 7 | IDString "BHD5" 8 | 9 | Open FDDE "BDT" 1 10 | 11 | Endian Big 12 | 13 | Goto 0x10 14 | Get ENTRIES Long 15 | Math ENTRY = 0x18 16 | 17 | For A = 0 < ENTRIES 18 | Goto ENTRY 19 | Get COUNT1 Long 20 | Get ENTRY2 Long 21 | 22 | For B = 0 < COUNT1 23 | Goto ENTRY2 24 | Get JUNK Long 25 | Get SIZE Long 26 | Get OFFSET LongLong 27 | Goto OFFSET 1 28 | GetDString FILE_ID 4 1 29 | 30 | String FILENAME P "FILE_%A%_%B%" 31 | 32 | If FILE_ID = "FSB4" 33 | String FILENAME + ".fsb" 34 | Log FILENAME OFFSET SIZE 1 35 | Endif 36 | 37 | If FILE_ID = "FEV1" 38 | String FILENAME + ".fev" 39 | Endif 40 | 41 | If FILE_ID = "DCX" 42 | String FILENAME + ".dcx" 43 | Endif 44 | 45 | If FILE_ID = "TPF" 46 | String FILENAME + ".tpf" 47 | Endif 48 | 49 | If FILE_ID = "BND3" 50 | String FILENAME + ".bnd" 51 | Endif 52 | 53 | If FILE_ID = "TAE" 54 | String FILENAME + ".tae" 55 | Endif 56 | 57 | Math ENTRY2 + 0x10 58 | Next B 59 | 60 | Math ENTRY + 8 61 | Next A 62 | 63 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /QuickBMS/PS3/Fancy_Pants_Adventures_(PS3)_LVL.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Fancy Pants Adventures 3 | # LVL extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Endian Big 9 | 10 | Get TEMPNAME basename 11 | Get FILE_END asize 12 | 13 | Math OFFSET = 0 14 | 15 | For A = 0 16 | If OFFSET = FILE_END 17 | Break 18 | Endif 19 | 20 | Goto OFFSET 21 | Get JUNK Long # CRSR 22 | GetDString TYPE 4 # LEVL / TXET etc. 23 | Get JUNK Long 24 | Get SIZE Long 25 | Math SIZE + 0x20 26 | 27 | String TYPE r TYPE 28 | String FILENAME P "%TEMPNAME%_%A%.%TYPE%" 29 | Log FILENAME OFFSET SIZE 30 | 31 | Math OFFSET + SIZE 32 | Next A 33 | 34 | 35 | -------------------------------------------------------------------------------- /QuickBMS/PS3/Heavenly_Sword_(PS3)_WAD.bms: -------------------------------------------------------------------------------- 1 | # Heavenly Sword - .WAD extractor (PS3) 2 | # By Dave, 2019 3 | 4 | Endian Big 5 | Comtype zlib 6 | IDString "0DAW" 7 | 8 | Goto 0x0008 9 | Get ENTRIES Long 10 | Get DATA_START Long 11 | Get FOLDER_NAME BASENAME 12 | 13 | Goto 0x0030 14 | 15 | For A = 1 to ENTRIES 16 | 17 | Get OFFSET Long 18 | Get ZSIZE Long # ZSIZE (compressed) 19 | Get SIZE Long # SIZE (uncompressed) 20 | Get JUNK Long 21 | Math OFFSET + DATA_START # Actual file offset 22 | Set FILENAME FOLDER_NAME # Output to basename folder 23 | String FILENAME + "\" 24 | String FILENAME + "File_" 25 | String FILENAME + A 26 | 27 | SavePos TEMP_POS 28 | Goto OFFSET 29 | GetDString FILE_TYPE 0x04 30 | 31 | If FILE_TYPE = "FEV1" 32 | String FILENAME + ".fev" 33 | Endif 34 | 35 | If FILE_TYPE = "FSB3" 36 | String FILENAME + ".fsb" 37 | Endif 38 | 39 | If FILE_TYPE = "RIFF" 40 | String FILENAME + ".wav" 41 | Endif 42 | 43 | If ZSIZE <> 0 # some files have ZSIZE and SIZE as 0, so skip these 44 | 45 | If ZSIZE = SIZE 46 | Log FILENAME OFFSET ZSIZE 47 | Else 48 | Clog FILENAME OFFSET ZSIZE SIZE 49 | Endif 50 | 51 | Endif 52 | 53 | Goto TEMP_POS 54 | 55 | Next A 56 | -------------------------------------------------------------------------------- /QuickBMS/PS3/House_Of_The_Dead_Overkill_Extended_(PS3).bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # House Of The Dead: Overkill (Extended Cut) (PS3) 3 | # QuickBMS script by Dave, 2019 4 | # ================================================================================ 5 | 6 | Endian big 7 | 8 | Get JUNK Long 9 | Get ALIGN Long 10 | Get JUNK Long 11 | Get FILES Long 12 | Get FILE_INFO Long 13 | Math FILE_INFO * ALIGN 14 | Goto 0x28 15 | Get NAMES_TABLE Long 16 | Math NAMES_TABLE * ALIGN 17 | 18 | FOR A = 1 to FILES 19 | 20 | Goto FILE_INFO 21 | Get FILE_START Long 22 | Math FILE_START * ALIGN 23 | Get JUNK Long 24 | Get FILE_SIZE Long 25 | Get NAME_OFFSET Long 26 | Get JUNK Long 27 | Math NAME_OFFSET + NAMES_TABLE 28 | Goto NAME_OFFSET 29 | Get FILENAME String 30 | 31 | Log FILENAME FILE_START FILE_SIZE 32 | 33 | Math FILE_INFO + 0x14 34 | 35 | NEXT A 36 | -------------------------------------------------------------------------------- /QuickBMS/PS3/Megazone_23_Aoi_Garland_(PS3)_IPH-IPK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Megazone 23: Aoi Garland (PS3) 3 | # IPH/IPK extract 4 | # QuickBMS script by Dave, 2021 5 | # ================================================================================ 6 | 7 | 8 | IDString "IPK1" 9 | Open FDDE "ipk" 1 10 | ComType zlib 11 | 12 | Goto 8 13 | Get ENTRIES Long 14 | Goto 0x10 15 | 16 | For A = 0 < ENTRIES 17 | GetDString FILENAME 0x40 18 | Get COMP_TYPE Long 19 | Get ZSIZE Long 20 | Get OFFSET Long 21 | Get SIZE Long 22 | 23 | If COMP_TYPE = 0 24 | Log FILENAME OFFSET ZSIZE 1 25 | Elif COMP_TYPE = 3 26 | CLog FILENAME OFFSET ZSIZE SIZE 1 27 | Endif 28 | Next A 29 | 30 | -------------------------------------------------------------------------------- /QuickBMS/PS3/Metal_Gear_Solid_4_(PS3)_SDPACK-SPEECH.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Metal Gear Solid 4: Guns Of The Patriots (PS3) 3 | # Extract audio from SDPACK.DAT and SPEECH.DAT archives 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | 8 | Endian Big 9 | 10 | Get TEMPNAME basename 11 | 12 | For A = 0 13 | FindLoc OFFSET String "SSPF" 0 "" 14 | 15 | If OFFSET = "" 16 | Break 17 | Endif 18 | 19 | Goto OFFSET 20 | Goto 8 0 SEEK_CUR 21 | Get SIZE Long 22 | 23 | String FILENAME P "%TEMPNAME%_%A%.ssp" 24 | 25 | Log FILENAME OFFSET SIZE 26 | 27 | Next A 28 | 29 | -------------------------------------------------------------------------------- /QuickBMS/PS3/Naughty_Bear_(PS3)_PSARC.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Naughty Bear (PS3) 3 | # PSARC extract 4 | # QuickBMS script by Dave, 2021 5 | # ================================================================================ 6 | 7 | Endian Big 8 | 9 | Goto 0x53 10 | Get TOTAL_SIZE Long 11 | Get JUNK Byte 12 | Get DATA_START Long 13 | Get TEXT_LEN Short 14 | 15 | XMath PARTS "(DATA_START - 0x5e - TEXT_LEN) / 2" 16 | XMath TEXT_OFF "DATA_START - TEXT_LEN" 17 | 18 | Goto TEXT_OFF 19 | GetDString FILENAME TEXT_LEN 20 | 21 | Log MEMORY_FILE 0 0 22 | 23 | Goto 0x5e 24 | 25 | For A = 0 < PARTS 26 | Get ZSIZE Short 27 | Append 28 | CLog MEMORY_FILE DATA_START ZSIZE 0x10000 29 | Append 30 | 31 | Math DATA_START + ZSIZE 32 | Next A 33 | 34 | Get MEM_SIZE asize -1 35 | Log FILENAME 0 MEM_SIZE -1 36 | 37 | 38 | -------------------------------------------------------------------------------- /QuickBMS/PS3/Siren_Blood_Curse_(PS3)_HED-DAT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Siren: Blood Curse (PS3) 3 | # HED/DAT extract 4 | # QuickBMS script by DKDave, 2024 5 | # ================================================================================ 6 | 7 | 8 | Endian Big 9 | 10 | Open FDDE "dat" 1 11 | 12 | Goto 0x10 13 | Get NAMES Long 14 | Get ENTRY Long 15 | Get UNK1 Long 16 | Get FILES Long 17 | 18 | For A = 0 < FILES 19 | Goto ENTRY 20 | Get NAME_OFF Long 21 | Math NAME_OFF + NAMES 22 | Get OFFSET Long 23 | Get SIZE Long 24 | Get MISC1 Long 25 | Goto NAME_OFF 26 | Get FILENAME String 27 | 28 | Log FILENAME OFFSET SIZE 1 29 | 30 | Math ENTRY + 0x10 31 | Next A 32 | 33 | -------------------------------------------------------------------------------- /QuickBMS/PS3/Skylanders_Spyros_Adventure_(PS3)_PCK.bms: -------------------------------------------------------------------------------- 1 | # Skylanders: Spyro's Adventure (PS3) 2 | # Extract audio from PCK archive 3 | # QuickBMS script by DKDave, 2021 4 | 5 | 6 | Endian Big 7 | 8 | Get TEMPNAME basename 9 | 10 | For A = 0 11 | FindLoc OFFSET String "RIFX" 0 "" 12 | 13 | If OFFSET = "" 14 | Break 15 | Endif 16 | 17 | Goto OFFSET 18 | Get JUNK Long 19 | Get SIZE Long 20 | Math SIZE + 8 21 | 22 | String FILENAME P "%TEMPNAME%_%A%.wem" 23 | Log FILENAME OFFSET SIZE 24 | 25 | Next A 26 | 27 | 28 | -------------------------------------------------------------------------------- /QuickBMS/PS3/Star_Wars_The_Force_Unleashed_USE_(PS3)_PS3D-PS3P.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Star Wars: The Force Unleashed (Ultimate Sith Edition) (PS3) 3 | # PS3D / PS3P audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Endian Big 9 | 10 | Open FDDE "PS3P" 1 11 | 12 | Goto 8 13 | Get FILES Long 14 | Math ENTRY = 0x10 15 | XMath NAMES "(FILES * 0x1c) + 0x10" 16 | 17 | For A = 0 < FILES 18 | Goto ENTRY 19 | Get MISC1 Long 20 | Get OFFSET Long 21 | Get MISC2 Long 22 | Get SIZE Long 23 | Goto NAMES 24 | Get LEN Long 25 | GetDString FILENAME LEN 26 | String FILENAME + ".mp3" 27 | SavePos NAMES 28 | 29 | Log FILENAME OFFSET SIZE 1 30 | 31 | Math ENTRY + 0x1c 32 | Next A 33 | -------------------------------------------------------------------------------- /QuickBMS/PS3/Star_Wars_The_Force_Unleashed_USE_(PS3)_WAD.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Star Wars: The Force Unleashed (Ultimate Sith Edition) (PS3) 3 | # WAD extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Note: All 5 "GAMEDATA.WAD*" files must be joined together before using this script on the combined archive 8 | # Note: Use QuickBMS_4gb_files with this script 9 | 10 | 11 | Endian Big 12 | 13 | IDString "LWAD" 14 | 15 | Get MISC1 Long 16 | Get FILES Long 17 | Math ENTRY = 0x10 18 | XMath NAMES "(FILES * 0x18) + 0x10" 19 | 20 | For A = 0 < FILES 21 | Goto ENTRY 22 | Get JUNK Long 23 | Get SIZE Long 24 | Get OFFSET LongLong 25 | Get NAME_OFF Long 26 | Math NAME_OFF + NAMES 27 | Goto NAME_OFF 28 | Get FILENAME String 29 | 30 | Log FILENAME OFFSET SIZE 31 | 32 | Math ENTRY + 0x18 33 | Next A 34 | -------------------------------------------------------------------------------- /QuickBMS/PS3/To_Heart_2_DX_Plus_(PS3)_TPL.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # To Heart 2 DX Plus (PS3, 2011) 3 | # TPL decompression 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Endian Big 9 | 10 | Comtype LZMA_86HEAD 11 | 12 | Get TEMPNAME basename 13 | String FILENAME P "%TEMPNAME%_dec.tpl" 14 | 15 | Math OFFSET = 0 16 | 17 | For A = 0 18 | Goto OFFSET 19 | Get ZSIZE Long 20 | SavePos OFFSET 21 | 22 | If ZSIZE & 0x80000000 # If bit 31 is 0, this is the final chunk 23 | Math FLAG = 0 24 | Else 25 | Math FLAG = 1 26 | Endif 27 | 28 | Math ZSIZE & 0x7fffffff 29 | 30 | Append 31 | CLog FILENAME OFFSET ZSIZE ZSIZE 32 | Append 33 | 34 | If FLAG = 1 35 | Break 36 | Endif 37 | 38 | Math OFFSET + ZSIZE # Align to next 4-byte offset 39 | Goto OFFSET 40 | Padding 4 41 | SavePos OFFSET 42 | 43 | Next A 44 | 45 | -------------------------------------------------------------------------------- /QuickBMS/PS3/Wipeout2_(PS3)_PAK.bms: -------------------------------------------------------------------------------- 1 | ================================================================================ 2 | # Wipeout 2 (PS3) 3 | # data.pak extract 4 | # QuickBMS script by Dave, 2021 5 | ================================================================================ 6 | 7 | comtype lzma_86head 8 | 9 | IDString "tongas_pack_v30000" 10 | 11 | Get ENTRIES Long 12 | 13 | Goto 0x1a 14 | 15 | For A = 1 To ENTRIES 16 | Get OFFSET Long 17 | Get SIZE Long 18 | Get COMP_FLAG Long # 1 = compressed, 0 = uncompressed 19 | Get TEXT_LEN Long 20 | GetDString FILENAME TEXT_LEN 21 | 22 | If COMP_FLAG = 0 23 | Log FILENAME OFFSET SIZE 24 | Endif 25 | 26 | If COMP_FLAG = 1 27 | CLog FILENAME OFFSET SIZE SIZE 28 | Endif 29 | 30 | Next A 31 | 32 | 33 | -------------------------------------------------------------------------------- /QuickBMS/PS4/Legend_Of_Heroes_Trails_Into_Reverie_(PS4)_PKG.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Legend Of Heroes: Trails Into Reverie (PS4) 3 | # PKG extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Comtype NISLZS 9 | 10 | Goto 4 11 | Get FILES Long 12 | 13 | Math ENTRY = 8 14 | 15 | For A = 0 < FILES 16 | Goto ENTRY 17 | GetDString FILENAME 0x40 18 | Get SIZE Long 19 | Get ZSIZE Long 20 | Get OFFSET Long 21 | Get FLAG Long 22 | 23 | If FLAG = 0 24 | Log FILENAME OFFSET ZSIZE 25 | Else 26 | Math OFFSET + 8 27 | Math ZSIZE - 8 28 | CLog FILENAME OFFSET ZSIZE SIZE 29 | Endif 30 | 31 | Math ENTRY + 0x50 32 | Next A 33 | 34 | 35 | -------------------------------------------------------------------------------- /QuickBMS/PSP/Colin_Mcrae_Dirt_2_(PSP)_DATA.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Colin McRae Dirt 2 (PSP) 3 | # DATA.PSP extract 4 | # QuickBMS script by DKDave, 2022 5 | # ================================================================================ 6 | 7 | Comtype zlib 8 | 9 | Get TEMPNAME basename 10 | Get ENTRIES Long 11 | 12 | Goto 0x10 13 | 14 | For A = 0 < ENTRIES 15 | Get MISC1 Long 16 | Get OFFSET Long 17 | Get SIZE Long 18 | Get ZSIZE Long 19 | 20 | If ZSIZE = SIZE 21 | Log MEMORY_FILE OFFSET SIZE 22 | Else 23 | CLog MEMORY_FILE OFFSET ZSIZE SIZE 24 | Endif 25 | 26 | Goto 0 -1 27 | GetDString TYPE 4 -1 28 | String FILENAME P "%TEMPNAME%_%A%" 29 | 30 | # Guess a few file types 31 | 32 | If TYPE = "RIFF" 33 | String FILENAME + ".wav" 34 | Elif TYPE = "PTEX" 35 | String FILENAME + ".ptex" 36 | Elif TYPE = "RELO" 37 | String FILENAME + ".relo" 38 | Endif 39 | 40 | Log FILENAME 0 SIZE -1 41 | 42 | Next A 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /QuickBMS/PSP/Kingdom_Hearts_Birth_By_Sleep_(PSP)_SCD.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Kingdom Hearts: Birth By Sleep (PSP) 3 | # .SCD extract 4 | # QuickBMS script by DKDave, 2020 5 | # ================================================================================ 6 | 7 | For A = 0 8 | FindLoc OFFSET String "SEDBSSCF" 0 "" 9 | 10 | If OFFSET = "" 11 | Break 12 | Endif 13 | 14 | Goto OFFSET 15 | GetDString JUNK 0x8 16 | Get TYPE Long 17 | Get JUNK Long 18 | Get SIZE Long 19 | 20 | String FILENAME P "BBS_%A%.scd" 21 | 22 | Log FILENAME OFFSET SIZE 23 | Next A 24 | 25 | -------------------------------------------------------------------------------- /QuickBMS/PSP/Metal_Gear_Solid_Peace_Walker_(PSP)_PDT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Metal Gear Solid: Peace Walker (PSP) 3 | # .PDT extract (for the files VOICEBF.PDT, VOICEPS.PDT, VOICERT.PDT) 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Get ENCRYPT_BYTE Byte 9 | FileXor ENCRYPT_BYTE 0x0c 10 | 11 | Goto 0x18 12 | Get FILES Short 13 | Math ENTRY = 0x20 14 | Get TEMPNAME basename 15 | 16 | For A = 0 < FILES 17 | Goto ENTRY 18 | Get JUNK Long 19 | Get JUNK Long 20 | Get OFFSET Long 21 | 22 | Goto OFFSET 23 | Goto 0x50 0 SEEK_CUR 24 | Get SIZE Long 25 | SavePos OFFSET 26 | 27 | String FILENAME P "%TEMPNAME%_%A%.at3" 28 | Log FILENAME OFFSET SIZE 29 | 30 | Math ENTRY + 12 31 | Next A 32 | 33 | -------------------------------------------------------------------------------- /QuickBMS/PSP/Metal_Gear_Solid_Portable_Ops_(PSP)_zar.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Metal Gear Solid: Portable Ops (PSP) 3 | # _zar / cache.dar extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Can be run on compressed _zar files or cache.dar files extracted from the _zar files 8 | 9 | 10 | Get TEMPNAME filename 11 | 12 | If TEMPNAME = "_zar" 13 | Get SIZE Long 14 | Get ZSIZE asize 15 | Math ZSIZE - 4 16 | CLog MEMORY_FILE 4 ZSIZE SIZE 17 | 18 | Elif TEMPNAME = "cache.dar" 19 | Get ZSIZE asize 20 | Log MEMORY_FILE 0 ZSIZE 21 | Endif 22 | 23 | 24 | Goto 0 -1 25 | Get FILES Long -1 26 | SavePos OFFSET -1 27 | 28 | For A = 0 < FILES 29 | Goto OFFSET -1 30 | 31 | Get FILENAME String -1 32 | Padding 0x4 -1 33 | Get SIZE Long -1 34 | Padding 0x10 -1 35 | SavePos OFFSET2 -1 36 | 37 | Log FILENAME OFFSET2 SIZE -1 38 | 39 | XMath OFFSET "OFFSET2 + SIZE + 1" 40 | Next A 41 | 42 | -------------------------------------------------------------------------------- /QuickBMS/PSP/Miami_Vice_(PSP)_ASR.bms: -------------------------------------------------------------------------------- 1 | # Miami Vice (PSP) 2 | # ASR audio extract 3 | # QuickBMS script by DKDave, 2023 4 | 5 | IDString "Asura " 6 | 7 | Math OFFSET = 8 8 | Get FILE_END asize 9 | 10 | For A = 0 11 | Goto OFFSET 12 | GetDString CHUNK_NAME 4 13 | 14 | If CHUNK_NAME = "" 15 | Break 16 | Endif 17 | 18 | Get CHUNK_SIZE Long 19 | GetDString JUNK 0x10 20 | Get DATA_SIZE Long 21 | XMath OFFSET2 "OFFSET + (CHUNK_SIZE - DATA_SIZE)" 22 | Get FILENAME String 23 | String FILENAME R ".wav" ".vag" 24 | String FILENAME R "Sound properties from .." "" 25 | 26 | Log FILENAME OFFSET2 DATA_SIZE 27 | 28 | Math OFFSET + CHUNK_SIZE 29 | Next A 30 | -------------------------------------------------------------------------------- /QuickBMS/QuickBMS.md: -------------------------------------------------------------------------------- 1 | These are some of the QuickBMS scripts I've created. 2 | 3 | The scripts in the main folder here are stand-alone extraction scripts. Those within their own folders include additional files, such as .txth files needed to play the files extracted by the script. 4 | -------------------------------------------------------------------------------- /QuickBMS/Space_Hulk_2_(Saturn)_CAT.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Space Hulk 2 (Sega Saturn) 3 | # .CAT file extract (audio files) 4 | # QuickBMS script by Dave, 2020 5 | # ================================================================================ 6 | 7 | Endian Big 8 | 9 | Get TEMPNAME basename 10 | 11 | Math A = 1 12 | 13 | For A 14 | FindLoc OFFSET String "FORM" 0 -1 15 | 16 | If OFFSET = -1 17 | Break 18 | Endif 19 | 20 | Goto OFFSET 21 | Get JUNK Long 22 | Get SIZE Long 23 | Math SIZE + 8 24 | 25 | String FILENAME P "%TEMPNAME%\%TEMPNAME%_%A%.aiff" 26 | 27 | Log FILENAME OFFSET SIZE 28 | 29 | Next A 30 | -------------------------------------------------------------------------------- /QuickBMS/Switch/Endless_Ocean_Luminous_(Switch)_BEA.bms: -------------------------------------------------------------------------------- 1 | # Endless Ocean Luminous (Switch) 2 | # .bea extract 3 | # QuickBMS script by DKDave, 2024 4 | 5 | 6 | ComType ZSTD 7 | 8 | IDString "SCNE" 9 | 10 | Goto 0x20 11 | Get FILES LongLong 12 | Goto 0x30 13 | Get TABLE1 LongLong 14 | 15 | For A = 0 < FILES 16 | Goto TABLE1 17 | Get ASST_OFFSET LongLong 18 | 19 | Goto ASST_OFFSET 20 | Goto 0x14 0 SEEK_CUR 21 | Get ZSIZE Long 22 | Get SIZE Long 23 | Goto 0x0c 0 SEEK_CUR 24 | Get OFFSET LongLong 25 | Get NAME_OFF LongLong 26 | Goto NAME_OFF 27 | Get LEN Short 28 | GetDString FILENAME LEN 29 | 30 | CLog FILENAME OFFSET ZSIZE SIZE 31 | 32 | Math TABLE1 + 8 33 | Next A 34 | 35 | -------------------------------------------------------------------------------- /QuickBMS/Switch/Splatoon3_(Switch)_ZS.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Splatoon 3 (Nintendo Switch, 2022) 3 | # Extract audio from .zs compressed archives 4 | # QuickBMS script by DKDave, 2022 5 | # ================================================================================ 6 | 7 | Comtype ZSTD 8 | 9 | Get ID Long 10 | Get ZSIZE asize 11 | 12 | If ID = 0xfd2fb528 13 | CLog MEMORY_FILE 0 ZSIZE ZSIZE 14 | Else 15 | Log MEMORY_FILE 0 ZSIZE 16 | Endif 17 | 18 | Goto 0 -1 19 | GetDString ID 4 -1 20 | 21 | If ID <> "BARS" 22 | Print "Not a BARS file." 23 | Exit 24 | Endif 25 | 26 | Goto 0x0c -1 27 | Get FILES Long -1 28 | XMath TABLE "(FILES * 4) + 0x10" 29 | 30 | For A = 0 < FILES 31 | Goto TABLE -1 32 | Get INFO Long -1 33 | Get DATA Long -1 34 | Goto INFO -1 35 | GetDString JUNK 0x24 -1 36 | SavePos TEMP1 -1 37 | Get NAME_OFF Long -1 38 | Math NAME_OFF + TEMP1 39 | Goto NAME_OFF -1 40 | Get FILENAME String -1 41 | String FILENAME + ".bwav" 42 | Goto DATA -1 43 | GetDString JUNK 0x1c -1 44 | Get DATA_SIZE Long -1 45 | XMath DATA_SIZE "((DATA_SIZE + 13) / 14) * 8 + 0x80" 46 | 47 | Log FILENAME DATA DATA_SIZE -1 48 | 49 | Math TABLE + 8 50 | Next A 51 | 52 | 53 | -------------------------------------------------------------------------------- /QuickBMS/Switch/Tsukihime_Remake_(Switch)_HED-MRG-NAM.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Tsukihime (Remake) 3 | # HED/MRG/NAM extract 4 | # QuickBMS script by DKDave, 2021 5 | # ================================================================================ 6 | 7 | # Notes: 8 | # Use this script on the .HED file 9 | 10 | 11 | Open FDDE "mrg" 1 12 | Open FDDE "nam" 2 13 | 14 | Get ENTRIES asize 15 | Math ENTRIES / 8 16 | 17 | Math HED_ENTRY = 0 18 | Math NAM_ENTRY = 0 19 | 20 | For A = 0 < ENTRIES 21 | Goto HED_ENTRY 22 | Get OFFSET Long 23 | 24 | If OFFSET = 0xFFFFFFFF 25 | Break 26 | Endif 27 | 28 | Get SIZE Short 29 | Math OFFSET * 0x800 30 | Math SIZE * 0x800 31 | 32 | Goto NAM_ENTRY 2 33 | Get FILENAME String 2 34 | 35 | If SIZE <> 0 36 | Goto OFFSET 1 37 | GetDString FILE_TYPE 4 1 38 | 39 | If FILE_TYPE = "mrgd" 40 | Log FILENAME OFFSET SIZE 1 41 | 42 | Elif FILE_TYPE = "NXCX" 43 | Get SIZE Long 1 44 | Get ZSIZE Long 1 45 | Get JUNK Long 1 46 | SavePos OFFSET2 1 47 | 48 | Comtype zlib 49 | CLog FILENAME OFFSET2 ZSIZE SIZE 1 50 | 51 | Elif FILE_TYPE = "NXGX" 52 | Get SIZE Long 1 53 | Get ZSIZE Long 1 54 | Get JUNK Long 1 55 | SavePos OFFSET2 1 56 | 57 | Comtype gzip 58 | CLog FILENAME OFFSET2 ZSIZE SIZE 1 59 | 60 | Endif 61 | 62 | Endif 63 | 64 | Math HED_ENTRY + 8 65 | Math NAM_ENTRY + 0x20 66 | Next A 67 | 68 | -------------------------------------------------------------------------------- /QuickBMS/Wii/Karaoke_Revolution_(Wii)_REV.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Karaoke Revolution (Wii) 3 | # REV audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Endian Big 9 | 10 | Goto 4 11 | Get BLOCK_SIZE Long 12 | 13 | Goto 0x0c 14 | Get FILES Long 15 | Get ENTRY Long 16 | Math ENTRY * BLOCK_SIZE 17 | 18 | Goto 0x28 19 | Get NAMES Long 20 | Math NAMES * BLOCK_SIZE 21 | 22 | For A = 0 < FILES 23 | Goto ENTRY 24 | Get OFFSET Long 25 | Math OFFSET * BLOCK_SIZE 26 | Get HASH Long 27 | Get SIZE Long 28 | Get NAME_OFF Long 29 | Get MISC1 Long 30 | Math NAME_OFF + NAMES 31 | Goto NAME_OFF 32 | Get FILENAME String 33 | 34 | If FILENAME & ".wav" # output .wav / .wav.str files only 35 | Log FILENAME OFFSET SIZE 36 | Endif 37 | 38 | Math ENTRY + 0x14 39 | Next A 40 | 41 | -------------------------------------------------------------------------------- /QuickBMS/Wii/Littlest_Pet_Shop_Friends_(Wii)_RPK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Littlest Pet Shop Friends (Wii) 3 | # RPK extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | Endian Big 8 | 9 | Comtype DK2 10 | 11 | Get ZSIZE asize 12 | CLog MEMORY_FILE 0 ZSIZE ZSIZE 13 | 14 | Math CHUNK_OFFSET = 0x8 15 | 16 | For A = 0 17 | 18 | Goto CHUNK_OFFSET -1 19 | GetDString CHUNK_NAME 4 -1 20 | Get CHUNK_SIZE Long -1 21 | 22 | If CHUNK_NAME = "DATA" 23 | Break 24 | Endif 25 | 26 | If CHUNK_NAME = "AGRP" 27 | GetDString JUNK 0x14 -1 28 | XMath FILES "(CHUNK_SIZE - 0x1c) / 0x28" 29 | 30 | For B = 0 < FILES 31 | GetDString JUNK 0x18 -1 32 | Get OFFSET Long -1 33 | Get SIZE Long -1 34 | Get NAME_OFF Long -1 35 | Get JUNK Long -1 36 | SavePos TEMP1 -1 37 | Goto NAME_OFF -1 38 | Get FILENAME String -1 39 | Log FILENAME OFFSET SIZE -1 40 | Goto TEMP1 -1 41 | Next B 42 | 43 | Endif 44 | 45 | Math CHUNK_OFFSET + CHUNK_SIZE 46 | 47 | Next A 48 | 49 | -------------------------------------------------------------------------------- /QuickBMS/Wii/Skylanders_Giants_(Wii)_arc.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Skylanders Giants (Wii) 3 | # .arc file extract 4 | # QuickBMS script by Dave, 2019 5 | # ================================================================================ 6 | 7 | IDString "IGA\x1A" 8 | 9 | Goto 0xC 10 | Get ENTRIES Long 11 | Goto 0x1c 12 | Get NAMES Long 13 | Set NAME_POS Long NAMES 14 | 15 | XMath FILE_TABLE "(ENTRIES * 4) + 0x34" 16 | 17 | For A = 1 to ENTRIES 18 | 19 | Goto FILE_TABLE 20 | Get OFFSET Long 21 | Get SIZE Long 22 | Get MISC Long 23 | 24 | Goto NAME_POS 25 | Get NAME_OFF Long 26 | Math NAME_OFF + NAMES 27 | SavePos NAME_POS 28 | Goto NAME_OFF 29 | Get FILENAME String 30 | 31 | Log FILENAME OFFSET SIZE 32 | 33 | Math FILE_TABLE + 0xc 34 | 35 | Next A 36 | -------------------------------------------------------------------------------- /QuickBMS/XBox/007_Everything_Or_Nothing_(XBox)_XBC.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # 007: Everything Or Nothing (XBox) 3 | # XBC archive extract 4 | # QuickBMS script by DKDave, 2025 5 | # ================================================================================ 6 | 7 | 8 | ComType DK2 9 | 10 | Goto 0xc 11 | Get SECTIONS Long 12 | Math SEC_ENTRY = 0x18 13 | Math OFFSET = 0x800 14 | 15 | For A = 0 < SECTIONS 16 | Goto SEC_ENTRY 17 | Get DIR_ENTRY Long 18 | Get DIR_COUNT Long 19 | Get SIZE Long 20 | Get ZSIZE Long 21 | Get MISC1 Long 22 | Get MISC2 Short 23 | Get COMP Short # 1024 = compressed 24 | 25 | If COMP = 0 26 | Log MEMORY_FILE OFFSET ZSIZE 27 | Else 28 | CLog MEMORY_FILE OFFSET ZSIZE SIZE 29 | Endif 30 | 31 | Math OFFSET2 = 0 32 | 33 | For B = 0 < DIR_COUNT 34 | Goto DIR_ENTRY 35 | GetDString FILENAME 8 36 | Get JUNK Float 37 | Get ENTRY_SIZE Long 38 | Get ENTRY_OFF Long 39 | Get ENTRY_ACTUAL_SIZE Long 40 | 41 | Log FILENAME OFFSET2 ENTRY_SIZE -1 42 | 43 | Math OFFSET2 + ENTRY_ACTUAL_SIZE 44 | Math DIR_ENTRY + 0x18 45 | Next B 46 | 47 | Math OFFSET + ZSIZE 48 | Goto OFFSET 49 | Padding 0x800 50 | SavePos OFFSET 51 | 52 | Math SEC_ENTRY + 0x18 53 | Next A 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /QuickBMS/XBox/Bruce_Force_(XBox)_TGZ.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Brute Force (XBox) 3 | # TGZ extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Comtype gzip 9 | 10 | Get ZSIZE asize 11 | CLog MEMORY_FILE 0 ZSIZE ZSIZE 12 | Get MEM_SIZE asize -1 13 | 14 | Math OFFSET = 0 15 | 16 | For A = 0 17 | Goto OFFSET -1 18 | GetDString FILENAME 0x64 -1 19 | 20 | If FILENAME = "" 21 | Break 22 | Endif 23 | 24 | Goto 0x18 -1 SEEK_CUR 25 | Get STRING1 String -1 26 | Get STRING2 String -1 27 | String JUNK v STRING1 " " SIZE MISC1 MISC2 28 | String JUNK v STRING2 " " FLAG 29 | Math SIZE Octal SIZE 30 | Math MISC1 Octal MISC1 # Octal stored as text ... 31 | Math MISC2 Octal MISC2 32 | Math FLAG Octal FLAG # 0 = file, 5 = folder 33 | 34 | Math OFFSET + 0x200 35 | 36 | If FLAG = 0 37 | Log FILENAME OFFSET SIZE -1 38 | Endif 39 | 40 | Math OFFSET + SIZE 41 | Goto OFFSET 42 | Padding 0x200 43 | SavePos OFFSET 44 | 45 | Next A 46 | 47 | -------------------------------------------------------------------------------- /QuickBMS/XBox/Dino_Crisis_3_(XBox)_XSP.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Dino Crisis 3 (XBOX) 3 | # XSP audio extract 4 | # QuickBMS script by DKDave, 2020 (updated 2023) 5 | # ================================================================================ 6 | 7 | # Audio is extracted as playable .wav files 8 | 9 | 10 | Goto 0xc 11 | Get FILES Long 12 | Get ENTRY Long 13 | Get DATA_START Long 14 | 15 | For A = 0 < FILES 16 | Goto ENTRY 17 | GetDString FILENAME 0x20 18 | 19 | String FILENAME R ".xam" ".wav" 20 | String FILENAME R ".aif" ".wav" 21 | 22 | Get OFFSET Long 23 | Math OFFSET + DATA_START 24 | Get JUNK Long 25 | Get SIZE Long 26 | SavePos FMT_INFO 27 | 28 | Log MEMORY_FILE 0 0 29 | Set MEMORY_FILE binary "RIFF\x00\x00\x00\x00WAVEfmt \x14\x00\x00\x00" 30 | 31 | Append 32 | Log MEMORY_FILE FMT_INFO 0x14 33 | Append 34 | 35 | XMath RIFF_SIZE "SIZE + 40" 36 | PutVarChr MEMORY_FILE 4 RIFF_SIZE Long 37 | PutVarChr MEMORY_FILE 0x28 0x61746164 Long 38 | PutVarChr MEMORY_FILE 0x2c SIZE Long 39 | 40 | Append 41 | Log MEMORY_FILE OFFSET SIZE 42 | Append 43 | 44 | Get MEM_SIZE asize -1 45 | Log FILENAME 0 MEM_SIZE -1 46 | 47 | Math ENTRY + 0x40 48 | Next A 49 | 50 | -------------------------------------------------------------------------------- /QuickBMS/XBox/LOTR_Fellowship_Of_The_Ring_(Xbox)_XPA.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Lord of The Rings: The Fellowship Of The Ring (XBox) 3 | # XPA audio extract 4 | # QuickBMS script by DKDave, 2025 5 | # ================================================================================ 6 | 7 | 8 | Goto 4 9 | Get FILES Long 10 | 11 | Math ENTRY = 0x18 12 | 13 | For A = 0 < FILES 14 | Goto ENTRY 15 | GetDString FILENAME 0x20 16 | Goto 0xe4 0 SEEK_CUR 17 | Get SIZE Long 18 | Get OFFSET Long 19 | 20 | Log FILENAME OFFSET SIZE 21 | 22 | Math ENTRY + 0x118 23 | Next A 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /QuickBMS/XBox/MechAssault_1_(XBox)_d1Bank.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # MechAssault 1 (XBox) 3 | # .d1Bank extract 4 | # QuickBMS script by Dave, 2020 5 | # ================================================================================ 6 | 7 | Goto 0x08 8 | Get ENTRIES Long 9 | Goto 0x14 10 | Get FILE_TABLE Long 11 | Goto 0x18 12 | Get DATA_OFFSET Long 13 | 14 | Get TEMPNAME filename 15 | Get FILE_PREFIX basename 16 | 17 | If TEMPNAME = "SFX.d1Bank" 18 | Math OFFSET_FLAG = 1 19 | Else 20 | Math OFFSET_FLAG = 0 21 | Endif 22 | 23 | SET MEMORY_FILE binary "\x00\x00\x00\x00\x00\x00\x00\x00" 24 | 25 | 26 | For A = 1 to ENTRIES 27 | Goto FILE_TABLE 28 | Get JUNK Long 29 | Get OFFSET Long 30 | Get JUNK Long 31 | Get JUNK Long 32 | Get SIZE Long 33 | Get JUNK Long 34 | Get JUNK Long 35 | Get AUDIO_TYPE Short 36 | Get CHANNELS Short 37 | Get SAMP_RATE Long 38 | 39 | If OFFSET_FLAG = 1 40 | Math OFFSET + DATA_OFFSET 41 | Endif 42 | 43 | If AUDIO_TYPE = 1 44 | String FILE_EXT = ".pcm16.vgmstream" 45 | Elif AUDIO_TYPE = 0x69 46 | String FILE_EXT = ".xbox.vgmstream" 47 | Else 48 | String FILE_EXT = ".unknown" 49 | Endif 50 | 51 | String FILENAME P "%FILE_PREFIX%_%A%%FILE_EXT%" 52 | 53 | PutVarChr MEMORY_FILE 0 SAMP_RATE Long 54 | PutVarChr MEMORY_FILE 4 CHANNELS Long 55 | 56 | Log FILENAME 0 8 -1 57 | Append 58 | Log FILENAME OFFSET SIZE 59 | Append 60 | 61 | Math FILE_TABLE + 0x30 62 | 63 | Next A 64 | 65 | -------------------------------------------------------------------------------- /QuickBMS/XBox/Spider-Man_(XBox)_XSH.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Spider-Man (XBox, 2002) 3 | # XSH/XSD audio extract 4 | # QuickBMS script by DKDave, 2020 (updated 2023) 5 | # ================================================================================ 6 | 7 | 8 | Open FDDE "XSD" 1 9 | 10 | Get TEMPNAME basename 11 | 12 | Goto 0x8 13 | Get FILES Long 14 | Math ENTRY = 0xc 15 | 16 | For A = 0 < FILES 17 | Goto ENTRY 18 | GetDString FILENAME 0x20 19 | String FILENAME P "%FILENAME%.wav" 20 | Get JUNK Long 21 | Get OFFSET Long 22 | Get SIZE Long 23 | 24 | If SIZE <> 0 25 | Goto 0x20 0 SEEK_CUR 26 | SavePos FMT_INFO 27 | Set MEMORY_FILE binary "RIFF\x00\x00\x00\x00WAVEfmt \x14\x00\x00\x00" 28 | 29 | Append 30 | Log MEMORY_FILE FMT_INFO 0x14 31 | Append 32 | 33 | XMath RIFF_SIZE "SIZE + 0x28" 34 | PutVarChr MEMORY_FILE 4 RIFF_SIZE Long 35 | PutVarChr MEMORY_FILE 0x26 0x40 Short 36 | PutVarChr MEMORY_FILE 0x28 0x61746164 Long 37 | PutVarChr MEMORY_FILE 0x2c SIZE Long 38 | 39 | Append 40 | Log MEMORY_FILE OFFSET SIZE 1 41 | Append 42 | 43 | Get MEM_SIZE asize -1 44 | Log FILENAME 0 MEM_SIZE -1 45 | Endif 46 | 47 | Math ENTRY + 0x60 48 | Next A 49 | -------------------------------------------------------------------------------- /QuickBMS/XBox/Star_Wars_Clone_Wars_(XBox)_ZWP.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Star Wars: The Clone Wars (XBOX) 3 | # Extract files from data.zwp archive 4 | # QuickBMS script by Dave, 2020 5 | # ================================================================================ 6 | 7 | IDString "NORK" 8 | 9 | Goto 0x10 10 | Get ENTRIES Long 11 | Get FILE_TABLE Long 12 | 13 | Goto FILE_TABLE 14 | 15 | For A = 1 To ENTRIES 16 | Get MISC1 Long 17 | Get TEXT_LEN Byte 18 | GetDString FILENAME TEXT_LEN 19 | Get OFFSET Long 20 | Get SIZE Long 21 | Get ZSIZE Long 22 | 23 | If ZSIZE = SIZE 24 | Log FILENAME OFFSET ZSIZE 25 | Else 26 | CLog FILENAME OFFSET ZSIZE SIZE 27 | Endif 28 | 29 | Next A 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /QuickBMS/XBox/Star_Wars_Revenge_Of_The_Sith_(Xbox)_RPX.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Star Wars: Revenge Of The Sith (XBox) 3 | # .RPX audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | # Audio is extracted as playable .wav files 8 | 9 | 10 | Log MEMORY_FILE 0 0 11 | PutVarChr MEMORY_FILE 47 0 12 | 13 | PutVarChr MEMORY_FILE 0 0x46464952 Long 14 | PutVarChr MEMORY_FILE 8 0x45564157 Long 15 | PutVarChr MEMORY_FILE 12 0x20746d66 Long 16 | PutVarChr MEMORY_FILE 16 0x14 Long 17 | PutVarChr MEMORY_FILE 20 0x69 Short # codec - XBox ADPCM 18 | PutVarChr MEMORY_FILE 22 0x01 Short # channels 19 | PutVarChr MEMORY_FILE 24 0x5622 Long # sample rate 20 | PutVarChr MEMORY_FILE 28 0x2b11 Long # byte rate 21 | PutVarChr MEMORY_FILE 0x20 0x24 Short # frame size for mono 22 | PutVarChr MEMORY_FILE 0x22 0x04 Short # bits 23 | PutVarChr MEMORY_FILE 0x24 0x00400002 Long # extra data 24 | PutVarChr MEMORY_FILE 0x28 0x61746164 Long 25 | 26 | Goto 4 27 | Get FILES Long 28 | Get TEMPNAME basename 29 | Goto 0x20 30 | 31 | For A = 0 < FILES 32 | GetDString FILENAME 0x20 33 | String FILENAME + ".wav" 34 | Get OFFSET Long 35 | Get SIZE Long 36 | Get JUNK Long 37 | 38 | XMath RIFF_SIZE "SIZE + 0x28" 39 | PutVarChr MEMORY_FILE 4 RIFF_SIZE Long 40 | PutVarChr MEMORY_FILE 0x2c SIZE Long 41 | 42 | Log FILENAME 0 0x30 -1 43 | Append 44 | Log FILENAME OFFSET SIZE 45 | Append 46 | Next A 47 | 48 | -------------------------------------------------------------------------------- /QuickBMS/XBox/State_Of_Emergency_(XBox)_SBH-SBK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # State Of Emergency (XBox) 3 | # .sbh / .sbk audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Open FDDE "sbk" 1 9 | 10 | Get TEMPNAME basename 11 | Get FILES Long 12 | Math ENTRY = 0x10 13 | 14 | For A = 0 < FILES 15 | Goto ENTRY 16 | GetDString JUNK 0x14 17 | SavePos WAV_INFO 18 | GetDString JUNK 0x14 19 | Get OFFSET Long 20 | Get SIZE Long 21 | 22 | Set MEMORY_FILE binary "RIFF\x00\x00\x00\x00WAVEfmt \x14\x00\x00\x00" 23 | 24 | Append 25 | Log MEMORY_FILE WAV_INFO 0x14 26 | Append 27 | 28 | PutVarChr MEMORY_FILE 0x28 0x61746164 Long # "data" 29 | PutVarChr MEMORY_FILE 0x2c SIZE Long 30 | XMath RIFF_SIZE "SIZE + 0x28" 31 | PutVarChr MEMORY_FILE 0x04 RIFF_SIZE Long 32 | 33 | Append 34 | Log MEMORY_FILE OFFSET SIZE 1 # audio data from .sbk file 35 | Append 36 | 37 | String FILENAME P "%TEMPNAME%_%A%.wav" 38 | Get FINAL_SIZE asize -1 39 | Log FILENAME 0 FINAL_SIZE -1 40 | 41 | Math ENTRY + 0x5c 42 | Next A 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /QuickBMS/XBox/Tetris_Worlds_(XBox)_RCF.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Tetris Worlds (XBox) 3 | # RCF extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Goto 0x24 9 | Get ENTRY Long 10 | Goto ENTRY 11 | Get FILES Long 12 | Get NAMES Long 13 | 14 | Goto 8 0 SEEK_CUR 15 | SavePos ENTRY 16 | 17 | Goto NAMES 18 | Goto 8 0 SEEK_CUR 19 | SavePos NAMES 20 | 21 | For A = 0 < FILES 22 | Goto ENTRY 23 | Get MISC1 Long 24 | Get OFFSET Long 25 | Get SIZE Long 26 | 27 | PutArray 0 A OFFSET 28 | PutArray 1 A SIZE 29 | 30 | Math ENTRY + 0x0c 31 | Next A 32 | 33 | 34 | SortArray 0 1 35 | 36 | For A = 0 < FILES 37 | GetArray OFFSET 0 A 38 | GetArray SIZE 1 A 39 | Goto NAMES 40 | Get LEN Long 41 | GetDString FILENAME LEN 42 | Get MISC1 Long 43 | SavePos NAMES 44 | 45 | Log FILENAME OFFSET SIZE 46 | Next A 47 | -------------------------------------------------------------------------------- /QuickBMS/XBox360/Condemned1_(XBox360)_Bundle00.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Condemned (XBox 360) 3 | # .Bundle00 Extract 4 | # QuickBMs script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | IDString "LDNB" 9 | 10 | Endian Big 11 | 12 | Get VERSION Long 13 | Get FILES Long 14 | Get NAME_SIZE Long 15 | 16 | SavePos NAMES 17 | XMath ENTRY "NAMES + NAME_SIZE" 18 | XMath OFFSET "ENTRY + (FILES * 4)" 19 | 20 | For A = 0 < FILES 21 | Goto ENTRY 22 | Get NAME_OFF Long 23 | Math NAME_OFF + NAMES 24 | Goto NAME_OFF 25 | Get FILENAME String 26 | Goto OFFSET 27 | Get SIZE Long 28 | SavePos OFFSET 29 | 30 | Log FILENAME OFFSET SIZE 31 | 32 | Math OFFSET + SIZE 33 | Math ENTRY + 4 34 | Next A 35 | -------------------------------------------------------------------------------- /QuickBMS/XBox360/Condemned1_(Xbox360)_Arch00.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Condemned: Criminal Origins (XBox 360) 3 | # ,ARch00 extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | Comtype zlib 9 | 10 | Endian Big 11 | 12 | Goto 8 13 | Get NAMES_SIZE Long 14 | Get COUNT1 Long 15 | Get COUNT2 Long 16 | Math NAMES = 0x30 17 | 18 | XMath ENTRY "NAMES_SIZE + NAMES" 19 | 20 | For A = 0 < COUNT2 21 | Goto ENTRY 22 | Get NAME_OFF Long 23 | Math NAME_OFF + NAMES 24 | Get OFFSET LongLong 25 | Get ZSIZE LongLong 26 | Get SIZE LongLong 27 | Get FLAG Long 28 | Goto NAME_OFF 29 | Get FILENAME String 30 | 31 | If FLAG = 1 32 | CLog FILENAME OFFSET ZSIZE SIZE 33 | Else 34 | If ZSIZE > 0 35 | Log FILENAME OFFSET ZSIZE 36 | Endif 37 | Endif 38 | 39 | Math ENTRY + 0x20 40 | Next A 41 | 42 | 43 | -------------------------------------------------------------------------------- /QuickBMS/XBox360/Double_Dragon_2_(XBox360)_PACK.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Double Dragon 2: Wander Of The Dragons (XBox 360) 3 | # PACK Extract 4 | # QuickBMS script by DKDave, 2021 5 | # ================================================================================ 6 | 7 | Endian Big 8 | Comtype xmemlzx 9 | 10 | IDString "GOLF1.02" 11 | 12 | Goto 0x0c 13 | Get ENTRIES Long 14 | 15 | Goto 0x1b 16 | 17 | For A = 0 < ENTRIES 18 | Get TEXT_LEN Byte 19 | GetDString FILENAME TEXT_LEN 20 | Get OFFSET Long 21 | Get ZSIZE Long 22 | GetDString JUNK 8 23 | GetDString COMP_TYPE 4 24 | Get SIZE Long 25 | GetDString JUNK 11 26 | 27 | If COMP_TYPE = "xlzw" 28 | CLog FILENAME OFFSET ZSIZE SIZE 29 | Else 30 | Log FILENAME OFFSET ZSIZE 31 | Endif 32 | 33 | Next A 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /QuickBMS/XBox360/Full_Auto_(XBox360)_PIX.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Full Auto (XBox 360, 2006) 3 | # .PIX archive extract 4 | # QuickBMS script by DKDave, 2025 5 | # ================================================================================ 6 | 7 | 8 | Math OFFSET = 0 9 | 10 | For A = 0 11 | Goto OFFSET 12 | Get ZSIZE Long 13 | Get SIZE Long 14 | 15 | If ZSIZE = 0 16 | Break 17 | Endif 18 | 19 | Padding 0x800 20 | SavePos OFFSET 21 | 22 | CLog MEMORY_FILE OFFSET ZSIZE SIZE 23 | 24 | Goto 0 -1 25 | Get FILES Long -1 26 | 27 | # Process uncompressed data in memory file 28 | 29 | For B = 0 < FILES 30 | Get SIZE Long -1 31 | Get FILENAME String -1 32 | SavePos OFFSET2 -1 33 | 34 | Log FILENAME OFFSET2 SIZE -1 35 | 36 | Goto SIZE -1 SEEK_CUR 37 | Next B 38 | 39 | Math OFFSET + ZSIZE 40 | 41 | Next A 42 | 43 | -------------------------------------------------------------------------------- /QuickBMS/XBox360/Mass_Effect2_(XBox360)_AFC.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Mass Effect 2 (XBox 360) 3 | # AFC audio extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | Endian Big 8 | 9 | Get FILE_END asize 10 | Math OFFSET = 0 11 | Get TEMPNAME basename 12 | Math A = 1 13 | 14 | For A 15 | If OFFSET = FILE_END 16 | Break 17 | Endif 18 | 19 | Goto OFFSET 20 | Get JUNK Long # RIFX 21 | Get SIZE Long 22 | GetDString JUNK 8 23 | Get FMT_SIZE Long 24 | 25 | If FMT_SIZE = 0x34 26 | ReverseLong SIZE # XMA files have RIFF size as little endian 27 | Else 28 | Math SIZE + 8 29 | Endif 30 | 31 | String FILENAME P "%TEMPNAME%_%A%.wem" # Wwise audio files 32 | 33 | Log FILENAME OFFSET SIZE 34 | 35 | Math OFFSET + SIZE 36 | 37 | Next A 38 | 39 | 40 | -------------------------------------------------------------------------------- /QuickBMS/XBox360/Strike_Witches_Silver_Wings_(XBox360)_BIN.bms: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Strike Witches: Silver Wings (XBox 360) 3 | # .bin extract 4 | # QuickBMS script by DKDave, 2023 5 | # ================================================================================ 6 | 7 | 8 | IDString "GGXArchiver1.00\x00" 9 | 10 | Comtype BPE 11 | 12 | Get FILES Long 13 | Get FILES2 Long # Number of actual files 14 | Math NAMES = 0x20 15 | XMath ENTRY "(FILES * 0x20) + 0x20" 16 | XMath DATA_START "(FILES * 0x20) + 0x20 + (FILES2 * 0x18)" 17 | 18 | For A = 0 < FILES2 19 | Goto ENTRY 20 | Get NAME_IDX Long 21 | Get MISC1 Long 22 | Get SIZE Long 23 | Get ZSIZE Long 24 | Get FLAG Long 25 | Get OFFSET Long 26 | Math OFFSET + DATA_START 27 | XMath NAME_OFF "(NAME_IDX * 0x20) + 0x20" 28 | Goto NAME_OFF 29 | Get FILENAME String 30 | 31 | If FLAG = 1 32 | CLog FILENAME OFFSET ZSIZE SIZE 33 | Else 34 | Log FILENAME OFFSET ZSIZE 35 | Endif 36 | 37 | Math ENTRY + 0x18 38 | Next A 39 | 40 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # My scripts 2 | 3 | This is my collection of various QuickBMS, Python and Noesis scripts I've written for extracting data from many game archives, covering multiple platforms. 4 | 5 | I have previously uploaded many of these to websites such as Xentax, Zenhax, and also Xentax/HCS discord channels, and there are many that haven't been previously uploaded elsewhere. The ones published here have been corrected/updated where required, so these should be the most complete versions and will replace any previous versions. 6 | 7 | Many more scripts will be added once checked for accuracy. 8 | 9 | NOTE: These scripts are all my own work based on my own reverse engineering. You may not distribute these tools for profit in any way, and all credit to me must be given if redistributed/re-used in your own projects. 10 | 11 | NOTE 2: The latest version of QuickBMS (0.12) may not work correctly with some scripts due to differences in string handling. 12 | 13 | 14 | Dave 15 | --------------------------------------------------------------------------------