Guest User

Untitled

a guest
Oct 22nd, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Option Explicit
  2.  
  3. 'Bild als Ressource einbinden
  4. Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
  5. (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
  6. Private Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" _
  7. (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long
  8.  
  9. 'Deklarationsbereich
  10.  
  11. Dim Counter
  12. Dim TextCounter
  13. Dim PointerCounter
  14. Dim strInputFile
  15. Dim strOutputFile
  16.  
  17. Dim intPointer As Integer
  18. Dim intCounter As Integer
  19.  
  20. Dim bytInput As Byte
  21. Dim bytInput2 As Byte
  22. Dim strOutput As String
  23.  
  24. Dim arrTable(255) As String
  25. Dim arrNames(14) As String
  26.  
  27. Dim lngPointerStart As Long
  28. Dim lngTextStart As Long
  29.  
  30. Private Sub cmdDUMP_Click()
  31.  
  32. Counter = 0                                                                 'Variable "Counter" auf 0 setzen
  33.  
  34. lngPointerStart = txtPointerStart.Text                                      'Variable "lngPointerStart" auf Pointeroffset setzen
  35. lngTextStart = txtTextStart.Text                                            'Variable "lngTextStart" auf Textoffset setzen
  36. intCounter = txtTextLänge.Text
  37.  
  38.     Open strInputFile For Binary As #1                                      'Öffne Datei hinter Variable "strInputFile" binär und deklariere als #1
  39.    strOutputFile = "DUMP.txt"                                              'Variable "strOutputFile" = "strInputFile" und _DUMP.txt
  40.    Open strOutputFile For Output As #2                                     'Erzeuge Datei "strOutputFile" zwecks Speichern und deklariere als #2
  41.    
  42.     Do                                                                      'Beginn der Do-Schleife
  43.        Get #1, lngPointerStart + 1 + Counter, intPointer                   'Nimm #1, gehe zu Pointeroffset +1 +Counterwert und speichere gelesenen Wert in "intPointer"
  44.            Call Decompress_Text                                            'Rufe Prozedur "Decompress_Text" auf
  45.            
  46.         Counter = Counter + 2                                               'Erhöhe Counter um 2
  47.  
  48.     Loop Until Counter = intCounter                                         'Wiederhole Schleife bis Counter 1024 erreicht hat (512 mal)
  49.    
  50.     Close #1                                                                'Schließe #1
  51.    Close #2                                                                'Schließe #2
  52.    
  53.     cmdDUMP.Caption = "RDY"                                                 'Button = RDY
  54.        
  55. End Sub
  56.  
  57. Private Sub Decompress_Text()                                                           'Neue Prozedur "Decompress_Text"
  58.  
  59. strOutput = ""                                                                          'strOutput zurücksetzen
  60. TextCounter = 0                                                                         'TextCounter mit 0 initialisieren
  61.  
  62.     Do                                                                                  'Beginn der Do-Schleife
  63.        Get #1, lngTextStart + intPointer + TextCounter + 1, bytInput
  64.        
  65.                 Select Case (bytInput)
  66.                
  67.                 Case 0 To 2, 66 To 117, 128 To 255:
  68.                     strOutput = strOutput & arrTable(bytInput)
  69.                    
  70.                 Case 4:
  71.                     Get #1, lngTextStart + intPointer + TextCounter + 2, bytInput2
  72.                     strOutput = strOutput & arrNames(bytInput2)
  73.                     TextCounter = TextCounter + 1
  74.                    
  75.                 Case 3, 5, 7 To 8:
  76.                     strOutput = strOutput & "<$" & Format(bytInput, "000") & ">"
  77.                     Get #1, lngTextStart + intPointer + TextCounter + 2, bytInput2
  78.                     strOutput = strOutput & "<$" & Format(bytInput2, "000") & ">"
  79.                     TextCounter = TextCounter + 1
  80.                    
  81.                 Case Else:
  82.                     strOutput = strOutput & "<$" & Format(bytInput, "000") & ">"
  83.                
  84.                 End Select
  85.                        
  86.         TextCounter = TextCounter + 1
  87.                
  88.     Loop Until bytInput = 0
  89.    
  90.     PointerCounter = PointerCounter + 1
  91.        
  92.     Print #2, "[POINTER_#" & Format(Counter / 2, "0000") & "]"
  93.     Print #2, strOutput
  94.     Print #2, "/END"
  95.     Print #2, ""
  96.  
  97. End Sub
  98.  
  99. Private Sub File1_Click()
  100.  
  101. strInputFile = File1.FileName
  102.  
  103. End Sub
  104.  
  105. Private Sub Form_Load()
  106.  
  107. picCover.Picture = LoadResImage(101, "JPG")
  108.  
  109. 'Control
  110. arrTable(0) = ""
  111. arrTable(1) = "(nl)" & Chr(&HD) & Chr(&HA)
  112. arrTable(2) = "(nb)" & Chr(&HD) & Chr(&HA)
  113.  
  114. 'Alphabet
  115. arrTable(66) = "A"
  116. arrTable(67) = "B"
  117. arrTable(68) = "C"
  118. arrTable(69) = "D"
  119. arrTable(70) = "E"
  120. arrTable(71) = "F"
  121. arrTable(72) = "G"
  122. arrTable(73) = "H"
  123. arrTable(74) = "I"
  124. arrTable(75) = "J"
  125. arrTable(76) = "K"
  126. arrTable(77) = "L"
  127. arrTable(78) = "M"
  128. arrTable(79) = "N"
  129. arrTable(80) = "O"
  130. arrTable(81) = "P"
  131. arrTable(82) = "Q"
  132. arrTable(83) = "R"
  133. arrTable(84) = "S"
  134. arrTable(85) = "T"
  135. arrTable(86) = "U"
  136. arrTable(87) = "V"
  137. arrTable(88) = "W"
  138. arrTable(89) = "X"
  139. arrTable(90) = "Y"
  140. arrTable(91) = "Z"
  141. arrTable(92) = "a"
  142. arrTable(93) = "b"
  143. arrTable(94) = "c"
  144. arrTable(95) = "d"
  145. arrTable(96) = "e"
  146. arrTable(97) = "f"
  147. arrTable(98) = "g"
  148. arrTable(99) = "h"
  149. arrTable(100) = "i"
  150. arrTable(101) = "j"
  151. arrTable(102) = "k"
  152. arrTable(103) = "l"
  153. arrTable(104) = "m"
  154. arrTable(105) = "n"
  155. arrTable(106) = "o"
  156. arrTable(107) = "p"
  157. arrTable(108) = "q"
  158. arrTable(109) = "r"
  159. arrTable(110) = "s"
  160. arrTable(111) = "t"
  161. arrTable(112) = "u"
  162. arrTable(113) = "v"
  163. arrTable(114) = "w"
  164. arrTable(115) = "x"
  165. arrTable(116) = "y"
  166. arrTable(117) = "z"
  167.  
  168. 'Numbers
  169. arrTable(128) = "0"
  170. arrTable(129) = "1"
  171. arrTable(130) = "2"
  172. arrTable(131) = "3"
  173. arrTable(132) = "4"
  174. arrTable(133) = "5"
  175. arrTable(134) = "6"
  176. arrTable(135) = "7"
  177. arrTable(136) = "8"
  178. arrTable(137) = "9"
  179.  
  180. 'Symbols
  181. arrTable(192) = "'"
  182. arrTable(193) = "."
  183. arrTable(194) = "-"
  184. arrTable(195) = "..."
  185. arrTable(196) = "!"
  186. arrTable(197) = "?"
  187. arrTable(198) = "%"
  188. arrTable(199) = "/"
  189. arrTable(200) = ": "
  190. arrTable(201) = ","
  191.  
  192. 'Compressed
  193. arrTable(138) = "e "
  194. arrTable(139) = " t"
  195. arrTable(140) = "th"
  196. arrTable(141) = "he"
  197. arrTable(142) = "t "
  198. arrTable(143) = "ou"
  199. arrTable(144) = " a"
  200. arrTable(145) = "s "
  201. arrTable(146) = "er"
  202. arrTable(147) = "in"
  203. arrTable(148) = "re"
  204. arrTable(149) = "d "
  205. arrTable(150) = "an"
  206. arrTable(151) = " o"
  207. arrTable(152) = "on"
  208. arrTable(153) = "st"
  209. arrTable(154) = " w"
  210. arrTable(155) = "o "
  211. arrTable(156) = " m"
  212. arrTable(157) = "ha"
  213. arrTable(158) = "to"
  214. arrTable(159) = "is"
  215. arrTable(160) = "yo"
  216. arrTable(161) = " y"
  217. arrTable(162) = " i"
  218. arrTable(163) = "al"
  219. arrTable(164) = "ar"
  220. arrTable(165) = " h"
  221. arrTable(166) = "r "
  222. arrTable(167) = " s"
  223. arrTable(168) = "at"
  224. arrTable(169) = "n "
  225. arrTable(170) = " c"
  226. arrTable(171) = "ng"
  227. arrTable(172) = "ve"
  228. arrTable(173) = "ll"
  229. arrTable(174) = "y "
  230. arrTable(175) = "nd"
  231. arrTable(176) = "en"
  232. arrTable(177) = "ed"
  233. arrTable(178) = "hi"
  234. arrTable(179) = "or"
  235. arrTable(180) = ", "
  236. arrTable(181) = "I "
  237. arrTable(182) = "u "
  238. arrTable(183) = "me"
  239. arrTable(184) = "ta"
  240. arrTable(185) = " b"
  241. arrTable(186) = " I"
  242. arrTable(187) = "te"
  243. arrTable(188) = "of"
  244. arrTable(189) = "ea"
  245. arrTable(190) = "ur"
  246. arrTable(191) = "l "
  247. arrTable(202) = " f"
  248. arrTable(203) = " d"
  249. arrTable(204) = "ow"
  250. arrTable(205) = "se"
  251. arrTable(206) = "  "
  252. arrTable(207) = "it"
  253. arrTable(208) = "et"
  254. arrTable(209) = "le"
  255. arrTable(210) = "f "
  256. arrTable(211) = " g"
  257. arrTable(212) = "es"
  258. arrTable(213) = "ro"
  259. arrTable(214) = "ne"
  260. arrTable(215) = "ry"
  261. arrTable(216) = " l"
  262. arrTable(217) = "us"
  263. arrTable(218) = "no"
  264. arrTable(219) = "ut"
  265. arrTable(220) = "ca"
  266. arrTable(221) = "as"
  267. arrTable(222) = "Th"
  268. arrTable(223) = "ai"
  269. arrTable(224) = "ot"
  270. arrTable(225) = "be"
  271. arrTable(226) = "el"
  272. arrTable(227) = "om"
  273. arrTable(228) = "'s"
  274. arrTable(229) = "il"
  275. arrTable(230) = "de"
  276. arrTable(231) = "gh"
  277. arrTable(232) = "ay"
  278. arrTable(233) = "nt"
  279. arrTable(234) = "Wh"
  280. arrTable(235) = "Yo"
  281. arrTable(236) = "wa"
  282. arrTable(237) = "oo"
  283. arrTable(238) = "We"
  284. arrTable(239) = "g "
  285. arrTable(240) = "ge"
  286. arrTable(241) = " n"
  287. arrTable(242) = "ee"
  288. arrTable(243) = "wi"
  289. arrTable(244) = " M"
  290. arrTable(245) = "ke"
  291. arrTable(246) = "we"
  292. arrTable(247) = " p"
  293. arrTable(248) = "ig"
  294. arrTable(249) = "ys"
  295. arrTable(250) = " B"
  296. arrTable(251) = "am"
  297. arrTable(252) = "ld"
  298. arrTable(253) = " W"
  299. arrTable(254) = "la"
  300. arrTable(255) = " "
  301.  
  302. 'Names
  303. arrNames(0) = "[Cecil]"
  304. arrNames(1) = "[Kain]"
  305. arrNames(2) = "[Rydia]"
  306. arrNames(3) = "[Tellah]"
  307. arrNames(4) = "[Edward]"
  308. arrNames(5) = "[Rosa]"
  309. arrNames(6) = "[Yang]"
  310. arrNames(7) = "[Palom]"
  311. arrNames(8) = "[Porom]"
  312. arrNames(9) = "[Cid]"
  313. arrNames(10) = "[Edge]"
  314. arrNames(11) = "[FuSoYa]"
  315. arrNames(12) = "[Golbez]"
  316. arrNames(13) = "[Anna]"
  317.  
  318.  
  319. End Sub
  320.  
  321. Function LoadResImage(ByVal ResID As Variant, ByVal ResTYPE As Variant) As IPictureDisp
  322.    Dim Data() As Byte, tmpPath As String, New_tmpPath As String, Prefix As String
  323.    Dim FileNum As Integer, Counter As Integer, Char As String
  324.  
  325.    tmpPath = Space(260)
  326.    Prefix = "res"
  327.  
  328.    If GetTempPath(Len(tmpPath) - 1, tmpPath) <> 0 Then
  329.       If GetTempFileName(tmpPath, Prefix, 0, tmpPath) <> 0 Then
  330.          'Unnötige Nullzeichen entfernen
  331.         For Counter = 1 To Len(tmpPath)
  332.             Char = Mid(tmpPath, Counter, 1)
  333.             If Char <> Chr(0) And Char <> Chr(32) Then New_tmpPath = New_tmpPath & Char
  334.          Next Counter
  335.          tmpPath = New_tmpPath
  336.          
  337.          'Daten aus Ressourcendatei laden
  338.         Data = LoadResData(ResID, ResTYPE)
  339.  
  340.          'Daten in Datei schreiben
  341.         On Error GoTo Cancel:
  342.          Open tmpPath For Binary Access Write As #1
  343.             On Error GoTo 0
  344.             Put #1, , Data
  345.          Close #1
  346.  
  347.          Set LoadResImage = LoadPicture(tmpPath) 'Datei zurückgeben
  348.         Kill tmpPath 'Datei wieder löschen
  349.      End If
  350.    End If
  351.  
  352. Cancel:
  353.    'Funktion beenden
  354. End Function
Add Comment
Please, Sign In to add comment