Exomizer - decrunch code

Szukasz drobnej pomocy przy kodowaniu, albo chcesz przedstawić światu swoją gotową lub w trakcie realizacji produkcję? To właściwy dział.
Wiadomość
Autor
splatterpunk
Posty: 1457
Rejestracja: 16 wrz 2008, 20:04

Exomizer - decrunch code

#1 Post autor: splatterpunk »

Czy ktoś mi może powiedzieć dlaczego tu są errory (kompilator Acme),
bo mnie zaraz chińska k**wica strzeli? Niby wszystko OK przecież.


Obrazek

splatterpunk
Posty: 1457
Rejestracja: 16 wrz 2008, 20:04

#2 Post autor: splatterpunk »

Albo inaczej: czy ktoś ma source code exodecrunchera dla kompilatora Acme?
Bo to co na górze wziąłem z kodu dla DASM i zamieniłem tylko
kropki przed "byte" na wykrzykniki i powinno, kurna, działać.
A czemu są syntax errory??

Awatar użytkownika
Sebaloz/Lepsi.De
Posty: 3949
Rejestracja: 14 wrz 2008, 00:02

#3 Post autor: Sebaloz/Lepsi.De »

Masz bledy przy kompilacji. Probowales jeszcze raz, juz na spokojnie?
__________________________
Socjopatyczna Legia Commodore

splatterpunk
Posty: 1457
Rejestracja: 16 wrz 2008, 20:04

#4 Post autor: splatterpunk »

Sebaloz/Lepsi.De pisze:Masz bledy przy kompilacji.
Sebaloz, jak zwykle ratujesz cenną pomocą i spostrzeżeniami.

Nie próbuje na spokojnie, czekam aż samo się naprawi.
Zresztą już wcześniej próbowałem paru sztuczek.
Nie mam pojęcia dlaczego np dla linii gdzie jest

!byte 2, 4, 4

jest "Syntax Error 2, 4, 4"

???

Awatar użytkownika
Sebaloz/Lepsi.De
Posty: 3949
Rejestracja: 14 wrz 2008, 00:02

#5 Post autor: Sebaloz/Lepsi.De »

Chcialem pomoc, ale jak widac sam wolisz sie meczyc :)

ps. wyslij mi plik zrodlowy to skompiluje i odesle binarke.
__________________________
Socjopatyczna Legia Commodore

splatterpunk
Posty: 1457
Rejestracja: 16 wrz 2008, 20:04

#6 Post autor: splatterpunk »

Cały kod źródłowy mojego dema? :)

Eee, lepiej podeślij mi DASMa, nie mogę znaleźć nigdzie.
Sam sobie skompiluję DASMem tą procedurę decrunchingu
i po prostu załączę jako plik binarny do mojego projektu.

Potem pozostaje tylko okiełznanie co gdzie należy dać,
mam na myśli to, żeby to co mam spakowane rozpakowało
się tam gdzie chcę, no i jeszcze te komórki strony zerowej,
żeby się nie skłóciły.

Awatar użytkownika
Nitro
Posty: 1544
Rejestracja: 03 wrz 2008, 20:23
Grupa: Black Sun

#7 Post autor: Nitro »

Spróbuj może ręcznie przepisać jedna z tych linijek, jak będzie działać to znaczy, że są jakieś problemy z kodowaniem - w pliku są jakieś specjalne znaki[które np pojawiły się przy copy paste] i się o nie kompilator pluje.
Chyba już kiedyś ktoś miał podobny problem tutaj.
P.S. Exomizer imo nadaje się tylko do pakowania pierwszego pliku wykonywalnego, potem podczas depacku w runtime, loadingu to zainteresuj się innymi, szybszymi cruncherami:
- bongo cruncher (with/without golden seq)
- Doynax
- LZWVL
- Boozer
- Level Crusher
Chyba najnowszym packerem który wszyscy chwalą i który jest użyty w Comalandzie jest Doydynamite aka Doynax LZ:
http://csdb.dk/release/?id=129574
krill
I have just finished adding Doynax LZ to my loader. (Yes, it's FAST! And it seems to be between Exomizer and Pucrunch in pack ratio. New gold standard default demo packer hands down.) I'd like to release it with all packer fixes. When can i expect to see an official Doynax-approved patch? :)

splatterpunk
Posty: 1457
Rejestracja: 16 wrz 2008, 20:04

#8 Post autor: splatterpunk »

OK, mam już tego DASMa. Można go pobrać tutaj:

http://sourceforge.net/projects/dasm-dillon/

splatterpunk
Posty: 1457
Rejestracja: 16 wrz 2008, 20:04

