Welcome, Guest. Please login or register.


Author Topic: Fájltömörítés Enterprise-on (Read 93547 times)

Online Zozosoft

  • EP addict
  • *
  • Posts: 13519
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.5.6 Firefox 3.5.6
    • View Profile
    • http://enterprise.iko.hu/
Re: Fájltömörítés Enterprise-on
« Reply #180 on: 2009.December.17. 19:40:56 »
István! A Subacuaticban ezt a tömörítõt használják: aPack
Itt van a hozzátartozó Z80 kicsomagoló is.
Ez mit tud? Érdemes lenne inkább lecserélni Epcompressre?
Ez a kupac screen van tömörítve vele.

Online Zozosoft

  • EP addict
  • *
  • Posts: 13519
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.5.6 Firefox 3.5.6
    • View Profile
    • http://enterprise.iko.hu/
Re: Fájltömörítés Enterprise-on
« Reply #181 on: 2009.December.17. 19:52:09 »
UI: a reset ebben a verzióban nem mûködik :oops:
És a hiscore második lapja is kicsit szétesik  :oops:
4589-0

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 4.3.1 Konqueror 4.3.1
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #182 on: 2009.December.17. 20:15:22 »
És a hiscore második lapja is kicsit szétesik

Akkor úgy látszik, valóban célszerű lesz lecserélni egy javított változatra. :oops: Azt is megnézem majd, miért volt tömöríthetetlen az adat nagy része.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 4.3.1 Konqueror 4.3.1
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #183 on: 2009.December.17. 20:36:37 »
István! A Subacuaticban ezt a tömörítõt használják: aPack
Itt van a hozzátartozó Z80 kicsomagoló is.
Ez mit tud? Érdemes lenne inkább lecserélni Epcompressre?
Ez a kupac screen van tömörítve vele.

Ránézésre nem tűnik rossznak, de még nem próbáltam ki. Mindenesetre nem valószínű, hogy nagyon sokat lehetne javítani rajta.

Offline Lacika

  • EP addict
  • *
  • Posts: 2929
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.5.6 Firefox 3.5.6
    • View Profile
    • http://www.ep128.hu
Re: Fájltömörítés Enterprise-on
« Reply #184 on: 2009.December.17. 20:56:48 »
csak a betöltőképet - amelyet egyébként dither nélküli változatra cseréltem - és az utolsó adatblokkot lehetett tömöríteni.

Wow!!!
Ezt a képet rakjuk bele a tömörítetlen változatba is!
Légyszi, légyszi, légysziii...  :lol:

Online geco

  • EP addict
  • *
  • Posts: 5430
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.5.6 Firefox 3.5.6
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #185 on: 2009.December.18. 08:52:03 »
Sorcery+:
Nem sokkal lett kisebb, gyakorlatilag csak a betöltőképet - amelyet egyébként dither nélküli változatra cseréltem - és az utolsó adatblokkot lehetett tömöríteni. Lehet, hogy a játék már eddig is valamilyen tömörített, vagy "titkosított" formátumban volt, amelynek a dekódolásával talán kisebb méretet is el lehetett volna érni.

UI: a reset ebben a verzióban nem működik :oops:

A játék eredetileg titkosítva volt, egy egyszerű kivonós xorolós megoldással, a tömörítést már én hajtottam végre rajta, hogy az főkód kivételével mindent be lehessen tölteni a +64K-ba, belefért 48k-ba :D, és a DTF -LZ-thasználtam, nagyon jó :) A Kódot és a betöltőképet nem tömörítettem, azon a pár kb-n nem múlik már semmi, becsomagoltam ZIP-pel és csak 8k-val lett kisebb :D
A fájltömörítés azért nem műxik, mert a hiba rutin 0090h-ra került, és a megszakításkiegészítés meg 0028h-ra

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux 64 bit (Suse) Linux 64 bit (Suse)
  • Browser:
  • Firefox 3.5.4 Firefox 3.5.4
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #186 on: 2009.December.18. 13:00:57 »
A játék eredetileg titkosítva volt, egy egyszerű kivonós xorolós megoldással, a tömörítést már én hajtottam végre rajta, hogy az főkód kivételével mindent be lehessen tölteni a +64K-ba

A titkosítást megszüntetted ?

Quote
A fájltömörítés azért nem műxik, mert a hiba rutin 0090h-ra került, és a megszakításkiegészítés meg 0028h-ra

