OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 27.04.2024, 09:03

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 20 ]  Přejít na stránku 1, 2  Další
Autor Zpráva
 Předmět příspěvku: ZX Spectrum screen remapper
PříspěvekNapsal: 29.11.2023, 18:04 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3675
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
<reklama>
Potrebujete co najlepsie spakovat obrazok ? Potrebujete co najviac skratit dlzku programu obsahujuceho obrazok ? Setrite miestom a kazdy bajt je vam dobry ? Potom ste na spravnej adrese ! ZX Spectrum screen remapper je ako stvoreny prave pre vas !!!

Vybrali sme nahodny obrazok - zaverecny obrazok z Micro dema - mikroskop - a vyskusali sme na nom ZX screen remapper !
A tu je vysledok !!
6912 ... Originalny nespakovany obrazok
4886 ... Obrazok spakovany iba Pressor5-kou (depaker 82 + data 4804)
4517 ... Obrazok spakovany iba LzxPack02-kou (kompresia tr47, depaker 79 + data 4438)
4220 ... Najprv Pressor5 a potom LzxPack02 (kompresia tn78, depaker 178 + data 4042)
3664 ... ZX remapper (mode 21, demapper 62 + data 6912) a potom LzxPack02 (tr34, depaker 97 + data 3563)
Vidime, ze vysledok so ZX remapperom je este o dost lepsi nez akakolvek metoda bez neho ! A to sa vyplati !!! :clap: :beer:
</reklama>

A teraz trosku vaznejsie :)

Na pakovanie obrazkov sme dlhocizne roky pouzivali specializovany screen pakovac - Pressor (obvykle verzie 5 a 6). Genialita tohto pakovaca spociva v tom, ze nerobi len nejaku jednu defaultnu kompresiu, ale ma v sebe niekolko roznych typov kompressi zvlast pre pixely a niekolko dalsich typov kompresii pre atributy. Pri pakovani vyskusa vsetky, vyberie tie ktore dosiahli najlepsi kompresny pomer a toto ponukne uzivatelovi. Samotne kompresie su zalozene na vhodnom preusporiadani obrazovych dat a naslednej aplikacii kompresie typu RLE, pricom data su preusporiadane tak, aby to pomohlo RLE kompresii dosiahnut lepsi vysledok.

Takto skompresovany obrazok (preusporiadanie + RLE) sa nasledne este vyplati spakovat nejakou LZ kompresiou (Turboimpoder, LzxPack...), ktora najde v datach rovnake bloky a vdaka tomu data este viac a lepsie spakuje.

Tento sposob pakovania obrazkov som pouzival dlhe roky...

...az kym mi nedoslo, ze pri modernyn LZ kompresiach ta RLE kompresia tomu az moc nepomaha, pretoze LZ kompresia je v principie cosi ako nadmnozina RLE a vsetko, co zvlada RLE, by zvladla aj nasledna LZ. Tak som si spravil zopar testov a zistil som (prekvapujucu, ale logicku) vec - RLE kompresia nielenze nepomaha, ale vysledok este zhorsuje ! A zhorsuje to preto, lebo do dat vnasa dalsiu (teraz pouzijem taky fuj odborny termin) entropiu, ktora vo vysledku data iba zbytocne predlzuje. Touto entropiou je rezia okolo kompresie - v zavislosti od typu RLE - potrebuje znacky ci sa jedna o povodny nepakovatelny blok dat alebo opakujuci sa bajt, a tiez aj pocty spakovanych bajtov.

Takze rozhodnutie bolo jasne - poslat celu RLE kompresiu do haja. Lenze pakovac screenov Pressor toto priamo neumoznuje, musel by sa prerobit, a tiez by bolo treba netrivialne prerobit aj vsetky jeho depakery, pretoze obe funkcionality - preusporiadanie a aj RLE dekompresor - su navzajom skombinovane v tej istej rutinke.

Preto som sa rozhodol, ze spravim nieco ako Pressor, ale s tym, ze iba preusporiada data v obrazku, ale nebude robit RLE kompresiu. A kedze dnes je moderny crossdevelopment, tak pobezi nie na ZX Spektre, ale na Pomocnom Calculatore (a inych mnohobitoch), aby bolo mozne cely proces pakovania obrazku pekne zautomatizovat, hlavne zretazit aj s LZ kompresorom, takze staci napr. nejake jedno makefile.