#9 Post autor: splatterpunk »

Nitro pisze:Spróbuj może ręcznie przepisać jedna z tych linijek, jak będzie działać to znaczy, że są jakieś problemy z kodowaniem - w pliku są jakieś specjalne znaki[które np pojawiły się przy copy paste] i się o nie kompilator pluje.
Chyba już kiedyś ktoś miał podobny problem tutaj.
Wreszcie sensowna wypowiedź :)
Ale... próbowałem tego o czym piszesz Nitro.
Wpisywałem linię ręcznie albo wpisywałem jedną linię do notatnika
i potem przeklejałem do C64Studio - zawsze to samo.

Rzeczywiście, myślę że coś może być na rzeczy, tak jak piszesz copy/paste.
Przypomnę, że source code wziąłem z pakietu Exomizera
(konkretnie z \exodecrs\dasm\exodecrunch.s) - przekleiłem go
do C64Studio a następnie tam zamieniałem kropki przed "byte"
na wykrzykniki. Ale pomimo przedsięwziętych dodatkowych
kroków błędy kompilatora nadal występują.

splatterpunk
Posty: 1457
Rejestracja: 16 wrz 2008, 20:04

#10 Post autor: splatterpunk »

Nitro pisze: P.S. Exomizer imo nadaje się tylko do pakowania pierwszego pliku wykonywalnego, potem podczas depacku w runtime, loadingu to zainteresuj się innymi, szybszymi cruncherami:
- bongo cruncher (with/without golden seq)
- Doynax
- LZWVL
- Boozer
- Level Crusher
Chyba najnowszym packerem który wszyscy chwalą i który jest użyty w Comalandzie jest Doydynamite aka Doynax LZ:
http://csdb.dk/release/?id=129574
Zgoda, że Exomizer sprawdza się gorzej jeśli chodzi o depack w runtime.
Pewnie się zainteresuję innymi cruncherami w swoim czasie ale do tego co chcę zrobić
teraz Exomizer będzie OK a jak już zacząłem to chcę to rozkminić.

Awatar użytkownika
Nitro
Posty: 1544
Rejestracja: 03 wrz 2008, 20:23
Grupa: Black Sun

#11 Post autor: Nitro »

C64studio używa składni ACME, ty je karmisz DASM'em, coś innego się pewnie nie zgadza.
DASM'a obsługuje to IDE:
http://www.wudsn.com/

splatterpunk
Posty: 1457
Rejestracja: 16 wrz 2008, 20:04

#12 Post autor: splatterpunk »

Nitro pisze:C64studio używa składni ACME, ty je karmisz DASM'em, coś innego się pewnie nie zgadza.
DASM'a obsługuje to IDE:
http://www.wudsn.com/
Karmię je zmodyfikowanym kodem pod DASM tak, żeby ACME mogło go obsłużyć (vide zamiana kropek przed "byte" na wykrzykniki).

Anyways, właśnie skompilowałem kod decrunchingu przy użyciu DASM, bez IDE.
Po prostu podłączę to pod mój kod w C64Studio jako plik binarny, no i JSR ****. Dam znać jak się z tym uporam.

Awatar użytkownika
wegi
Posty: 839
Rejestracja: 14 lip 2009, 01:17

#13 Post autor: wegi »

Pierwsza linia (zgaduję)
!to "decruncher.prg" , CBM

Druga linia
*= $0200 ;przykładowo

wybór kompilatora, w założeniu zgodny powinien być z Acme, do końca zgodny nie jest. Za to możliwości debugu C64studio przebijają wszystko.

splatterpunk
Posty: 1457
Rejestracja: 16 wrz 2008, 20:04

#14 Post autor: splatterpunk »

wegi pisze: wybór kompilatora, w założeniu zgodny powinien być z Acme, do końca zgodny nie jest.
C64Studio jest zgodny z ACME za wyjątkiem obsługi niektórych makr (z tego co wiem).

splatterpunk
Posty: 1457
Rejestracja: 16 wrz 2008, 20:04

#15 Post autor: splatterpunk »

Wegi, screenshot z kodu wyżej: tylko w tym konkretnym przypadku
miałem taki problem, czyli Syntax Error dla "!byte 0, 0, 0" itp.
W pozostałych moich źródłach wszystko gra więc naprawdę jest to dziwne.

Anyways, zrezygnowałem na razie z depackingu w runtime bo udało
mi się jakoś pokawałkować i upchnąć w RAMie wszystko to co było trzeba.
Pełna wersja "Shadows of the Cyberspace" wykorzystuje prawie całą
dostępną pamięć RAM. Release wkrótce.

