Welcome, Guest. Please login or register.


Author Topic: SID lejátszó (Read 249681 times)

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #630 on: 2017.March.03. 19:11:12 »
Az M64 rövidítés egyszerű (ugyanúgy fordítható, mint a sid_conv.cpp):
Oké, a rövidítést közzéteszem ott is.

Tulajdonképpen a sid_conv.cpp is könnyen "Spectrumosítható" lenne, csak akkor mindent újra kellene konvertálni.
Igen, az újrakonvertálást akarom minden áron elkerülni, azzal már nincs kedvem szüttyögni :D
És az EP formátummal sincs semmi baj :)
Nem tudom, ezt valószínűleg a WOS-on tudják eldönteni, melyik megoldás használhatóbb. De a maximális file méret csökkenése szerintem nem lenne nagy probléma, a legtöbb zenének elég az 5D00h is, a kivételek (pl. IK) pedig rövidíthetők. Ami ilyen sok helyet igényel, az valószínűleg lényegesen hosszabb 2:43-nál. :)
igen :D , az a tippem, hogy a legnagyobb fájl se érné el 2:43-as hossznál a 16kb-t sem :D

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #631 on: 2017.March.03. 20:08:12 »
Az OUT (0FDh), A-s lapozásnál lehet, hogy érdemes lenne az A 6. bitjét beállítani (azaz például 0 helyett 40h-t írni)? Most olvasom, hogy a +2A és +3 gépeken nem működik a lapozás, ha a 16 bites cím nem 01xxxxxxxxxxxx0xb, de az adat 6. bitje nem tűnik kihasználtnak.

Bár ez a többi gépen csak lassabb, mert így contended lesz a cím (1. lap).
« Last Edit: 2017.March.03. 20:14:20 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #632 on: 2017.March.03. 20:21:30 »
Az OUT (0FDh), A-s lapozásnál lehet, hogy érdemes lenne az A 6. bitjét beállítani (azaz például 0 helyett 40h-t írni)? Most olvasom, hogy a +2A és +3 gépeken nem működik a lapozás, ha a 16 bites cím nem 01xxxxxxxxxxxx0xb, de az adat 6. bitje nem tűnik kihasználtnak.

Bár ez a többi gépen csak lassabb, mert így contended lesz a cím (1. lap).
Szerintem (de lehet rosszul gondolom) az a baj, hogy alap ROMkiosztás a +2a/+3-as gépeken a ROM0/ROM1, és nem állítottam ezen a regiszteren, ezért amikor kiadjuk a OUT (0FDh),A -t ROM1-et választjuk ki, és nekünk a ROM3 kéne.
Kipróbáltam, UnrealSpeccyn működik is , marad a ROM3, vagyis a 48k Basic :)
Code: [Select]
  ld a,04h
   ld bc,1ffdh
   out (c),a
   ld a,10h
   ld b,7fh
   out (c),a
   out (0fdh),a

Miért is vannak agyonbonyolítva a +2 utáni verziók? Egyszerűbben ezt nem lehetett volna?
« Last Edit: 2017.March.03. 20:33:30 by geco »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #633 on: 2017.March.03. 20:42:34 »
Kipróbáltam, UnrealSpeccyn működik is , marad a ROM3, vagyis a 48k Basic :)

Az utolsó OUT (0FDH),A biztosan kell? Mindenesetre ez a kódrészlet csak a TAP betöltésnél lényeges, a fontosabb kérdés, hogy a többi FDh-s lapozás maradhat-e, azaz hibás a FAQ és valójában nem kell beállítani a 6. bitet?

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: SID lejátszó
« Reply #634 on: 2017.March.03. 20:44:58 »
És ott van még az is, hogy ha jól tudom ezeken az újabb 128-asokon más a lassú/gyors RAM kiosztás is.

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #635 on: 2017.March.03. 20:50:55 »
Az utolsó OUT (0FDH),A biztosan kell? Mindenesetre ez a kódrészlet csak a TAP betöltésnél lényeges, a fontosabb kérdés, hogy a többi FDh-s lapozás maradhat-e, azaz hibás a FAQ és valójában nem kell beállítani a 6. bitet?
Nem, csak a teszt miatt volt benne :)
Igen, töltés előtt kiadjuk ezt a kódot, az out (0fdh),a nélkül , lejátszás közben meg pont jók lesznek az out (0fdh),a-k

