Welcome, Guest. Please login or register.


Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - IstvanV

Pages: [1] 2 3 4 5 6 7 8 ... 291
1
VIDEO: / Re: Mozgó kép Enterprise -on...?
« on: 2020.May.07. 09:49:15 »
Lehetne gyűrűmodulációval is próbálkozni a torzított hang helyett, azzal jobban közelíthető a fűrészjelre emlékeztető hangzás, de elfogyaszt egy csatornát, ezért valószínűleg csak a zene elején lenne használható.

2
Programozás / Re: Fájltömörítés Enterprise-on
« on: 2020.April.29. 11:05:11 »
az m2 tömörítésre miért írja azt a wikis leírás, hogy "elavult és általában nem ajánlott a használata"?

A 2.0.11.2 emulátor csomagban található epcompress már nem tartalmazza a régi formátumok többségét, csak az m3-at és az m2 lebutított (gyorsan tömörítő, de kevésbé hatékony) változatát. Az utóbbira a snapshotok és az ep128emu_roms.bin file miatt van szükség kompatibilitási célból. Mivel a nem m3 formátumokat eddig is többnyire csak én használtam, nem tartottam érdemesnek ezeket kiadott verzióba beépíteni. Új programnál pedig előnyösebb is lehet, ha tetszőlegesen módosított vagy új formátumok használhatók, mivel nem számít a kompatibilitás. A Bad Apple demóba is egyedi m4 változat került, amivel gyorsabb lehetett a lejátszás.

Ha valaki mégis használná a törölt formátumokat, akkor "git checkout 080cccdf30730447b95388802f86783e521e564a" paranccsal letölthető az ep128emu forráskód utolsó verziója, amelyben ezek még megtalálhatók voltak.

3
SOUND: / Re: Zeneprogramozás
« on: 2020.April.13. 20:46:55 »
A midiplay csomag forráskódjában található még két példa lejátszó rutinra, a xorplay2K.s és a xorplay4K.s. Ezek tartalmazzák a konvertálás paramétereit is, és lehetővé teszik az egyik csatorna átmeneti tiltását (ami játékoknál hasznos, effektusok lejátszásakor). Egyszerűbb zenéknél a kisebb burkológörbe terület (e3 vagy e2) és kevesebb táblázat (d) előnyösebb lehet.

4
SOUND: / Re: Zeneprogramozás
« on: 2020.April.13. 20:37:46 »
kimentettem a dave regisztereket a midi lejátszóból:

Erre a célra használható a midiconv is, például az itt található Bad Apple demóhoz ezek a parancsok konvertálják a zenét:

./bin/midiconv_linux64 eleclove.mid musicdat.dav envelope.txt -quant4 -render
./bin/daveconv_linux64 musicdat.xr8 musicdat.dav:e4,n,f 0
./bin/epcompress -raw -m4 -X musicdat.xr8 musicdat.m4


A -render paraméter a lényeges, ennek a használatakor DAVE regiszter adat lesz a kimenet. A -quant4 célja itt csak az, hogy minden negyedhang időtartama pontosan osztható legyen 4 50 Hz-es megszakítással, így nem egyenetlen a zene időzítése.

Quote
nade fogtam a daveconv.cpp-t és lefordítottam xorplay formátumra: (egyébként nem igazán világos nekem a sok paraméter, azokat használtam jobb híján, amivel az exorcist zenéje lett konvertálva)

Konvertálásnál fontos, hogy a formátum és a betöltési cím megfelelő legyen, az Exorcist zenéjénél használt paraméterekhez a legjobb az Exorcist lejátszó rutinját beépíteni. Vagy a fenti példához a badapple.asm-ben található rutint. A csomagban és itt is megtalálható daveconv.cpp egyébként kissé továbbfejlesztett, hatékonyabban kódolja a hosszú szüneteket.

Azonban mostanában kísérletezek ilyen célra jobb formátummal, mert a daveconv több zenénél nem igazán hatékony, és a fix méretű burkológörbe terület is nehézkes. Mindenesetre a paraméterek jelenleg ezek:

./bin/daveconv_linux64 OUTFILE INFILE[:[OPTIONS][,THRESHOLD[,MAXDUR]]] [LOADADDR]
Options (comma separated list):
    r:  reserve 8 bytes at the beginning of the envelope buffer
    h:  hold previous frequency if volume is zero
    z:  zero frequency if volume is zero
    e0..e4: envelope buffer size (2^(N+9) bytes, default: e3 (4096))
    n:  non-interleaved envelope data
    p1..p8: number of note parameter tables, default: p2 (2048 bytes)
    d:  use only one note parameter table (same as p1)
    s:  find the threshold and max. duration for minimum data size
    f:  find the threshold and max. duration for minimum file size