Takze tymto vam predstavujem moj novy ZX Spectrum screen remapper :clap:

Pouzitie je nasledovne:
Kód:
ZXremap6  vstupny_originalny_obrazok  vystupny_premapovany_obrazok  <startovacia_adresa>
Po spusteni sa vygeneruje osem suborov s nazvami vystupny_premapovany_obrazok.mXY kde XY su cislice oznacujuce sposob premapovania alebo preusporiadania dat. Nasledne mozete na tieto vygenerovane subory aplikovat vasu oblubenu LZ kompresiu (ja osobne doporucujem samozrejme LzxPack02 ;) ) a vybrat si ten, kde tato kompresia dosiahla najlepsi kompresny pomer.

Ciselny parameter <startovacia_adresa> je nepovinny. Ak ho uvediete, tak program k premapovanym datam pribali aj kratucku rutinku, ktora premapovane data zobrazi na obrazovke v povodnom tvare. Potom staci takto vygenerovany subor nahrat do pameti a spustit od tejto startovacej adresy.

Ak by ste si rutinky chceli "prilinkovat" sami, alebo ich nejak pomenit, v balicku su prilozene aj zdrojove texty tychto rutiniek.

A je to :)

A este dve ukazky o tom ako remapper dokaze pomoct:

Help screen z dema Song in lines 3, tak ako je, LzxPack samotny zapakoval na 1833 bajtov.
Remapovany (rezim m11) a zapakovany LzxPack-om ma 905 bajtov. Teda menej ako polovica.

1k intro Evolution https://www.youtube.com/watch?v=-KG5SWDtGqs obsahuje 7 obrazkov.
815 ... vsetky obrazky priamo spakovane pomocou ZX7 (povodny packer pouzity v intre)
739 ... vsetky obrazky priamo spakovane pomocou LzxPack02
528 ... premapovane obrazky spakovane LzxPack02
Takze vysledne spaknute obrazky zaberaju cca polovicu povodneho rozsahu intra 1kB a do intra by sa ich voslo ovela viac. Alebo nejaka pekna hudba, aby to nebolo uplne hluche :)

A na zaver asi to najdolezitejsie. Stahujte tu: https://busy.speccy.cz/download/zxremap6.rar


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ZX Spectrum screen remapper
PříspěvekNapsal: 29.11.2023, 18:46 
Offline
Site Admin
Uživatelský avatar

Registrován: 11.05.2013, 23:48
Příspěvky: 10140
Bydliště: Praha
Has thanked: 1961 times
Been thanked: 1523 times
Škoda, že se nepokračuje v tom dungeonu. Tam by hádám tahle nová komprese krutě pomohla.

_________________
Amiga/Amstrad/Atari/Commodore/Mac/Nintendo/PS/PC/Sega/Tandy/ZX


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ZX Spectrum screen remapper
PříspěvekNapsal: 29.11.2023, 19:00 
Offline
Pan Štábní

Registrován: 23.06.2013, 23:49
Příspěvky: 1120
Has thanked: 100 times
Been thanked: 161 times
misticjoe píše:
Škoda, že se nepokračuje v tom dungeonu. Tam by hádám tahle nová komprese krutě pomohla.

Wycheweald 2023
https://www.dungeoncrawlers.org/game/wycheweald/
phpBB [video]

_________________
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ZX Spectrum screen remapper
PříspěvekNapsal: 29.11.2023, 19:08 
Offline
Site Admin
Uživatelský avatar

Registrován: 11.05.2013, 23:48
Příspěvky: 10140
Bydliště: Praha
Has thanked: 1961 times
Been thanked: 1523 times
Aha. Tak tys ho dokončil... To mě nějak minulo :-) Jen vypadá nějak jinak, než si ho pamatuju. Kde je podlaha? Kde je barevná grafika ve výhledu? (soudím jen podle screenshotů)

