Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.
Zero Tolerance for Disrespect

[PLEASE DELETE]

Featured Replies

[PLEASE DELETE]

Edited by AlphaTwentyThree
[PLEASE DELETE]

Solved by Guest

  • Supporter

Well i was unable to get over filenames since the logic is sooo stupid so filenames are dumped as offsets.

####################################
# Bayonetta Origins (NSW) - *.pkzl #
####################################
get BaseFileName basename
comtype oodle

idstring "pkzl"
getdstring Dummy 0x4
get FileSize uint32
getdstring Dummy 0x4
get Files uint32
get EntrySize uint32
get FileNameTableSize uint32

for i = 0 < Files
	getdstring Dummy 0xC
	get Size uint32
	getdstring Dummy 0x4
	get Offset uint32
	getdstring Dummy 0x4
	get ZSize uint32
	string Name p= "%s/%u.dat" BaseFileName Offset
	if ZSize != Size
		clog Name Offset ZSize Size
	else
		log Name Offset Size
	endif
next i

 

So it IS oodle after all? Let me investigate what went wrong with my own script there!

Thanks!

  • Solution

SOLVED

I just checked my script, turns out it was the exact same as yours, I already had the name retrieval implemented. Just tried it again without changing a thing and it suddenly works now?! Absolutely no idea why!

The great mysteries of coding I guess... Here's my original script, now suddenly working as it should:

# Bayonetta Origins: Cereza and the Lost Demon (NSW)
# *. pkz extractor
#
# (c) 2024-03-03 by AlphaTwentyThree of ResHax
# script for QuickBMS http://quickbms.aluigi.org

comtype oodle
idstring pkzl
get ZERO short
get VER short
get FSIZE longlong
get FILES long
get TOC long
goto TOC
xmath NAMEOFF "0x20 * FILES + TOC"
set SHIFT 0x10
for i = 1 <= FILES
	get NAMEPOS long
	math NAMEPOS += NAMEOFF
	get COMP long
	get SIZE longlong
	get OFFSET longlong
	get CSIZE longlong
	savepos MYOFF
	goto NAMEPOS
	get NAME string
	if SIZE != CSIZE
		clog NAME OFFSET CSIZE SIZE
	else
		log NAME OFFSET CSIZE
	endif
	goto MYOFF
next i

 

Edited by AlphaTwentyThree

And to round things off for that game, here's the script for the contained archive format:

# Bayonetta Origins: Cereza and the Lost Demon (NSW)
# Data extractor
# works with the following extensions: dat, dtt, eff, evn
#
# (c) 2024-03-03 by AlphaTwentyThree of ResHax
# script for QuickBMS http://quickbms.aluigi.org

get FOLDER basename

idstring "DAT\0"
get FILES long
get OFF_OFFSETS long
get OFF_TYPES long
get OFF_NAMES long
get OFF_SIZES long
get OFF_UNK long
goto OFF_NAMES
get NAMEL long
savepos OFF_NAMES

for i = 0 < FILES
	goto OFF_OFFSETS
	get OFFSET long
	savepos OFF_OFFSETS
	
	goto OFF_NAMES
	getDstring NAME NAMEL
	savepos OFF_NAMES
	
	goto OFF_SIZES
	get SIZE long
	savepos OFF_SIZES
	
	string NAME p= "%s/%s" FOLDER NAME
	log NAME OFFSET SIZE
next i

43,000+ files in the end, everything is pretty open for mining.

  • Guest changed the title to [PLEASE DELETE]

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.