A leglényegesebbek az "e" és "n" (burkológörbe terület mérete és formátuma), a "d" vagy "p", és a LOADADDR. Az utóbbi általában ugyanaz, mint a lejátszó forráskódjában a musicData cím, és ha negatív, akkor a zene adat a burkológörbék elé kerül. Itt például 0x1000 a helyes érték:

Code: ZiLOG Z80 Assembler
  1. ; xorplay8K.s
  2.  
  3. ; daveconv file.xr8 file.dav:e4,n,f 0x1000
  4.  
  5. musicInit:
  6.         ld      hl, (trackOffsets)
  7.         xor     a
  8.         di
  9.         out     (0a7h), a
  10.         inc     a
  11.         ld      (envTimer0), a
  12.         ld      (envTimer1), a
  13.         ld      (envTimer2), a
  14.         ld      (envTimer3), a
  15.         ld      (trackPtr0), hl
  16.         ld      hl, (trackOffsets + 2)
  17.         ld      (trackPtr1), hl
  18.         ld      hl, (trackOffsets + 4)
  19.         ld      (trackPtr2), hl
  20.         ld      hl, (trackOffsets + 6)
  21.         ld      (trackPtr3), hl
  22. ;       ei
  23.         ret
  24.  
  25.     macro daveChnPlay fr, vr, lenvt, ltptr
  26. .lenv:  ld      a, 1                    ; * envelope timer
  27.         dec     a
  28.         jr      nz, .l5
  29. .ltp:   ld      hl, trackOffsets + 8    ; * data pointer
  30.         or      (hl)
  31.         inc     hl
  32.         jr      nz, .l1
  33.         or      (hl)
  34.       if fr == 0a0h
  35.         jr      z, musicRestart
  36.       endif
  37.         inc     hl
  38.         ld      b, (hl)
  39.         inc     hl
  40.         ld      e, (hl)
  41.         inc     hl
  42.       if fr != 0a6h
  43.         ld      d, (hl)
  44.         inc     hl
  45.       endif
  46.         ld      (.ltp + 1), hl
  47.         jp      .l4
  48. .l1:    ld      d, high noteParamTable
  49.         ld      b, a
  50.         djnz    .l2
  51.         ld      d, high (noteParamTable + 0400h)
  52.         ld      a, (hl)
  53.         inc     hl
  54. .l2:    ld      (.ltp + 1), hl
  55.         ld      l, a
  56.         ld      h, d
  57.         ld      a, (hl)
  58.         inc     h
  59.         ld      b, (hl)
  60.         inc     h
  61.         ld      e, (hl)
  62.       if fr != 0a6h
  63.         inc     h
  64.         ld      d, (hl)
  65.       endif
  66.       if fr == 0a0h
  67.         or      a
  68.         jr      z, musicRestart
  69.       endif
  70. .l4:    ld      l, b
  71.         ld      h, a
  72.         and     0fh
  73.         ld      (.lenv + 1), a          ; duration
  74.         xor     h
  75.         rra
  76.         rra
  77.         rra
  78.         rra                             ; envelope H
  79.         add     a, high envelopeData
  80.         ld      h, a
  81.       if fr != 0a6h
  82.         ld      (.l6 - 2), de
  83.       else
  84.         ld      a, e
  85.         ld      (.l6 - 1), a
  86.       endif
  87.         jp      .l6                     ; Carry = 0
  88. .l5:    ld      (.lenv + 1), a
  89.         ld      hl, envelopeData        ; * envelope position
  90.         inc     hl
  91.       if fr != 0a6h
  92.         ld      de, 0000h               ; * frequency
  93.       else
  94.         ld      a, 00h                  ; * channel 3 control
  95.       endif
  96. .l6:                                    ; Z = 0
  97.       if fr != 0a6h
  98.         ld      a, e
  99.       endif
  100.         out     (fr), a
  101.       if fr != 0a6h
  102.         ld      a, d
  103.         out     (fr + 1), a
  104.       endif
  105.         ld      a, (hl)
  106.         out     (vr), a
  107.         rla
  108.         jr      c, .l7
  109.         ld      (.l5 + 4), hl
  110. .l7:    ld      a, h
  111.         add     a, c                    ; C = high 1000h
  112.         ld      h, a
  113.         ld      a, (hl)
  114.         out     (vr + 4), a
  115.  
  116. lenvt   equ     .lenv + 1
  117. ltptr   equ     .ltp + 1
  118.     endm
  119.  
  120. musicRestart:
  121.         call    musicInit
  122.  
  123. musicPlay:
  124.         ld      c, high 1000h
  125.         daveChnPlay 0a0h, 0a8h, envTimer0, trackPtr0
  126.         daveChnPlay 0a2h, 0a9h, envTimer1, trackPtr1
  127.         daveChnPlay 0a4h, 0aah, envTimer2, trackPtr2
  128.         daveChnPlay 0a6h, 0abh, envTimer3, trackPtr3
  129.         ret
  130.  
  131. musicData       equ     1000h
  132.         assert  (musicData & 00ffh) == 0
  133. envelopeData    equ     musicData
  134. noteParamTable  equ     musicData + 2000h
  135. trackOffsets    equ     musicData + 2800h