És ott van még az is, hogy ha jól tudom ezeken az újabb 128-asokon más a lassú/gyors RAM kiosztás is.
Igen, de szerencsére a 0-ás , és a 2-es lap, ahogy látom mindenhol gyors, lejátszás közben ezek vannak használatban :)

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #636 on: 2017.March.04. 00:16:53 »
Igazad volt, az out(FD),a nem megy +2a-tól fölfelé, és Scorpionon, lefelé, és Pentagonon megy,
Scorpionon 50h-t hozzá vagyolva működik, és +3-on is, lehet csinálok egy önmódosító kódot, ha ilyen gépeken lett betöltve a program, akkor módosítsa magát.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #637 on: 2017.March.04. 10:26:13 »
Scorpionon 50h-t hozzá vagyolva működik, és +3-on is, lehet csinálok egy önmódosító kódot, ha ilyen gépeken lett betöltve a program, akkor módosítsa magát.

Bár nem sok gyakorlati jelentősége van, a sidsynth.s-ben található egy XOR A-s lapozás, amit így LD A, n-re kell módosítani, tehát kis mértékben változik az időzítés:
Code: ZiLOG Z80 Assembler
  1. ; IRQ cost = ~481 cycles
  2. ; N = (fZ80 / fIRQ - 481) / 345 = 10255.304 / fM64 - 1.394
  3.         ld      b, a
  4.         ld      de, 1
  5.         ld      hl, 0f4eh               ; 10255.304 * 256 = 280F4Eh
  6.         ld      a, 28h
  7. spdlp1  add     hl, hl
  8.         rla
  9.         sub     b
  10.         jr      nc, spdlp2
  11.         add     a, b
  12. spdlp2  ccf
  13.         rl      e
  14.         rl      d
  15.         jr      nc, spdlp1
  16.         ld      hl, 10000h - 229        ; -1.394 * 256 + 128
Itt még az önmódosító kód megoldása sem egyszerű, mert a módosítandó utasítás külön forrás file-ban van 8 példányban, és még tömörítve is. :oops: Ezért lehet, hogy fix LD A, 40h vagy LD A, 50h kell helyette, ami még lassít egy keveset a vezérlésen.

A sok extra kód miatt esetleg előfordulhat, hogy már nem marad elég hely a BA00h-BFFFh területen, de ha az ilyen gépeket csak a TAP verzió támogatja, akkor talán nem probléma, mert a TAP betöltő egyébként rövidebb.
« Last Edit: 2017.March.04. 10:32:01 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #638 on: 2017.March.04. 11:01:18 »
Bár nem sok gyakorlati jelentősége van, a sidsynth.s-ben található egy XOR A-s lapozás, amit így LD A, n-re kell módosítani, tehát kis mértékben változik az időzítés:
Már működik is, épp teszteltem +3-on, most is az megy :D Szívtam vele egy keveset, mert két helyen kell patchelni, egyszer az elején, és egyszer a SidSynth kicsomagolása után :) Az időzítést itt nem módosítottam, mert csak 3 ciklussal nőtt a vezérlés, de megteszem.

Itt még az önmódosító kód megoldása sem egyszerű, mert a módosítandó utasítás külön forrás file-ban van 8 példányban, és még tömörítve is. :oops: Ezért lehet, hogy fix LD A, 40h vagy LD A, 50h kell helyette, ami még lassít egy keveset a vezérlésen.
csak a fix 50h működik, tegnap elszórakoztam pár órát a tesztelésekkel, mindegyik emu (SPecemu, ZXSpin, és Unreal debugger kezelése macerás)
A sok extra kód miatt esetleg előfordulhat, hogy már nem marad elég hely a BA00h-BFFFh területen, de ha az ilyen gépeket csak a TAP verzió támogatja, akkor talán nem probléma, mert a TAP betöltő egyébként rövidebb.
Megoldom, az is menjen ezeken a fostalicskákon is :D Amúgy nem lett olyan sokkal hosszabb a kód.
AZ MB02+ csak a tap loadert érintette, a lapozás meg 2 call a főprogramban, az ellenőrző, és cserélő bájtokat 4200h-s csomagba tettem :)

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #639 on: 2017.March.04. 11:07:30 »
Ja, de itt a 4200-as kód a program végén van, akkor is megoldom :)
Teszteltem a +3-akat SPecemuban, és ZXSpinben, és a Scorpion 256-ot Unreal Speccyben, működnek :)
Most megnézem a TZX-et, hogy abból mit lehet kihozni.

