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

[LeapFrog] .arc file

Featured Replies

  • Localization

While I'm at it, I'm just going to throw in another mystery file type from my LeapFrog rips. The file is from My Little Pony: Friendship is Magic developed by Other Ocean Interactive, if that helps.

data.zip

Solved by BloodRaynare

  • Localization

I haven't written bms scripts for a while so I already forgot how to do it lol, but I can describe the structure of the archive maybe someone will write the script, as the structure is pretty simple. 

It's compressed with MSF algo.

Structure is 

Size long 

Zsize long

Compressed chunk(this is the actual TOC)

TOC structure is also pretty simple

FileName (null-determined string)

Relative offset long

Size long (oddly enough there is only an uncompressed size, so to determine Zsize you need to read the offset of the next file).

That's all. Some files aren't compressed as I saw there a couple of plain PNG and XML files.

 

 

Edited by Thief1987

  • Supporter
  • Solution

Thanks for the tip @Thief1987, To @applecuckoo, here's your QuickBMS script:
 

## My Little Pony: Friendship is Magic (LeapFrog) - data.arc extraction script by BloodRaynare
## For use with QuickBMS

comtype msf

get TOC_SZ long
get TOC_ZSZ long
savepos TMP
log MEMORY_FILE 0 0
clog MEMORY_FILE TMP TOC_ZSZ TOC_SZ
xmath BASE_OFF "TMP + TOC_ZSZ"

for i = 0
	savepos TOC_POS MEMORY_FILE
	if TOC_POS >= TOC_SZ
		break
	endif
	get NAME string MEMORY_FILE
	get OFFSET long MEMORY_FILE
	get SIZE long MEMORY_FILE
	math OFFSET + BASE_OFF
	putarray 0 i NAME OFFSET SIZE
next i
math FILES = i

get ARC_SZ asize

for i = 0 < FILES
	getarray NAME OFFSET SIZE 0 i
	math i + 1
	if i == FILES
		xmath ZSIZE "ARC_SZ - OFFSET"
	else
		getarray NEXT_OFFSET 1 i
		xmath ZSIZE "NEXT_OFFSET - OFFSET"
	endif
	if ZSIZE == SIZE
		log NAME OFFSET SIZE
	else
		clog NAME OFFSET ZSIZE SIZE
	endif
next

 

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.