5
VIDEO: / Re: Mozgó kép Enterprise -on...?
« on: 2020.April.12. 15:17:51 »
Az EP változat ennek a rövidebb videónak a konverziója, de a zene itt is ugyanaz. A MIDI zene időtartama a rövid változathoz tűnik megfelelőnek.

6
Programozás / Re: EXDOS
« on: 2020.April.12. 15:12:30 »
ATTR parancs:

:ATTR FILENÉV +H

Így tehető újra láthatóvá:

:ATTR FILENÉV /H -H

7
VIDEO: / Re: Mozgó kép Enterprise -on...?
« on: 2020.April.11. 21:11:07 »
Új verzió kisebb módosításokkal, remélhetőleg nincsenek új hibák, de előfordulhatnak :oops::
* bad_apple.7z (7977.26 kB - downloaded 121 times.)

- nagyobb file puffer, 128K-s gépen most 48K helyett 57K használható, amivel 15 helyett 12 utántöltést igényel a 2 színű, nem ditherelt videó. Ez azonban még mindig nem igazán jó
- valamivel gyorsabb tömörített adat kicsomagolás, a ditherelt és a 4 színű videóknál talán csökkenti a néhány helyen látható akadozást
- a zene külön file lett, így akár másikra is cserélhető, a musicdat.m4 előállítható MIDI-ből a csomagban található programokkal. Másik animáció is könnyebben készíthető a lejátszó módosítása nélkül

Próbálkoztam a Spectrumos zene konvertálásával is, de egyelőre nem sikerült megoldani az eddig használt zene formátummal, túl nagy lesz az adat. Esetleg még a zenét be lehetne építeni a video adat blokkokba, a képminőség kisebb romlása árán. Így 128K-s gépen is több hely szabadulna fel, hátrány viszont, hogy 10 fps alatt (ami csak dither vagy 4 színű mód esetén fordul elő) a hang is akadozna, és a zene csak a videóval azonos hosszúságú lehetne.

8
VIDEO: / Re: Mozgó kép Enterprise -on...?
« on: 2020.April.08. 11:43:53 »
A forrás egyébként Linuxon fordítható, és mindent tartalmaz a "bad_apple.mkv" file kivételével. Ezt a 4K Video Downloader programmal töltöttem le innen, "MKV High Definition 720p" formátumban. A konvertálásához az mplayer csomagra is szükség van.

Fordításnál használható parancsok:
make - teljes fordítás, mindent előállít az eredeti videóból és forrás file-okból
make FILENÉV - csak a megadott nevű file (pl. videochr.m4) létrehozása vagy frissítése
make package - .7z csomag készítése
make clean - fordításkor létrejött file-ok törlése (a konvertált képek maradnak)
make picclean - konvertált képek törlése, ez az epimgconv paraméterek módosításakor hasznos
make pngclean - PNG képek törlése, általában csak a lejátszási sebesség változtatásánál (10 vagy 15 fps) van rá szükség

Párhuzamos fordítás csak a csatolt Makefile-al működik, de nekem kb. kétszer gyorsabb:
make -O -j 4
* Makefile (3.64 kB - downloaded 112 times.)

Eredeti file-ok:
badapple.asm - a lejátszó forráskódja, a fordítása előtt a zenét konvertálni és tömöríteni kell (make musicdat.m4)
bad_apple.mkv - a letöltött videó
chrconv.cpp - a karakteres formátumra konvertáló program forráskódja
eleclove.mid, envelope.txt - MIDI zene és burkológörbe definíciók, eredetileg Szipucsu töltötte fel itt
Makefile - a fordítás szabályai, itt található az összes parancs és paraméter