Szerk:
Megnéztem, a 4200-as kód tényleg a végén van, de elfelejtettem, hogy a loader meg az elejére került :D
Jók vagyunk, 0bfabh a vége mindenféle módosítás nélkül :)
« Last Edit: 2017.March.04. 11:12:45 by geco »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #640 on: 2017.March.04. 11:11:00 »
Hely megtakarítása céljából egyébként a kicsomagoló rutin is cserélhető lehetne a decompress_m2_new.s módosított változatára (ami rövidebb), mivel itt nem fontos, hogy ne használja a BC', DE' és HL' regisztereket. A kimenetnek sem kellene 8K-s határon végződnie, ha ez esetleg hasznos.
« Last Edit: 2017.March.04. 11:17:29 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID lejátszó
« Reply #641 on: 2017.March.04. 11:40:33 »
Hely megtakarítása céljából egyébként a kicsomagoló rutin is cserélhető lehetne a decompress_m2_new.s módosított változatára (ami rövidebb), mivel itt nem fontos, hogy ne használja a BC', DE' és HL' regisztereket. A kimenetnek sem kellene 8K-s határon végződnie, ha ez esetleg hasznos.
Egyelőre jók vagyunk a 8k blokkos kicsomagolóval :)

Itt az új verzió , remélem nem felejtettem el minden forrást, amit módosítani kellett betenni, meg remélem egyik verzióból se felejtettem megcsinálni az új időzítést számláló megoldást. (minimális lett az eltérés)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #642 on: 2017.March.04. 13:38:21 »
meg remélem egyik verzióból se felejtettem megcsinálni az új időzítést számláló megoldást. (minimális lett az eltérés)

A sebesség számítása valójában ugyanaz maradt, mint a korábbi verzióban (a -227 helyett kellett volna -229). :) De a kis eltérés miatt 50, 60, 100, 120, 150, 200 és 250 Hz-nél ennek egyébként sincs hatása az eredményre. A +2A/+3 gépeknél akkor változna (csak 60 Hz-nél), ha átlagosan legalább 9 ciklust lassul a vezérlés. Tehát a gyakorlatban nincs különösebb jelentősége.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #643 on: 2017.March.04. 15:03:49 »
Egyelőre jók vagyunk a 8k blokkos kicsomagolóval :)

Ha esetleg mégis hasznos lenne később valamilyen célra, ez a változat 145h helyett 116h méretű, illetve a SIZE_OPTIMIZED engedélyezésével 10Dh. Bár a sebességet még nem teszteltem, és azt sem, hogy működik-e. :oops:
[ Guests cannot view attachments ]

A használata hasonló, de az IX helyett a HL' regisztert használja, az A helyett pedig az E'-t. Elrontja a BC, HL, BC' és D' regisztereket, az IX-et viszont nem. A blokk méret és a kezdőcím (DE) tetszőleges lehet a 3. lapon, de a kimeneti adat nem léphet át laphatárt, azaz például nem lehet a blokk első fele F000-FFFFh területen, a második fele pedig C000-CFFFh-n.

Fix blokk méret és 8K-s határig helykitöltés nélkül a tömörítés is valamivel jobb lehet, de ez csak kis különbség (sidsynth+dactable: 517 helyett 514 byte, képernyő: 1321 helyett 1310 byte).
« Last Edit: 2017.March.04. 20:31:25 by IstvanV »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: SID lejátszó
« Reply #644 on: 2017.March.04. 19:44:12 »
:lol:Megkérdezzem?
Én csak a két chip envelope grafikonját néztem (mert csak azt találtam), ott nem láttam eltérést.

Esetleg a legnépszerűbb vagy legpontosabb emulátor kimenetét tesztelni lehetne, ha nincs forráskód, akkor egyszerű WAV file-ba felvenni például 1 másodpercenként növekvő hangerejű hangot 0-tól 15-ig, és az alapján már lehet táblázatot készíteni.