Ezt észre is vettem, és a RESET rutint áthelyeztem 00DCh-ra, ami közvetlenül a tömörített program betöltő után van. A probléma csak az volt, hogy ott viszont a játék írja felül :) A megoldás az, ha áthelyezem 18H-1FH-ra, oda ugyanis a betöltő és a játék sem ír. A reset kód nagy részét egyébként a rendszerszegmens elvileg nem használt részére másoltam, ezért maradt a 0. lapon csak 8 byte. :)
A 28H-s megszakítás kód nem probléma, mert amikor az oda kerül, már az egész program betöltődött, tehát az RST 28H felülírása nem okoz hibát.

A Zozosoft által jelzett eredménylista hibát viszont nem értem, mert a RESET rutinon kívül elvileg nincs más ütközés a memória használatban (a felülírt byte-ok térképét egy Lua scripttel készítettem).

Online geco

  • EP addict
  • *
  • Posts: 5430
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.5.6 Firefox 3.5.6
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #187 on: 2009.December.18. 14:17:55 »
meg, az volt az első dolgom a file-ok kinyerése után.
Jaja, én is 00a0h -n kezdtem, aztán kénytelen voltam lejjebb menni, és a 0090h lett a vége, a játék aktívan használja a vermet :D

Online Zozosoft

  • EP addict
  • *
  • Posts: 13519
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.5.6 Firefox 3.5.6
    • View Profile
    • http://enterprise.iko.hu/
Re: Fájltömörítés Enterprise-on
« Reply #188 on: 2009.December.18. 17:36:36 »
Érdekes, hogy a RAM3.BIN még bír tovább tömörödni, mivel az a apackkal tömörített screenek összefûzve.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 4.3.1 Konqueror 4.3.1
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #189 on: 2009.December.18. 17:44:02 »
Érdekes, hogy a RAM3.BIN még bír tovább tömörödni, mivel az a apackkal tömörített screenek összefûzve.

Talán a képek közötti hasonlóság miatt, például ha ugyanaz a kép angol és spanyol szöveggel is előfordul.

Online Zozosoft

  • EP addict
  • *
  • Posts: 13519
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.5.6 Firefox 3.5.6
    • View Profile
    • http://enterprise.iko.hu/
Re: Fájltömörítés Enterprise-on
« Reply #190 on: 2009.December.18. 18:47:26 »
Hamár szóba került a szövegek tömörítése: el tudnád magyarázni, hogy pontosan mit is csináltak az Intelligent Softwares fiúk?
Bónusz kérés: esetleg tudnál gyártani olyan utilityt amivel ilyen adat kupacokat lehet ki-be tömöríteni?

Pl az EXDOS 1.0-ban C082h-n lévû rutin végzi a kicsomagolást, HL mutat a tömörített adatokra (C1ACh), A-ban a kicsomagolandó szöveg száma. EXDOS 1.2/2.0-ban: C0B5h/D063h, 0.3-ban D05Dh/D07Ah
Gondolom valami hasonló van elrejte az EXOS meg a BASIC ROM-ban is, mert simán nem lehet megtalálni a hibaüzeneteket.

Meg is találtam EXOS 2.1-ben: 1-es szegmens E3D5h, az adat FE72h
« Last Edit: 2009.December.18. 20:36:21 by Zozosoft »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 4.3.1 Konqueror 4.3.1
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #191 on: 2009.December.19. 16:07:58 »
Gondolom valami hasonló van elrejte az EXOS meg a BASIC ROM-ban is, mert simán nem lehet megtalálni a hibaüzeneteket.

Meg is találtam EXOS 2.1-ben: 1-es szegmens E3D5h, az adat FE72h

Az EXOS-t megnéztem: ez egyszerű statisztikai tömörítést használ, és egy 31 kifejezésből álló szótárat.
A statisztikai tömörítés így kódolja az egyes karaktereket:
 - 0000b (4 bit): üzenet vége
 - 0001b - 1101b (4 bit): az E3F2h-E3FEh területen tárolt 13 karakter (ha szóköz, akkor kisbetű módba kapcsol)
 - 11100000b - 11101111b (8 bit): az E3FFh-E40Eh területen tárolt 16 karakter
 - 111100000b (9 bit): nagybetű mód bekapcsolása (az üzenet elején a kisbetű mód az alapértelmezés)
 - 111100001b - 111111111b (9 bit): az E2AFh területen tárolt 31 kifejezés (ezek ugyanilyen kódolással szintén tömörítve vannak, tehát az algoritmus rekurzív)

