Kaplas80 / ParManager

Tools for Yakuza PAR archives

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Yakuza Remastered 3/4/5 support

Masquerade64 opened this issue · comments

I have tried ParManager for Yakuza 3 remastered. I cannot seem to make new pars that are identical to the original pars.

For example, we try "cse_zh.par" - the original par is 122mb with an MD5 of 71e4ac6b6a8d1350d36edca5c8d3f286. When we extract the par (not recurrsively, so the par files inside the main archive do not get unpacked) and attempt to repackage it using partool create cse_zh csezh_new.par, we get a new par that is 114mb with and MD5 of 24042b30901a6511f0c281abbf17fad4.

I have tried with smaller pars and managed to get a CRC perfect par to the original when repackaging the files.

My goal here is to just be able to extract and rebuild the pars and have the rebuilt pars be identical to the original pars, or at least close enough to make an XDelta / JojoDiff patch. My thinking is that since no files have been changed in the par archive, and the level of compression is applied the same, the rebuilt par should be CRC perfect - but it isn't. Is this something that can be fixed?

I have tried with with and without --alternative-mode, since I believe that is for Yakuza 3, albeit not seeming to work for Y3 remastered.

I'll try to look into that file, but the goal of the app is not to make CRC perfect par files but "correct and compatible" par files.

For example: The par container stores files and folders attributes and creation dates and they may be different to the original ones.

And about the different file size, (probably) the original par contains some uncompressed file and my app compresses it.

As I supposed, there are many uncompressed files in the original par. This is the list:

/cse_zh.par/./pj3_action_btn.par
/cse_zh.par/./pj3_agit.par
/cse_zh.par/./pj3_bg_menu.par
/cse_zh.par/./pj3_btl.par
/cse_zh.par/./pj3_btl_enemy.par
/cse_zh.par/./pj3_btlcaption.par
/cse_zh.par/./pj3_btlcaption_hires.par
/cse_zh.par/./pj3_chase.par
/cse_zh.par/./pj3_chase_hires.par
/cse_zh.par/./pj3_cho_oiuchi.par
/cse_zh.par/./pj3_cho_oiuchi_hires.par
/cse_zh.par/./pj3_coinlocker.par
/cse_zh.par/./pj3_color_anm.par
/cse_zh.par/./pj3_dlc_survivalbtl_end.par
/cse_zh.par/./pj3_enzai.par
/cse_zh.par/./pj3_enzai_hires.par
/cse_zh.par/./pj3_enzai_setsumei.par
/cse_zh.par/./pj3_enzai_shimon.par
/cse_zh.par/./pj3_enzai_shimon_hires.par
/cse_zh.par/./pj3_gameover_hires.par
/cse_zh.par/./pj3_gauge_haruka.par
/cse_zh.par/./pj3_gauge_haruka_hires.par
/cse_zh.par/./pj3_heat_eff.par
/cse_zh.par/./pj3_if7.par
/cse_zh.par/./pj3_kiwami.par
/cse_zh.par/./pj3_kiwami_hires.par
/cse_zh.par/./pj3_kyaba.par
/cse_zh.par/./pj3_kyaba_hires.par
/cse_zh.par/./pj3_kyaba_receipt.par
/cse_zh.par/./pj3_kyaba_receipt_hires.par
/cse_zh.par/./pj3_kyabaikusei_edit.par
/cse_zh.par/./pj3_kyabaikusei_edit_hires.par
/cse_zh.par/./pj3_kyabaikusei_time.par
/cse_zh.par/./pj3_kyabaikusei_time_hires.par
/cse_zh.par/./pj3_kyukyokutougi.par
/cse_zh.par/./pj3_kyukyokutougi_clear.par
/cse_zh.par/./pj3_kyukyokutougi_clear_hires.par
/cse_zh.par/./pj3_kyukyokutougi_game.par
/cse_zh.par/./pj3_kyukyokutougi_game_hires.par
/cse_zh.par/./pj3_level_up.par
/cse_zh.par/./pj3_life.par
/cse_zh.par/./pj3_life_hires.par
/cse_zh.par/./pj3_loading.par
/cse_zh.par/./pj3_loading_hires.par
/cse_zh.par/./pj3_menu_deco.par
/cse_zh.par/./pj3_menu_deco_hires.par
/cse_zh.par/./pj3_mg_anan_back.par
/cse_zh.par/./pj3_mg_anan_back_hires.par
/cse_zh.par/./pj3_mg_anan_title.par
/cse_zh.par/./pj3_mg_anan_title_hires.par
/cse_zh.par/./pj3_mg_ananwaku.par
/cse_zh.par/./pj3_mg_ananwaku_hires.par
/cse_zh.par/./pj3_mg_batting.par
/cse_zh.par/./pj3_mg_batting_hires.par
/cse_zh.par/./pj3_mg_batting_target.par
/cse_zh.par/./pj3_mg_batting_target_hires.par
/cse_zh.par/./pj3_mg_batting_target_hr01.par
/cse_zh.par/./pj3_mg_batting_target_hr01_hires.par
/cse_zh.par/./pj3_mg_batting_target_hr02.par
/cse_zh.par/./pj3_mg_batting_target_hr02_hires.par
/cse_zh.par/./pj3_mg_billiards01.par
/cse_zh.par/./pj3_mg_billiards02.par
/cse_zh.par/./pj3_mg_billiards02_hires.par
/cse_zh.par/./pj3_mg_blackjack.par
/cse_zh.par/./pj3_mg_blackjack02.par
/cse_zh.par/./pj3_mg_blackjack02_hires.par
/cse_zh.par/./pj3_mg_blackjack_hires.par
/cse_zh.par/./pj3_mg_bowling.par
/cse_zh.par/./pj3_mg_bowling_hires.par
/cse_zh.par/./pj3_mg_casino_winlose.par
/cse_zh.par/./pj3_mg_casino_winlose_hires.par
/cse_zh.par/./pj3_mg_chin02.par
/cse_zh.par/./pj3_mg_chin02_hires.par
/cse_zh.par/./pj3_mg_chinchiro.par
/cse_zh.par/./pj3_mg_chinchiro_hires.par
/cse_zh.par/./pj3_mg_chouhan.par
/cse_zh.par/./pj3_mg_chouhan_hires.par
/cse_zh.par/./pj3_mg_cwindow.par
/cse_zh.par/./pj3_mg_cwindow_hires.par
/cse_zh.par/./pj3_mg_darts_01.par
/cse_zh.par/./pj3_mg_darts_card.par
/cse_zh.par/./pj3_mg_darts_card_hires.par
/cse_zh.par/./pj3_mg_darts_countup.par
/cse_zh.par/./pj3_mg_darts_countup_hires.par
/cse_zh.par/./pj3_mg_darts_cricket.par
/cse_zh.par/./pj3_mg_darts_cricket_hires.par
/cse_zh.par/./pj3_mg_darts_gohoubi.par
/cse_zh.par/./pj3_mg_darts_sel.par
/cse_zh.par/./pj3_mg_darts_sel_hires.par
/cse_zh.par/./pj3_mg_fishing.par
/cse_zh.par/./pj3_mg_golf01.par
/cse_zh.par/./pj3_mg_golf01_hires.par
/cse_zh.par/./pj3_mg_golf02.par
/cse_zh.par/./pj3_mg_hanafuda01.par
/cse_zh.par/./pj3_mg_hanafuda01_hires.par
/cse_zh.par/./pj3_mg_hanafuda02.par
/cse_zh.par/./pj3_mg_hanafuda02_hires.par
/cse_zh.par/./pj3_mg_kabu01.par
/cse_zh.par/./pj3_mg_kabu01_hires.par
/cse_zh.par/./pj3_mg_kabu02.par
/cse_zh.par/./pj3_mg_kabu02_hires.par
/cse_zh.par/./pj3_mg_karaoke.par
/cse_zh.par/./pj3_mg_karaoke_hires.par
/cse_zh.par/./pj3_mg_karaoke_saiten.par
/cse_zh.par/./pj3_mg_karaoke_saiten_hires.par
/cse_zh.par/./pj3_mg_karaoke_window.par
/cse_zh.par/./pj3_mg_karaoke_window_hires.par
/cse_zh.par/./pj3_mg_mahjong01.par
/cse_zh.par/./pj3_mg_mahjong02.par
/cse_zh.par/./pj3_mg_mahjong02_hires.par
/cse_zh.par/./pj3_mg_massage.par
/cse_zh.par/./pj3_mg_massage_hires.par
/cse_zh.par/./pj3_mg_poker.par
/cse_zh.par/./pj3_mg_roulette.par
/cse_zh.par/./pj3_mg_roulette_hires.par
/cse_zh.par/./pj3_mg_shougi.par
/cse_zh.par/./pj3_mg_shougi02.par
/cse_zh.par/./pj3_mg_shougi02_hires.par
/cse_zh.par/./pj3_mg_shougi_hires.par
/cse_zh.par/./pj3_mg_tougi_sijiwaku.par
/cse_zh.par/./pj3_mg_tougi_sijiwaku_hires.par
/cse_zh.par/./pj3_mg_tougijyou.par
/cse_zh.par/./pj3_mg_tougijyou_s.par
/cse_zh.par/./pj3_mg_tougijyou_t.par
/cse_zh.par/./pj3_mg_ufo.par
/cse_zh.par/./pj3_onedari.par
/cse_zh.par/./pj3_onigokko.par
/cse_zh.par/./pj3_pause_keitai.par
/cse_zh.par/./pj3_pause_keitai_hires.par
/cse_zh.par/./pj3_pause_zentaimap.par
/cse_zh.par/./pj3_sel_pict.par
/cse_zh.par/./pj3_sel_pict_hires.par
/cse_zh.par/./pj3_shop_kyaba.par
/cse_zh.par/./pj3_syotitle.par
/cse_zh.par/./pj3_syotitle_hires.par
/cse_zh.par/./pj3_tenkei.par
/cse_zh.par/./pj3_tenkei_blog.par
/cse_zh.par/./pj3_timer.par
/cse_zh.par/./pj3_title.par
/cse_zh.par/./pj3_title_hires.par
/cse_zh.par/./pj3_tougijyou_csetex.par
/cse_zh.par/./pj3_tougijyou_csetex_hires.par
/cse_zh.par/./pj3_tougijyou_start.par
/cse_zh.par/./pj3_tougijyou_start_chara.par
/cse_zh.par/./pj3_tougijyou_start_chara_hires.par
/cse_zh.par/./pj3_tutorial.par
/cse_zh.par/./pj3_tutorial_btl_ex.par
/cse_zh.par/./pj3_tutorial_btl_ex_hires.par
/cse_zh.par/./pj3_win.par
/cse_zh.par/./pj3_win_hires.par
/cse_zh.par/./q2_nameplateb.par
/cse_zh.par/./q2_operationguid.par
/cse_zh.par/./q2_quiz_2ndchance.par
/cse_zh.par/./q2_quiz_4taku.par
/cse_zh.par/./q2_quiz_chikin.par
/cse_zh.par/./q2_quiz_common.par
/cse_zh.par/./q2_quiz_fight.par
/cse_zh.par/./q2_quiz_hayaoshi.par
/cse_zh.par/./q2_quiz_hayaoshicommon.par
/cse_zh.par/./q2_quiz_rensouhayaoshi.par
/cse_zh.par/./q2_quiz_result.par
/cse_zh.par/./q2_quiz_tatou.par
/cse_zh.par/./q2_quiz_textindication.par
/cse_zh.par/./q2_quiz_timer.par
/cse_zh.par/./q2_quiz_typing_d.par
/cse_zh.par/./q2_quiz_zishin.par
/cse_zh.par/./q2_result.par
/cse_zh.par/./q2_storefighting_roundend.par
/cse_zh.par/./q2_tennai_total_result.par
/cse_zh.par/./q2_tennaivs.par
/cse_zh.par/./q2_tennaivs_round.par

If you want to create a 1:1 clone of the original file, you need to do some additional steps:

  1. Extract the original par file: ParTool.exe extract cse_zh.par .\cse_zh.par.unpack\
  2. Create a new par file with default compression: ParTool.exe create .\cse_zh.par.unpack\ cse_zh.mod.par
  3. Remove all the files and folders in cse_zh.par.unpack except the ones of the previous list
  4. Replace the compressed files with the uncompressed ones: ParTool.exe add .\cse_zh.mod.par .\cse_zh.par.unpack\ .\cse_zh.mod2.par -c 0

Following these steps, the resulting cse_zh.mod2.par is an exact copy of the original cse_zh.par

Hi, thanks for the explanation. I never thought to consider that some of the files wouldn't be compressed again.

Thanksfor the tool!