_________________
Amiga/Amstrad/Atari/Commodore/Mac/Nintendo/PS/PC/Sega/Tandy/ZX


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ZX Spectrum screen remapper
PříspěvekNapsal: 29.11.2023, 19:39 
Offline
Pan Štábní

Registrován: 23.06.2013, 23:49
Příspěvky: 1120
Has thanked: 100 times
Been thanked: 161 times
misticjoe píše:
Aha. Tak tys ho dokončil... To mě nějak minulo :-) Jen vypadá nějak jinak, než si ho pamatuju. Kde je podlaha? Kde je barevná grafika ve výhledu? (soudím jen podle screenshotů)

To jsem nepsal ja. A pouzivaji trochu jine techniky nez prosty maliruv algoritmus.

_________________
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ZX Spectrum screen remapper
PříspěvekNapsal: 30.11.2023, 00:29 
Offline
Pan Generální

Registrován: 01.12.2017, 21:01
Příspěvky: 2095
Bydliště: BA-Petržalka :(
Has thanked: 18 times
Been thanked: 327 times
Asi by bolo dobré spomenúť pod čím ten remapper beží. Jeden by predpokladal DOS keď je tam exe a argumenty, ale vidím tam vo výpise "This program cannot be run in DOS mode.", takže Windows? Ktorý? Na konci je KERNEL32, takže Windows 98 a novší?

_________________
Oznamy o novom príspevku mi na mail chodia iba sporadicky, takže keď sa nehlásim v diskusii, tak je to tým. V 80% nepríde mail vôbec.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ZX Spectrum screen remapper
PříspěvekNapsal: 30.11.2023, 01:19 
Offline
Pan Štábní

Registrován: 23.06.2013, 23:49
Příspěvky: 1120
Has thanked: 100 times
Been thanked: 161 times
PotPalo píše:
Asi by bolo dobré spomenúť pod čím ten remapper beží. Jeden by predpokladal DOS keď je tam exe a argumenty, ale vidím tam vo výpise "This program cannot be run in DOS mode.", takže Windows? Ktorý? Na konci je KERNEL32, takže Windows 98 a novší?

Mas tam zdrojak v cecku co pripojuje jen
Kód:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
takze to jde zkompilovat skoro vsude. Takze to bezi taky vsude, kde to potrebujes. Za me velky palec nahoru, ze to pouziva parametry a neni to napsany na klikani a zavisle na win.
Kód:
dworkin@dw-A15:~/Programovani/ZX$ gcc ZXremap6.c
dworkin@dw-A15:~/Programovani/ZX$ ./a.out

Busy soft: ZX screen remapper

Usage:  ./a.out  InputScreenName  OutputFileName  <StartAddress>

Generates a set of remapped input screens
If StartAddress is used, demapper code is added
Loading and executing the code from address shows screen

PS: Jedine co bych delal jinak, ze bych to balil s adresarem a asi zipem.

_________________
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ZX Spectrum screen remapper
PříspěvekNapsal: 30.11.2023, 01:31 
Offline
Pan Štábní

Registrován: 23.06.2013, 23:49
Příspěvky: 1120
Has thanked: 100 times
Been thanked: 161 times
https://exe.urih.com/

Kód:
EXE header summary
Input:   Uploaded file
Size:   6,656 bytes
File name:   ZXremap6.exe
Extension:   .exe
MIME type:   application/x-ms-dos-executable
PE details
Date compiled:   Mon, October 9, 2023, 2:22:56 PM
Linker version:   2.56
Machine type:   Intel 386 or later processors and compatible processors
PE format:   PE32
Characteristics:   None
DLL Characteristics:   None
Subsystem:   The Windows character subsystem (Console)
Min OS:   Windows 95
Min OS version:   4.0
Subsystem version:   4.0
File version:   1.0
Manifest:   No
Images:   No
Icons:   No
Dialogs:   Unknown (Not implemented)
String tables:   Unknown (Not implemented)
Accelerators:   Unknown (Not implemented)
Cursors:   Unknown (Not implemented)
Menu:   Unknown (Not implemented)


https://manalyzer.org/report/fcd3f76bd9bbcbb185c4e45b78e18521

_________________
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ZX Spectrum screen remapper
PříspěvekNapsal: 30.11.2023, 11:22 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3675
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
PotPalo píše:
Asi by bolo dobré spomenúť pod čím ten remapper beží. Jeden by predpokladal DOS keď je tam exe a argumenty, ale vidím tam vo výpise "This program cannot be run in DOS mode.", takže Windows? Ktorý? Na konci je KERNEL32, takže Windows 98 a novší?
_dworkin ti na to uz odpovedal, tak ja len doplnim ze:

- koncovka "exe" je taky standart pre spustitelne subory aplikacii vo vsetkych systemoch od microsoftu: msdos a vsetky mozne 16,32,64 bitove windowsy
- KERNEL32.DLL je klasika pre vsetky 32bit a 64bit windowsy, aj 64bit aplikacie si importuju KERNEL32.DLL (samozrejme 64bit verziu) :)
- "This program cannot be run in DOS mode." to vypise pri spusteni v cistom msdose, to je taky standartny zaciatok vsetkych windowsackych exacov. Konkretne tuto hlasku obvykle pouzivaju 32 a viacbitove aplikacie. Povodne vznikla pri Win95 / 98 / ME ktore este stale bezali nad msdosom a bolo mozne si nechat bezat iba ten msdos (to je ten DOS mode v ktorom by dotycny program nebezal).


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ZX Spectrum screen remapper
PříspěvekNapsal: 30.11.2023, 11:37 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3675
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
_dworkin píše:
Za me velky palec nahoru, ze to pouziva parametry a neni to napsany na klikani a zavisle na win.
Vdaka !
Tak nejak z cias unixu som zvyknuty skor na cmdline utilitky, ktorych cinnost sa da automatizovat v skripte. Napriklad ja ho pouzivam v scripte, ktory urobi cely pakovaci proces naraz - vygeneruje vsetky premapovane obrazky, kazdy zapakuje a potom ich vypise (na konzolu aj do txt suboru) v poradi podla vyslednej dlzky.
Pricom medzi podla dlzky zoradenymi spakovanymi obrazkami je aj povodny obrazok bez premapovania, pretoze pri niektorych specifickych obrazovych datach moze akekolvek premapovanie viest k dlhsiemu vysledku.
_dworkin píše:
PS: Jedine co bych delal jinak, ze bych to balil s adresarem a asi zipem.
Preco s adresarom ? Nechce sa ti robit adresar pre depakovanie ? Pokial to ale depakujes priamo v nejakom GUI depakovaci (WinRar, 7zip...) tak ten ti adresar vyrobi sam.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ZX Spectrum screen remapper
PříspěvekNapsal: 30.11.2023, 19:48 
Offline
Pan Generální

