Ich wuerde ehrlich gesagt immer dazu raten exoraw zu verwenden und dann SELBST im code zu entpacken.
Der Quelltext ist ja dabei. Dann hat mal all diese Probleme nicht mehr.
Beiträge von enthusi im Thema „Fragen zu Exomizer“
-
-
zu optionsreich und zu blackboxig
Zu optionsreich?
Blackboxig? Und welchen Packer benutzt Du?
Quellcode UND docs vom Packer UND Packer liegen vor. Weniger black geht kaum
'How less black could this be? The answer is: none". -
Ich kann mir vorstellen, dass einige playroutinen ea81 benutzen.
-
Hilft das?
Bitte melde dich an, um diesen Link zu sehen.
Oooder, man schaut wie gesagt einfach in den decruncher.
Da man wenn man nicht grade sfx benutzt ja ohnehgin ein 'putbyte' bereitstellt, duerfte das kein Thema sein. -
DER depackercode ist typisch, wie sauhund schon schrieb.
D.h. exomizer SFX benutzt quasi immer den gleichen (aber vorsicht bei checksums vonwegen -n und so).
Wenn man von sehr grossen Dateien Histogramme erstellt kann man auch roh von exomizer von zip unterscheiden ;-)) -
Das liegt dann am cruncher

Bei Text wuerde ich eher 5:8 bit packen oder was es da alles gibt.
Hast Du den Text parat? Kannst ja eine kleine Mini-Compo draus stricken
-
Man muss sich nur ein wenig einlesen.
Get_byte() ist auch exakt die einzige Funktion die man selbst parat halten muss. -
Gute Spiele beduerfen ja nicht explizit einer 'technischen Brillianz'.
Schoenes Interview in der RG uebrigens
Aber mit nen eigenem exo-decruncher spart man sich wirklich Probleme. Man muss ja auch nix neu erfinden. Der source liegt dem Exomizer-Paket fertig bei - nur auf seinen eigenen Assembler muss man den anpassen. -
Wird nicht einmal der Wert aus $01 vom Anfang am Ende zurück geschrieben?
Warum sollte er?
Das gilt ja nur fuer den selfextract-code, der ja immer aus BASIC gestartet wird.
Lediglich faule coder nutzen SFX-mode und verschieben das dann von Hand und starten es fein bei $080d statt sauber selbst zu entpacken via exoraw
-
Ja, genau. Ausblenden geht

In dem von mir eben geposteten Link sieht man das sehr schoen.
So wie eben auch das BASIC-ROM kann man natuerlich das CART-ROM genauso ausblenden.
Wie beschrieben, muss man dann aufpassen wenn routinen wie z.B. Exomizer an $01 rumzupfen.
-
über $01 vorher das Cartridge abgeschaltet hatte
Ueber $01 kann man lediglich das ROM ausblenden, abschalten laessts ich das Cart dadurch nicht.
Exomizer selbst hat keine Probleme damit ins RAM unter dem ROM zu schreiben, wohl aber damit in welchem Zustand es $01 laesst beim letztendlichen Programm start.
Intern arbeitet der exomizer-depacker mit inc $01 und dec $01, daher muss man da entweder etwas aufpassen, oder das exomierte File patchen, oder am besten eine eigene Entpackroutine verwenden.
Hier findet sich eigentlich alles noetige:
Bitte melde dich an, um diesen Link zu sehen. -
Ich glaube der aktuelle vice-warp ist gut genug

Aber alle 'statistischen' Fehler treten dann natuerlich haeufiger auf, wenn Du z.B. nen IRQ mit falschem $d011 bit oder alle 100 IRQs nen Stack-Verlust hast und so weiter.
Das kachelt Dir bei Warp dann eben rein... -
Ich hab schon so manches mal gedacht, der gute Exomizer haette bugs
Lag bisher aber immer an 'mir'.
IRQ, Stack, ZP waere auch meine Vermutung.
Das hier ist nicht aktuell, aber mal ein Start:
Bitte melde dich an, um diesen Link zu sehen.
In Vice siehst Du ja sehr sauber, wann, vonwo und wieso Speicherstellen beeintraechtigt werden.
Kassettenpuffer ist da von allem noch das Harmloseste.
Viel Erfolg! -
Basic Sysline ändern auf den Code, der vorher ausgeführt werden soll
Das klappt so aber nur solange die SYSline dadurch nicht laenger wird.
Aber im Prinzip geht das genau so immer.
Notfalls eben nicht die SYSline aendern sondern den code an $80b oder $80d selbst. -
Mach doch einfach ein normales selfextracting exomizer file.
DANN das was ich eben schrieb, -
Du kannst einfach den Anfang des depackers aendern.
Also einfach ein JSR MYCODE rein.
Dann HINTER dem exomizer-filer den eigenen code und den dann mit RTS beenden (bzw. vorher evtl. noch den ein oder anderen Opcode um sich die drei Bytes fuer den JSR freizuschaufeln). -
VIC ausschalten oder ähnliches könnte da gehen.
Dieses Code-snippet wird aber staendig ausgefuehrt.
Also nach jedem byte (?).
Gedacht ist es eher fuer sowas wie "inc $d027" oder sowas... -
Zitat
eine Kompressionsrate von um die 60:100, also aus 16K kann man um die 10K machen
Haha, schoene Beispielrechnung