9
VIDEO: / Re: Mozgó kép Enterprise -on...?
« on: 2020.April.07. 21:57:28 »
Teljes csomag forrással (az eredeti, YouTube-ról letöltött videót a ~18 MB mérete miatt nem tartalmazza):
* bad_apple.7z (7977.86 kB - downloaded 124 times.)    (újabb verzió található itt)

A ditherelt verzióval még érdemes lenne kísérletezni, valószínűleg jobb beállításokat lehetne találni a kép konverziónál.

10
VIDEO: / Re: Mozgó kép Enterprise -on...?
« on: 2020.April.07. 21:27:30 »
Nem veszi figyelembe a hiba helyét (csak az eltérő bitek számát), de a teljesen fekete vagy fehér karakterek nem lesznek hibásak, mert azok a fix karakterkészletet használják. A 4 színű változathoz valójában még nincs külön konverzió. A gyakorlatban elfogadható lett az eredmény, valószínűleg azért, mert nem sok a pixel hiba.

11
VIDEO: / Re: Mozgó kép Enterprise -on...?
« on: 2020.April.07. 16:02:21 »
Mi alapján választod ki a hiányzó karakterhez a helyettesítő karaktert? Mekkora a "hiba"?

A forráskód csomagban megtalálható lesz a konvertáló program, de röviden így működik:
- először megkeresi a teljes videóban az egyedi karaktereket, rendezi gyakoriság szerint, és a leggyakoribb 60 lesz a karakterkészlet fix része
- 196 karakter képenként változhat, egy blokk = 7 képkocka = (7 * 196 * 8 ) + 32 + (7 * 32 * 24) = 16384 byte, amiből 32 byte kihasználatlan
- a blokkokban minden második karakter fordított byte sorrendű, ennek csak a lejátszó optimalizálásánál van jelentősége
- ha egy képkocka túl sok egyedi karaktert tartalmaz, akkor megkeresi azt a kettőt, amelynek az egyesítése a legkevesebb pixel (bit) hibát eredményezi, és ezekből egy új karakter lesz az eredeti kettő gyakoriságának az összegével. A művelet ismétlődik addig, amíg a karakterkészlet mérete már nem nagyobb a tárolhatónál
- végül a kép karaktereihez (32*24) hozzárendeli az eltérő bitek száma szerint leghasonlóbbakat
- a tömörített file két részből áll, először a fix karakterek, majd a blokk adat
- a blokk adat tömörítése: epcompress -raw -m4 -X -blocksize 8192 -minlen 3 -maxoffs 32768. A 16384 helyett 8192 byte-os blokkok egy keveset javítanak a méreten. A formátum az eredeti "epcompress -m4" lebutított, és azzal nem kompatibilis változata, nem támogat 3 byte-nál rövidebb sorozatokat (ez is megtalálható lesz a forrás csomagban)

Az első konvertált videó egyszerűbb algoritmust használt, amivel több volt a pixel hiba, az újabbal ezek az eltérések:
Code: [Select]
Frame  542: lossy conversion: chrs:   2, pixels:    2, max. pixels/chr:  1
Frame  543: lossy conversion: chrs:  16, pixels:   16, max. pixels/chr:  1
Frame  544: lossy conversion: chrs:  12, pixels:   12, max. pixels/chr:  1
Frame  545: lossy conversion: chrs:   2, pixels:    2, max. pixels/chr:  1
Frame  548: lossy conversion: chrs:   1, pixels:    1, max. pixels/chr:  1
Frame  549: lossy conversion: chrs:  10, pixels:   10, max. pixels/chr:  1
Frame  551: lossy conversion: chrs:   7, pixels:    7, max. pixels/chr:  1
Frame  552: lossy conversion: chrs:  13, pixels:   13, max. pixels/chr:  1
Frame  553: lossy conversion: chrs:  12, pixels:   12, max. pixels/chr:  1
Frame  554: lossy conversion: chrs:  11, pixels:   11, max. pixels/chr:  1
Frame  555: lossy conversion: chrs:   9, pixels:    9, max. pixels/chr:  1
Frame  556: lossy conversion: chrs:   7, pixels:    7, max. pixels/chr:  1
Frame  557: lossy conversion: chrs:  11, pixels:   11, max. pixels/chr:  1
Frame  558: lossy conversion: chrs:  15, pixels:   15, max. pixels/chr:  1
Frame  559: lossy conversion: chrs:  17, pixels:   17, max. pixels/chr:  1
Frame  560: lossy conversion: chrs:  14, pixels:   14, max. pixels/chr:  1
Frame  561: lossy conversion: chrs:  18, pixels:   18, max. pixels/chr:  1
Frame  562: lossy conversion: chrs:  16, pixels:   16, max. pixels/chr:  1
Frame  563: lossy conversion: chrs:  22, pixels:   22, max. pixels/chr:  1
Frame  564: lossy conversion: chrs:  13, pixels:   13, max. pixels/chr:  1
Frame  565: lossy conversion: chrs:  29, pixels:   29, max. pixels/chr:  1
Frame  566: lossy conversion: chrs:  13, pixels:   13, max. pixels/chr:  1
Frame  567: lossy conversion: chrs:   1, pixels:    1, max. pixels/chr:  1
Frame  568: lossy conversion: chrs:   3, pixels:    3, max. pixels/chr:  1
Frame  628: lossy conversion: chrs:  12, pixels:   12, max. pixels/chr:  1
Frame  629: lossy conversion: chrs:   6, pixels:    6, max. pixels/chr:  1
Frame  630: lossy conversion: chrs:   3, pixels:    3, max. pixels/chr:  1

