Вход

Просмотр полной версии : Распаковка LaserCompact картинок...



newart
17.10.2010, 23:11
Пытаюсь распаковать картинки запакованые Laser Compact'om из BGE без распаковщика. В лучшем случае получается покоробленая картинка.

Мето такой: запаковал картинки с паковщиком и без, вычел длинну, и сохранил распоквщик, потом стыкую к распокощику картинку без распаковщика. :v2_conf2:

Лас
17.10.2010, 23:14
Файлы можно поглядеть?

newart
17.10.2010, 23:55
Вот

Лас
18.10.2010, 01:11
В картинке, записанной с распаковщиком, отсутствует сигнатура LCMP5 (признак пакованной Laser Compact картинки) и другая информация (напр. комментарий). А в картинке, которая пишется без распаковщика, присутствуют в начале файла эти N байт служебной инфы (сигнатура и комментарий), таким образом:
1. Данные картинки, которая записана с распаковщиком на N байт меньше, чем данные картинки без распаковщика. Длину распаковщика не учитываем.
2. Распаковщик не ожидаает встретить сигнатуру и комментарий.
3. Чтобы нормально распаковывать этим приписываемым распаковщиком картинки без распаковщика (с сигнатурой), надо просто пропатчить в распаковщике указатель на данные, чтобы были пропущены сигнатура и комментарий и указатель был установлен сразу на упакованные данные картинки.
4. А лучше использовать готовый релоцируемый распаковщик (во вложении скомпилированный файл).
Используется так:
Загружаете распаковщик куда вам удобно.
Загружаете картинку или несколько картинок.

LD HL,packed_scr ;адрес загруженной пакованной картинки бе распаковщика.
CALL depacker ;распаковка картинки на экран.


исходный код депакера:



;---------------------------------------
; Depacker Laser Compact 5.2
; +0(5): "LCMP5"
; +5(2): Length screen without header
; +7(1): Additional info length:
;-------
; 11 byte - File name
; N byte - Comment.
;-------
;(C) Hrumer. 06.12.99. Hrumer@inbox.ru
;
; IN: HL - Address of compressed screen
;---------------------------------------


ADR EQU #4000;#8000;#C000

DECOMPR
LD DE,7;SKIP "LCMP5" & LENGTH
ADD HL,DE

LD A,(HL)
INC HL
LD E,A
ADD HL,DE

LD A,(HL)
LD E,A ;разрыв

AND 3
RLCA
RLCA
RLCA
OR ADR/256

EXX
LD D,A ;начало
LD E,0
EXX

LD A,(HL)
INC HL
XOR ADR/256+#18
AND #FC
LD HX,A ;конец ч.изо.

DLC1 LD A,(HL)
INC HL
LD LX,#FF
DLC2
EXX
JR NZ,DLC10
LD B,1

DLC3 EXA
SLA D
JR NZ,$+6
LD D,(HL)
INC HL
SLI D

DJNZ DLC7

JR C,DLC1

INC B
;-----------
DLC4 LD C,%01010110
LD A,#FE
DLC5 SLA D
JR NZ,$+6
LD D,(HL)
INC HL
RL D
RLA
SLA C
JR Z,DLC6
JR C,DLC5
RRCA
JR NC,DLC5
SUB 8
DLC6 ADD A,9
;---------
DJNZ DLC3

CP 0-8+1
JR NZ,$+4
LD A,(HL)
INC HL

ADC A,#FF
LD LX,A
JR C,DLC4
LD HL,#2758
EXX
RET
;-------------
DLC7 LD A,(HL)
INC HL

EXX
LD L,A
EXA
LD H,A
ADD HL,DE

CP #FF-2
JR NC,DLC8
DEC LX
DLC8
LD A,H
CP HX
JR NC,DLC13
XOR L
AND #F8
XOR L
LD B,A
XOR L
XOR H
RLCA
RLCA
LD C,A

DLC9 EXA
LD A,(BC)
DLC10 EXA
LD A,D
CP HX
JR NC,DLC14
XOR E
AND #F8
XOR E
LD B,A
XOR E
XOR D
RLCA
RLCA
LD C,A

DLC11 EXA
LD (BC),A

INC DE
JR NC,$+4
DEC HL
DEC HL
INC HL
EXA
INC LX
JR NZ,DLC8
JR DLC2

DLC13 SCF
DLC14 PUSH AF
EXX
ADD A,E
EXX
LD B,A
POP AF
LD C,E
JR NC,DLC11
LD C,L
JR DLC9
LENGDEC EQU $-DECOMPR

newart
18.10.2010, 01:19
В картинке, записанной с распаковщиком, отсутствует сигнатура LCMP5
В картинке без распаковщика сигнатуры тем более нет.
Ты путаешь BGE LC и LC 5.2, к которому поставляется распаковщик.

Лас
18.10.2010, 01:32
В картинке без распаковщика сигнатуры тем более нет.
Ты путаешь BGE LC и LC 5.2, к которому поставляется распаковщик.

Я говорю о картинках, упакованных и сохраненных в BGE с помощью плагина BLC1.2
А ты о чем?

newart
18.10.2010, 01:43
Я говорю о картинках, упакованных и сохраненных в BGE с помощью плагина BLC1.2
А ты о чем?
О них же. Они были в моем TRD, и там никакой сигнатуры нет и впомине.

Лас
18.10.2010, 01:55
О них же. Они были в моем TRD, и там никакой сигнатуры нет и впомине.
В приложенном .trd картинки, записанные с депакером - нормальные.
С картинками, записанными без упаковщика проблема - там все, что угодно, только не пакованный скрин. Это 100%.
Советую проверить либо настройки BGE в части плагинов, либо настройки эмуля в части памяти.

Лас
18.10.2010, 02:02
Вот что у меня пишет из BGE плагин Burial Laser Compact 1.02:

newart
18.10.2010, 02:06
Вот что у меня пишет из BGE
Какая версия BGE? У меня 2.x

Лас
18.10.2010, 02:07
BGE и плагин с твоего trd.

newart
18.10.2010, 02:17
Ага. Вижу глюк. Версия 3.05 действиетльно пишет с сигнатурой, а 2.x без.

---------- Post added at 02:17 ---------- Previous post was at 02:14 ----------

Кхм. И 2.x работает как нужно. Интересно как чем это так хитро умудрился Dimidrol запаковать картинки.

Лас
18.10.2010, 02:39
Интересно как чем это так хитро умудрился Dimidrol запаковать картинки.
Может быть, пошарить в
http://vtrdos.ru/system.htm (раздел Упаковщики экранов)?