Advertisement
Nicknine

EA IDX/BIG Extractor

Dec 17th, 2018 (edited)
362
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. # Electronic Arts - IDX/BIG files, essentially a pack of HDR/DAT compiled into one file.
  2. # Script for QuickBMS: https://aluigi.altervista.org/quickbms.htm
  3.  
  4. open FDDE "IDX" 0
  5. open FDDE "BIG" 1
  6.  
  7. get DUMMY long
  8. endian guess DUMMY
  9. endian save CUR_ENDIAN
  10.  
  11. get SECTIONS long
  12. goto 0x50
  13. get DUMMY long
  14. get SECTIONS long
  15. get BNAME basename
  16.  
  17. for i = 0 < SECTIONS
  18. get HDR_IDX long
  19. get HDR_SIZE long
  20. get HDR_OFFSET long
  21. get BASE_OFF long
  22.  
  23. # Get HDR header.
  24. log MEMORY_FILE HDR_OFFSET HDR_SIZE
  25. get HASH short MEMORY_FILE
  26. get SUBID short MEMORY_FILE
  27. get USERDATA_SIZE byte MEMORY_FILE
  28. math USERDATA_SIZE & 0x0F
  29. get FILES byte MEMORY_FILE
  30. get DUMMY byte MEMORY_FILE
  31. get OFF_FLAG byte MEMORY_FILE
  32.  
  33. xmath OFF_MULT "OFF_FLAG * 0x0100 + 0x0100"
  34. goto 0x0C MEMORY_FILE
  35.  
  36. if SUBID != 0xFFFF
  37. string PATH p "%04x/%02d" HASH SUBID
  38. else
  39. string PATH p "%04x" HASH
  40. endif
  41.  
  42. set NAME PATH
  43. string NAME + ".hdr"
  44. log NAME HDR_OFFSET HDR_SIZE
  45. set TOTAL_SIZE long 0
  46. endian big
  47.  
  48. for j = 0 < FILES
  49. get OFFSET short MEMORY_FILE
  50. goto USERDATA_SIZE MEMORY_FILE SEEK_CUR
  51. math OFFSET * OFF_MULT
  52. math OFFSET + BASE_OFF
  53. goto OFFSET 1
  54.  
  55. # Find SCEl block (end marker)
  56. endian little
  57. do
  58. get BLOCKID long 1
  59. get BLOCKSIZE long 1
  60. math BLOCKSIZE - 8
  61. goto BLOCKSIZE 1 SEEK_CUR
  62. while BLOCKID != 0x6C454353 # SCEl
  63. endian big
  64.  
  65. padding OFF_MULT 1 BASE_OFF
  66. savepos SIZE 1
  67. math SIZE - OFFSET
  68. math TOTAL_SIZE + SIZE
  69. next j
  70.  
  71. endian set CUR_ENDIAN
  72.  
  73. set NAME PATH
  74. string NAME + ".dat"
  75. log NAME BASE_OFF TOTAL_SIZE 1
  76. next i
  77.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement