Welcome, Guest. Please login or register.


Author Topic: Treasure Cave (Read 56514 times)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Treasure Cave
« Reply #165 on: 2017.July.19. 11:41:18 »
A fenti kódrészlet emulátoron valójában nem hibás, csak valódi gépen lehet problémás. Itt azonban hiba lehet, ha a lejátszás vezérlése közben hangminta megszakítás történik:
Code: ZiLOG Z80 Assembler
  1. .   2504  21 4A BA     LD    HL, BA4A
  2. .   2507  7E           LD    A, (HL)
  3. .   2508  23           INC   HL
  4. .   2509  87           ADD   A, A
  5. .   250A  CA 17 25     JP    Z, 2517
  6. .   250D  4F           LD    C, A
  7. .   250E  0A           LD    A, (BC)
  8. .   250F  32 4D 00     LD    (004D), A
  9. .   2512  0C           INC   C
  10. .   2513  0A           LD    A, (BC)
  11. .   2514  32 51 00     LD    (0051), A
  12. .   2517  7E           LD    A, (HL)
  13. .   2518  23           INC   HL
  14. .   2519  22 05 25     LD    (2505), HL
  15. .   251C  87           ADD   A, A
  16. .   251D  CA 33 25     JP    Z, 2533
  17. .   2520  4F           LD    C, A
  18. .   2521  0A           LD    A, (BC)
  19. .   2522  0C           INC   C
  20. .   2523  F3           DI  
  21. .   2524  D9           EXX
  22. .   2525  57           LD    D, A
  23. .   2526  1E 00        LD    E, 00
  24. .   2528  FB           EI  
  25. .   2529  D9           EXX
  26. .   252A  0A           LD    A, (BC)
  27. .   252B  0C           INC   C
  28. .   252C  32 59 00     LD    (0059), A
  29. .   252F  79           LD    A, C
  30. .   2530  32 97 24     LD    (2497), A

Megoldás lehet a megszakítások letiltása a paraméterek frissítésének a teljes időtartama alatt, vagy a hangminta rutinban nem nullázni a frekvenciát a lejátszás végén (ami egyszerű, bár növeli az átlagos CPU fogyasztást). Szerintem akkor marad ki hang, ha a frekvencia (004Dh és 0051h) vezérlése már megtörtént, de a lejátszási pozícióé (DE', és 0059h a hangminta vége) még nem teljesen, és ilyenkor következik egy megszakítás amely nullázza a frekvenciát. Természetesen ugyanez vonatkozik a jobb csatornára is.
« Last Edit: 2017.July.19. 12:02:24 by IstvanV »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Treasure Cave
« Reply #166 on: 2017.July.19. 12:25:39 »
nem tudom maga a pálya mennyit visz tömörítve, igazából ha nem karakternként, hanem blokkonként (2x2 karakter) lenne a pálya tárolva, negyede memória lenne, persze tömörítve biztos nem nyernénk ennyit

Tömörítésnél már az is javítja a hatásfokot, ha a képernyő egyszerűen át van rendezve blokk sorrendbe, azaz így:

0145...
2367


És az is, ha nincs minden pálya külön tömörítve, hanem több van egy "csomagban". Példa:

1-es pálya tömörítetlenül, -m3, -m2 és -m0 formátumban, és ugyanezek átrendezés után:

1152
301  278  263
231  209  192

2-es pálya:

1152
332  311  303
231  216  206

1-es + 2-es pálya összefűzve:

2304
563    (281.5 / pálya)
506    (253 / pálya)
472    (236 / pálya)
373    (186.5 / pálya)
339    (169.5 / pálya)
321    (160.5 / pálya)
« Last Edit: 2017.July.19. 12:36:05 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Treasure Cave
« Reply #167 on: 2017.July.19. 13:04:48 »
És az is, ha nincs minden pálya külön tömörítve, hanem több van egy "csomagban". Példa:

1-es pálya tömörítetlenül, -m3, -m2 és -m0 formátumban, és ugyanezek átrendezés után:
Néztem én is mind a három formátumot, és osszfuzve is nem tudom hány pályát, a saját módi szerint jobbra jött ki, ezért maradtam annál, 140-170 byte/pálya :-)
Alábbi segítséget köszönöm, ma megnézem. :-)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Treasure Cave
« Reply #168 on: 2017.July.19. 13:11:36 »
Hangmintáknál is lehet egyébként egyszerű trükkökkel helyet megtakarítani, például a tcave.ep128s-ben található 28416 byte méretű adat 8018 lesz -m0 formátumban, azonban egyszerű szűrő (minden byte az előző hangmintához képest a különbséget tárolja) után már csak 7626 byte, mivel az egyes hangminták között gyakrabban fordul elő kis különbség.

A 4K-s változatban a karakterkészletek "C64" sorrendre konvertálásával lehetne még nyerni kb. 50 byte-ot.
« Last Edit: 2017.July.19. 13:41:23 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Treasure Cave
« Reply #169 on: 2017.July.19. 15:54:06 »
Hangmintáknál is lehet egyébként egyszerű trükkökkel helyet megtakarítani, például a tcave.ep128s-ben található 28416 byte méretű adat 8018 lesz -m0 formátumban, azonban egyszerű szűrő (minden byte az előző hangmintához képest a különbséget tárolja) után már csak 7626 byte, mivel az egyes hangminták között gyakrabban fordul elő kis különbség.
Húúú, erről már volt szó, említetted egyszer, teljesen el is felejtettem, ha helyhiánnyal küszködök, akkor majd élek is vele, egyelőre nem szeretném lassítani a kicsomagolást, a pont általad is tesztelt file kb 2mp alatt packolódik ki, leteszteltem a másik két módot is, m3 1,5 másodperc volt, viszont összességében kb 7 KB-tot nyertem, ezért is választottam az m0-t :)
Gondolom még azt lehetne, hogy visszaalakítom a hangmintát  5 bitesre, (eredetileg is az volt :D, most is az, csak másképp :D ), és 2 különbséget tárolok egy bájton, kivéve ha a különbség 10h-nál nagyobb, bár gondolom ezzel ronthatok a tömörítés hatékonyságán.
A 4K-s változatban a karakterkészletek "C64" sorrendre konvertálásával lehetne még nyerni kb. 50 byte-ot.
Jó ötlet, egyelőre nem hajtom végre, mert nem tudom mit tudnék kezdeni azzal a 4x bájttal :), kb annyi lenne belőle a végére, a bonyolódó bemásoló rutin miatt.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Treasure Cave
« Reply #170 on: 2017.July.19. 16:22:56 »
Húúú, erről már volt szó, említetted egyszer, teljesen el is felejtettem, ha helyhiánnyal küszködök, akkor majd élek is vele, egyelőre nem szeretném lassítani a kicsomagolást, a pont általad is tesztelt file kb 2mp alatt packolódik ki, leteszteltem a másik két módot is, m3 1,5 másodperc volt, viszont összességében kb 7 KB-tot nyertem, ezért is választottam az m0-t :)

Szerintem nem sokat lassulna, ez talán ~0.2 másodperc alatt fut le, és a kisebb adat miatt a kicsomagolás viszont gyorsul egy keveset:
Code: ZiLOG Z80 Assembler
  1.         ld      hl, 4000h
  2.         xor     a
  3.         ld      bc, 8038h
  4. .l1:    add     a, (hl)
  5.         ld      (hl), a
  6.         inc     l
  7.         add     a, (hl)
  8.         ld      (hl), a
  9.         inc     hl
  10.         djnz    .l1
  11.         dec     c
  12.         jr      nz, .l1
Bár azt nem árt tesztelni, hogy a többi hangmintánál is megéri-e.

Quote
Jó ötlet, egyelőre nem hajtom végre, mert nem tudom mit tudnék kezdeni azzal a 4x bájttal :), kb annyi lenne belőle a végére, a bonyolódó bemásoló rutin miatt.

A bonyolultabb rutint már figyelembe vettem.
« Last Edit: 2017.July.19. 16:32:45 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Treasure Cave
« Reply #171 on: 2017.July.19. 16:23:57 »
Megoldás lehet a megszakítások letiltása a paraméterek frissítésének a teljes időtartama alatt, vagy a hangminta rutinban nem nullázni a frekvenciát a lejátszás végén (ami egyszerű, bár növeli az átlagos CPU fogyasztást). Szerintem akkor marad ki hang, ha a frekvencia (004Dh és 0051h) vezérlése már megtörtént, de a lejátszási pozícióé (DE', és 0059h a hangminta vége) még nem teljesen, és ilyenkor következik egy megszakítás amely nullázza a frekvenciát. Természetesen ugyanez vonatkozik a jobb csatornára is.
Zseni vagy, ez történt, áthelyeztem a DI-t és EI-t, mostmár teljesen jó a zene.
Ha nincs kinullázás, akkor elméletileg belefuthat a lejátszás a következő hangmintába, nem?

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Treasure Cave
« Reply #172 on: 2017.July.19. 16:27:25 »
Szerintem nem sokat lassulna, ez talán ~0.2 másodperc alatt fut le, és a kisebb adat miatt a kicsomagolás viszont gyorsul egy keveset:
Code: ZiLOG Z80 Assembler
  1.         ld      hl, 4000h
  2.         xor     a
  3.         ld      bc, 8038h
  4. .l1:    add     a, (hl)
  5.         ld      (hl), a
  6.         inc     l
  7.         add     a, (hl)
  8.         ld      (hl), a
  9.         inc     hl
  10.         djnz    .l1
  11.         dec     c
  12.         jr      nz, .l1
Oki, ez elhanyagolható, akkor megcsinálom, szerencsére fixre hagytam a hangminták helyét mind a négy zenében :)
A bonyolultabb rutint már figyelembe vettem.
Szuper, eszembe is jutott egy ötlet, megnézem, hogy 50 bájtba belefér-e a + ext joy, vagy a QAOP+Space irányítás, a kettő közül valamelyik be fog férni.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Treasure Cave
« Reply #173 on: 2017.July.19. 19:27:07 »
Ha nincs kinullázás, akkor elméletileg belefuthat a lejátszás a következő hangmintába, nem?