splatterpunk
Posty: 1457
Rejestracja: 16 wrz 2008, 20:04

#16 Post autor: splatterpunk »


Awatar użytkownika
wegi
Posty: 839
Rejestracja: 14 lip 2009, 01:17

#17 Post autor: wegi »

Musi być ta pierwsza linia z nazwą pliku do utworzenia i " , CBM", żeby był to ACME bo inaczej on domyślnie pod coś innego się ustawia i wywala takie syntax'y jak masz. (musi być też druga linia ze start address'em)

Btw - przeliczone wierzchołki raczej kiepsko się pakują.

splatterpunk
Posty: 1457
Rejestracja: 16 wrz 2008, 20:04

#18 Post autor: splatterpunk »

wegi pisze:Musi być ta pierwsza linia z nazwą pliku do utworzenia i " , CBM", żeby był to ACME bo inaczej on domyślnie pod coś innego się ustawia i wywala takie syntax'y jak masz. (musi być też druga linia ze start address'em)
Wegi, wiem, że muszą być te dwie linie i one są w tym kodzie
na początku a mimo to są errory takie jak na screenshocie.

splatterpunk
Posty: 1457
Rejestracja: 16 wrz 2008, 20:04

#19 Post autor: splatterpunk »

Kod: Zaznacz cały

!to "exo_decrunch.prg",cbm


;
; Copyright (c) 2002 - 2005 Magnus Lind.
;
; This software is provided 'as-is', without any express or implied warranty.
; In no event will the authors be held liable for any damages arising from
; the use of this software.
;
; Permission is granted to anyone to use this software for any purpose,
; including commercial applications, and to alter it and redistribute it
; freely, subject to the following restrictions:
;
;   1. The origin of this software must not be misrepresented; you must not
;   claim that you wrote the original software. If you use this software in a
;   product, an acknowledgment in the product documentation would be
;   appreciated but is not required.
;
;   2. Altered source versions must be plainly marked as such, and must not
;   be misrepresented as being the original software.
;
;   3. This notice may not be removed or altered from any distribution.
;
;   4. The names of this software and/or it's copyright holders may not be
;   used to endorse or promote products derived from this software without
;   specific prior written permission.
;
; -------------------------------------------------------------------
; The decruncher jsr:s to the get_crunched_byte address when it wants to
; read a crunched byte. This subroutine has to preserve x and y register
; and must not modify the state of the carry flag.
; -------------------------------------------------------------------
; -------------------------------------------------------------------
; this function is the heart of the decruncher.
; It initializes the decruncher zeropage locations and precalculates the
; decrunch tables and decrunches the data
; This function will not change the interrupt status bit and it will not
; modify the memory configuration.
; -------------------------------------------------------------------
; -------------------------------------------------------------------
; if literal sequences is not used (the data was crunched with the -c
; flag) then the following line can be uncommented for shorter code.
;EXOD_LITERAL_SEQUENCES_NOT_USED = 1
; -------------------------------------------------------------------
; zero page addresses used
; -------------------------------------------------------------------
exod_zp_len_lo = $a7

exod_zp_src_lo  = $ae
exod_zp_src_hi  = exod_zp_src_lo + 1

exod_zp_bits_hi = $fc

exod_zp_bitbuf  = $fd
exod_zp_dest_lo = exod_zp_bitbuf + 1	; dest addr lo
exod_zp_dest_hi = exod_zp_bitbuf + 2	; dest addr hi

exod_tabl_bi = exod_decrunch_table
exod_tabl_lo = exod_decrunch_table + 52
exod_tabl_hi = exod_decrunch_table + 104

; -------------------------------------------------------------------
; no code below this comment has to be modified in order to generate
; a working decruncher of this source file.
; However, you may want to relocate the tables last in the file to a
; more suitable address.
; -------------------------------------------------------------------

*=$c000

; -------------------------------------------------------------------
; jsr this label to decrunch, it will in turn init the tables and
; call the decruncher
; no constraints on register content, however the
; decimal flag has to be #0 (it almost always is, otherwise do a cld)
exod_decrunch:
; -------------------------------------------------------------------
; init zeropage, x and y regs. (12 bytes)
;
(...) i tak dalej.

splatterpunk
Posty: 1457
Rejestracja: 16 wrz 2008, 20:04

#20 Post autor: splatterpunk »

Wegi, jak masz chwilę, to ściągnij plik exodecrunch.asm który załączyłem
i sam spróbuj skompilować pod C64Studio, może coś przeoczyłem.
Załączniki
exodecrunch.zip
(2.74 KiB) Pobrany 284 razy

ODPOWIEDZ