Itt egy Lua script az összes EXOS üzenet és a szótárban található 31 kifejezés kiíratására:

Code: Lua
  1. -- 01h:E3F2h: 0001b - 1101b
  2. charTabl1 = "EONRTAISCLDU "
  3. -- 01h:E3FFh: 11100000b - 11101111b
  4. charTabl2 = "PKFBVYWMGHQXZ$-/"
  5.  
  6. readPos = 0x000000
  7. shiftReg = 0x80
  8.  
  9. function readBits(n)
  10.   local r = 0
  11.   while n > 0 do
  12.     n = n - 1
  13.     r = r + r
  14.     if shiftReg == 0x80 then
  15.       shiftReg = readMemoryRaw(readPos)
  16.       readPos = AND(readPos + 1, 0x3FFFFF)
  17.       r = r + SHR(AND(shiftReg, 0x80), 7)
  18.       shiftReg = AND(shiftReg, 0x7F) * 2 + 1
  19.     else
  20.       r = r + SHR(AND(shiftReg, 0x80), 7)
  21.       shiftReg = AND(shiftReg, 0x7F) * 2
  22.     end
  23.   end
  24.   return r
  25. end
  26.  
  27. function decodeMessage(addr, n)
  28.   local savedReadPos = readPos
  29.   local savedShiftReg = shiftReg
  30.   readPos = addr
  31.   shiftReg = 0x80
  32.   while n > 0 do
  33.     n = n - 1
  34.     while true do
  35.       local tmp = readBits(4)
  36.       if tmp == 0 then
  37.         break
  38.       elseif tmp == 14 then
  39.         readBits(4)
  40.       elseif tmp == 15 then
  41.         readBits(5)
  42.       end
  43.     end
  44.   end
  45.   local orValue = 0x20
  46.   local s = ""
  47.   while true do
  48.     local tmp = readBits(4)
  49.     if tmp == 0 then
  50.       break
  51.     elseif tmp < 14 then
  52.       if string.byte(charTabl1, tmp) == 0x20 then
  53.         orValue = 0x20
  54.       end
  55.       s = s..string.char(OR(string.byte(charTabl1, tmp), orValue))
  56.     elseif tmp == 14 then
  57.       s = s..string.char(OR(string.byte(charTabl2, readBits(4) + 1), orValue))
  58.     else
  59.       tmp = readBits(5)
  60.       if tmp == 0 then
  61.         orValue = 0x00
  62.       else
  63.         s = s..decodeMessage(0x0062AF, tmp - 1)
  64.       end
  65.     end
  66.   end
  67.   readPos = savedReadPos
  68.   shiftReg = savedShiftReg
  69.   return s
  70. end
  71.  
  72. for i = 1, 31 do
  73.   mprint("Word ", i, ": ", decodeMessage(0x0062AF, i - 1))
  74. end
  75.  
  76. mprint("")
  77.  
  78. for i = 0, 47 do
  79.   mprint(i, ": *** ", decodeMessage(0x007E72, i))
  80. end
« Last Edit: 2009.December.19. 16:16:01 by IstvanV, Reason: Script javítva »

Online Zozosoft

  • EP addict
  • *
  • Posts: 13519
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.5.6 Firefox 3.5.6
    • View Profile
    • http://enterprise.iko.hu/
Re: Fájltömörítés Enterprise-on
« Reply #192 on: 2009.December.19. 16:27:07 »
Köszi, ez komplexebb mint gondoltam! Az, hogy a betûket, hogyan kell csoportosítani vajon õk találták ki, vagy ez már egy régóta ismert módszer volt akkoriban?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 4.3.1 Konqueror 4.3.1
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #193 on: 2009.December.19. 16:30:32 »
Köszi, ez komplexebb mint gondoltam! Az, hogy a betûket, hogyan kell csoportosítani vajon õk találták ki, vagy ez már egy régóta ismert módszer volt akkoriban?

A gyakran előforduló betűk (pl. A, E, T, szóköz) kerültek az első (4 bites) csoportba, a ritkábbak (pl. W, Q, X) pedig a 8 bitesbe. :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux (Suse) Linux (Suse)
  • Browser:
  • Konqueror 4.3.1 Konqueror 4.3.1
    • View Profile
Re: Fájltömörítés Enterprise-on
« Reply #194 on: 2009.December.19. 17:38:46 »
Subacuatic:
  4604-0

  * subacuat.prg (24.91 kB - downloaded 117 times.)