Nem, a DE' egyébként is mindig visszaállna a hangminta végére, a nullázás csak optimalizálás.

Teszteltem több verziót, sajnos a full 2x2 karakteres tömörítés nem lehetséges, a szétszórt objektumok miatt, így van 2x2-es tömörített adat, és 1x2-es (pár pályán változtatni kellett),és az ismétlődések ha 2-nél több, akkor két byte-on tárolva, ha nincs ismétlődés, akkor 2 elem 1 byte-on tárolva. így kisebb lett a file, mint tömörítve, a pályák 140 és 160 byte között mozognak.

Valójában használhatónak tűnik a 2x2-es megoldás is, így 45 féle blokk fordulhat elő, ebből hatnál a karakterek összefüggő számsort alkotnak (pl. 60h, 61h, 62h, 63h). Tömörítve ez hasonló méretű a jelenlegi formátumhoz, bár a kód egyszerűbb lehet, ha nem is nagy a különbség.

Szerk.: még egy lehetőség: "kevert" blokk méret (1x2 és 2x2 is), de nincs RLE és két elem egy byte-ba csomagolása, tömörítés után ezek nem javítanak a méreten.
« Last Edit: 2017.July.19. 20:16:50 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Treasure Cave
« Reply #174 on: 2017.July.19. 20:35:49 »
Legfrissebb Treasure Cave 4K verzió, István karakterátrendezési ötletének hála, csomagolva kisebb lett a program, így belefért a 2 külső joystick ellenőrzése is a belső joystick mellett.
Régebbi linlkek frissítve.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: Treasure Cave
« Reply #175 on: 2017.July.19. 21:13:36 »
Megcsináltam a differenciált hangmintás fájlokat, egyelőre megéri szerintem:
poptechn   8361--->7925
simplemus 6671-->5774
treasmus   5358-->5321
yankee       4108-->4054

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Treasure Cave
« Reply #176 on: 2017.July.19. 21:22:43 »
annak idején biztos örültünk volna annak hogy hamarabb betöltődik :)
Vigyázat! Szektás vagyok! :)

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Treasure Cave
« Reply #177 on: 2017.July.19. 21:57:23 »
amúgy poén lett volna olyat ep program hogy a grafikának csak felezett verzióját tölti be előbb, és rákérdez hogy töltsön-e tovább és akkor betölti az egészet. :)
volt a jacks house, annak nálam hibás volt az utólsó blockja, emiatt nem voltak ellenségek :)
Vigyázat! Szektás vagyok! :)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Treasure Cave
« Reply #178 on: 2017.July.19. 22:59:52 »
poptechn   8361--->7925
simplemus 6671-->5774
treasmus   5358-->5321
yankee       4108-->4054
Nagyon sokatmondóak ezek a zenecímek, de hát én találtam ki őket. A vicc, én se tudom mindről névről már, melyik melyik. De nem volt jobb ötletem a címekhez.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Treasure Cave
« Reply #179 on: 2017.July.20. 00:42:41 »
Gondolom még azt lehetne, hogy visszaalakítom a hangmintát  5 bitesre, (eredetileg is az volt :D, most is az, csak másképp :D ), és 2 különbséget tárolok egy bájton, kivéve ha a különbség 10h-nál nagyobb, bár gondolom ezzel ronthatok a tömörítés hatékonyságán.

Az 5 bitesre konvertálástól nagyobb lett a file, -m0 formátumnál a hangminták korlátozott értéktartományát a Huffman kódolás egyébként is kihasználja. Minimális mértékű javulást (7596 -> 7580 byte) eredményezett a kettővel osztás, azaz 0..62 helyett 0..31.

Szerk.: próbálkoztam egy 3 és egy 4 bites előjeles különbség egy byte-ba csomagolásával is, ettől ugyan nem sokkal lett nagyobb a tömörített file, de ez is rosszabb az egyszerű differenciálásnál. A különbség fixen 4 bites tartományra korlátozása javított egy keveset a méreten, ez azonban veszteséges, tehát valószínűleg nem éri meg.
« Last Edit: 2017.July.21. 11:01:37 by IstvanV »