Érdekességként készítettem ditherelt (epimgconv -dither 2 0) és 4 színű verziót is, de ezek sokat növelnek a file méreten, a ditherelt 916756 byte, a 4 színű pedig közel 1 MB, és ezeknél a pixel hiba is több:
* badappld.ep128s (1128.35 kB - downloaded 118 times.)
* badappl4.ep128s (1201.35 kB - downloaded 117 times.)

12
VIDEO: / Re: Mozgó kép Enterprise -on...?
« on: 2020.April.06. 20:24:41 »
Egyelőre ilyen lett a rossz minőségű, de 15 fps (lejátszva 50/3) változat, minden kép csak 32 egyedi karaktert használhat:
* badapple.com (9.89 kB. 126x39 - viewed 109 times.)
* videochr.m4 (759.66 kB - downloaded 105 times.)
A 224 fix karakter keresésére valószínűleg lehetne jobb megoldás, a konvertáló program jelenleg egyszerűen az egész videón leggyakrabban előforduló 224 karaktert használja. A képenként változó 32 viszont a minimális pixel hibára optimalizált.

Még egy lehetséges ötlet a karakterek definiálását képenként "forgatni", azaz az első képhez az első 32 karaktert, a következőhöz a második 32-t, és így tovább. Ez akkor lehet előnyös, ha az egymást követő képek általában hasonló karakterkészletet használnak, de ha sok a mozgás, akkor nem feltétlenül javít sokat.

13
VIDEO: / Re: Mozgó kép Enterprise -on...?
« on: 2020.April.06. 20:09:50 »
mekkora az FPS?

Továbbra is csak 10. :oops: Valójában a karakteres mód nem sokat javít, ha nem nagyon veszteséges, a pixel mód is csak 750K lenne a jobban tömöríthető "karakteres" byte sorrendre átrendezve. De azt 4 MHz-es gépen nehéz lenne lejátszani. 15 fps talán működne ilyen rossz minőségű konverzióval:
* badapple.com (9.89 kB. 126x39 - viewed 104 times.)
* videochr.m4 (518.88 kB - downloaded 104 times.)

14
VIDEO: / Re: Mozgó kép Enterprise -on...?
« on: 2020.April.05. 21:18:33 »
Az első valamennyire működő karakteres lejátszó:
* badapple.com (10.64 kB. 126x42 - viewed 117 times.)
* videochr.m4 (741.72 kB - downloaded 109 times.)

Problémák:
- még nincs megvalósítva a végtelenített lejátszás, és az utántöltés kevés memória esetén. 1 MB-os gépen egyszer lejátssza az egészet, és kilép
- néhány helyen veszteséges a konverzió, összesen 296 karakter rossz 27 képkockán. Egy 16K-s blokk most 7 képet tartalmaz, és 60 karakter fix az egész videón, 196 változhat
- a zene egyelőre Szipucsu egyik MIDI zenéje konvertálva, lehet, hogy hibásan

15
VIDEO: / Re: Mozgó kép Enterprise -on...?
« on: 2020.April.04. 17:56:26 »
Zene céljára van már olyan MIDI, ami használható lenne? Bár teszteléshez átmenetileg bármi megfelelne.

Pages: [1] 2 3 4 5 6 7 8 ... 291