Registrován: 01.12.2017, 21:01
Příspěvky: 2095
Bydliště: BA-Petržalka :(
Has thanked: 18 times
Been thanked: 327 times
Asi som blbý, ale ja zo zdrojáku v Cé neviem skompilovať funkčný exe súbor.

>> Stačilo napísať že na to exe treba minimálne Windows 95. :D

_________________
Oznamy o novom príspevku mi na mail chodia iba sporadicky, takže keď sa nehlásim v diskusii, tak je to tým. V 80% nepríde mail vôbec.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ZX Spectrum screen remapper
PříspěvekNapsal: 01.12.2023, 05:30 
Offline
Pan Štábní

Registrován: 23.06.2013, 23:49
Příspěvky: 1120
Has thanked: 100 times
Been thanked: 161 times
Busy píše:
Preco s adresarom ? Nechce sa ti robit adresar pre depakovanie ? Pokial to ale depakujes priamo v nejakom GUI depakovaci (WinRar, 7zip...) tak ten ti adresar vyrobi sam.

Pod pravym tlacitkem mam na vyber:
Kód:
 - Rozbalit zde
 - Rozbalit do...

Vetsina veci obsahujici vic souboru na ktere narazim uz ma v sobe adresar, takze se mi stane ze to ma 2x zanorene. Tentokrat jsem to neuhlidal a pak hledal obsah archivu mezi ostatnim bincem (to jsem nestastne formuloval) a presouval do rucne udelaneho adresare. Proto preferuji ten adresar.

_________________
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ZX Spectrum screen remapper
PříspěvekNapsal: 01.12.2023, 10:44 
Offline
Pan Generální

Registrován: 01.12.2017, 21:01
Příspěvky: 2095
Bydliště: BA-Petržalka :(
Has thanked: 18 times
Been thanked: 327 times
Čéče... po podobných skúsenostiach rozbaľujem archívy zásadne v prázdnom priečinku. Skúsenosti. Najhoršie bolo rozbaliť niečo na plochu a očakávať že to bude v zložke. Nebolo, cez 100 súborov pomiešaných so všetkým čo som mal na ploche... to bola sranda. :lol: Ale riešenie bolo ľahké: rozbaliť to ešte raz niekde do priečinka, potom cez TC porovnať obsah plochy a priečinku, a čo bolo na oboch miestach naraz nechať z plochy zmazať. 8-)

_________________
Oznamy o novom príspevku mi na mail chodia iba sporadicky, takže keď sa nehlásim v diskusii, tak je to tým. V 80% nepríde mail vôbec.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ZX Spectrum screen remapper
PříspěvekNapsal: 01.12.2023, 14:12 
Offline
Pan Generální
Uživatelský avatar

Registrován: 18.05.2013, 14:56
Příspěvky: 2354
Has thanked: 304 times
Been thanked: 641 times
Co dělám blbě? Zkusil jsem zabalit obrázek monoscop.scr (na linuxu, zkompilováno gcc) a získal jsem několik souborů velikých 6912 bytů, jako byl původní soubor.
Kód:
./ZXremap6 monoskop.scr monoskop-out

Busy soft: ZX screen remapper
Reading monoskop.scr
Writing monoskop-out.m01 (6912 bytes)
Writing monoskop-out.m02 (6912 bytes)
Writing monoskop-out.m10 (6912 bytes)
Writing monoskop-out.m11 (6912 bytes)
Writing monoskop-out.m12 (6912 bytes)
Writing monoskop-out.m20 (6912 bytes)
Writing monoskop-out.m21 (6912 bytes)
Writing monoskop-out.m22 (6912 bytes)
Neměly být různě veliké podle toho, jak úspěšná byla ta která varianta konmprese?

Dají se z toho získat relokovatelné samorozbalovací obrázky jako z Pressoru? Pokud ano, budou začínat stejnými instrukcemi, jako některá z variant Pressoru, aby se daly používat zobrazovače detekující samorozbalovací obrázky?

Věnoval jsem tomu zatím sotva deset minut, tak možná později zjistím, že jsem přehlíd něco zásadního... ale na první pohled to není tak intuitivní, jak bych rád.

_________________
https://cygnus.speccy.cz ZX Spectrum 128k, Betadisk, DivIDE, ESXDOS


Nahoru
 Profil  
 
 Předmět příspěvku: Re: ZX Spectrum screen remapper
PříspěvekNapsal: 01.12.2023, 15:20 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1524
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 386 times
Zkusil sis ty obrázky zobrazit?

Pokud jsem to pochopil, remapper pozpřehazuje data v obrázku různými způsoby, aby pro následující kompresi mohla být lépe uspořádána k dosažení lepšího výsledku.
Ale sám remapper nepackuje, jen přeuspořádá data.
(Nevím ale - nemá tam někde být i rutina 62 bajtů na zpětné přeuspořádání dat zpět na viditelný nerozházený obrázek?)

Packování se pak provede něčím (oblíbeným kompresním programem) nad těmi různě zpřeházenými daty.


Edit: aha, tak rutinka může nebo nemusí být.
"Ciselny parameter <startovacia_adresa> je nepovinny. Ak ho uvediete, tak program k premapovanym datam pribali aj kratucku rutinku, ktora premapovane data zobrazi na obrazovke v povodnom tvare. Potom staci takto vygenerovany subor nahrat do pameti a spustit od tejto startovacej adresy.

Ak by ste si rutinky chceli "prilinkovat" sami, alebo ich nejak pomenit, v balicku su prilozene aj zdrojove texty tychto rutiniek."


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 20 ]  Přejít na stránku 1, 2  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 29 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz