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 ... 287
1
Hardver / Re: Korszerû "magnó"
« on: 2019.February.11. 12:58:19 »
Az, hogy csak ezekkel a .TAP fájlokkal működik és kész.

Az ep128emu forráskódjában a tapeutil/tapeio.cpp tartalmazza a .tap létrehozásához szükséges rutinokat (TapeOutput). Ez talán használható, ha nem probléma, hogy C++ és GPL-es.

Érdekes lehetne még a régebbi tapeserver program hardveres megvalósítása, ez nagy sebességű (~10000 baud) és epcompress tömörítést használ (a TPT valószínűleg csak RLE-t). Hátránya, hogy EP-n ROM vagy .ext bővítőt igényel, és az adatátvitel nem pufferelt (azaz ha egy program karakterenként olvas EXOS 5 hívásokkal, az nagyon lassú, mert minden karakter külön blokk lesz).

2
Programozás / Re: EPROM-ba írható játékok
« on: 2019.February.01. 15:18:35 »
I understand: it would only deserve the effort to program it if the reading velocity of the "pagination inside a pagination" is faster than reading the SD.

Actually, it could be possible to make an SDext port of romfsdev.asm faster than the original version, if it used the SRAM area of the card instead of the EXOS stack on a separate page. But the SRAM is probably already in use for other purposes. Reading uncompressed data from an SD card is still faster in any case, and the capacity is obviously much higher as well.

3
Programozás / Re: EPROM-ba írható játékok
« on: 2019.January.31. 23:29:48 »
Talán valamiért hibás lesz a ROM vége? Az újracsomagolt verzió néhány száz byte-tal rövidebb.

4
Programozás / Re: EPROM-ba írható játékok
« on: 2019.January.31. 16:41:04 »
And how about the SD-reader?. Only 64KB from the AM29F400BT 512KB are used. It would be great to fill that space with games.

I do not know if newer versions of the SD card interface are different, but this hardware may be more difficult to use because it is a cartridge, and all memory and I/O has to be accessed via segment 07h, which is split into smaller areas of ROM, RAM, and registers. So, programs need to be adapted specifically for running on SDext. It should be possible however to modify romfsdev.asm to work on SDext, with a slight performance cost because of the more complex memory paging. I guess one more reason why the ROM is not used much could be that there is a lot more space for programs on the SD cards. :)

5
Programozás / Re: EPROM-ba írható játékok
« on: 2019.January.31. 14:15:28 »
Nagyobb ROM bővítésre van valamilyen elterjedt megoldás? A cartridge csak 64K méretű lehet, így azonban gyakran kell az EPROM-ot cserélni. :)

Szerk.: a fenti módosított Treasure Cave, ha esetleg hasznos valamilyen célra:
* TCAVE.COM (0.35 kB. 83x1 - viewed 26 times.)
* TCAVE.PRG (66.97 kB - downloaded 25 times.)

6
Programozás / Re: EPROM-ba írható játékok
« on: 2019.January.30. 19:19:37 »
Újracsomagolt változat, bár a PRG file továbbra is sok tömörített adatot tartalmaz, amihez már nem lenne elég csak a betöltőt átalakítani:
* tcave.rom (64 kB - downloaded 28 times.)
Talán még elférhetne valamilyen kis méretű program.

7
Programozás / Re: Randomize - véletlen szám generálása
« on: 2019.January.19. 18:47:42 »
Speccyn előszeretettel használták a ROM-ot táblázatként :D

Jól használható lehet ilyen célra tömörített adat is, ha a játék egyébként is tartalmaz ilyet, különösen a nagy méretű, m0 formátumú blokkok amikben az adat eredetileg sem volt túl egyszerű (pl. sok egymás után ismétlődő 0).

De külön véletlenszám táblázat általában nem igazán éri meg, legfeljebb ha nagyon fontos a sebesség, például grafikai célú használatnál. És ez a rutin is csak néhány utasítás, ami nem nagy különbség a táblázat olvasáshoz képest, és nem ismétlődik a kimenet 256 byte után. Még a fenti "bonyolultabb" random rutin is csak 38 byte, és CALL/RET utasítással együtt 193 ciklus alatt fut le, ami a programtól függően elfogadható lehet.

8
Programozás / Re: Randomize - véletlen szám generálása
« on: 2019.January.19. 12:17:59 »
de aztán valahol azt olvastam, hogy szerencsésebb inkább a 16-tal osztás

Ez az algoritmustól függ, az itt használtaknál nem igazán számít, de PC-n gyakori ez a megoldás:

  y[n] = (y[n - 1] * a + b) % c

ahol c sokszor 2 hatványa, például 2^32, mert azzal nagyon egyszerű és gyors lehet a kód, x86 CPU-n a szorzás egy utasítással elvégezhető, a % műveletet pedig az eredmény 32 bitesre csonkítása automatikusan megoldja. Így azonban az alsó N bit legfeljebb 2^N hosszúságú sorozatot ismételhet, ez könnyen belátható, mivel szorzásnál és összeadásnál az alsó bitek nem függhetnek a felsőktől. Jobb minőségű megvalósításnál a c prímszám, lehetőleg Mersenne szám, azaz 2 hatványánál eggyel kevesebb, például 0x7FFFFFFF, így már nincs különbség a bitek véletlenszerűsége között.

9
Programozás / Re: Randomize - véletlen szám generálása
« on: 2019.January.18. 13:11:45 »
Elvileg jobb minőségű, de lassabb véletlenszám generátor rutinok. Ezeken valószínűleg még lehetne javítani és optimalizálni.
Code: ZiLOG Z80 Assembler
  1. ; A = RND(0..255)
  2.  
  3. random:
  4. .l1:    ld      hl, 7fffh               ; *
  5. .l2:    ld      a, l
  6.         add     hl, hl
  7.         xor     h
  8.         ld      l, a
  9.         xor     h
  10.         ld      h, a
  11.         ld      (.l1 + 1), hl
  12.         ld      c, l
  13. .l3:    ld      hl, 68ach               ; *
  14. .l4:    ld      b, 24h                  ; *
  15.         ld      a, h
  16.         ld      (.l4 + 1), a
  17.         ld      a, b
  18.         ld      b, l
  19.         add     hl, hl
  20.         xor     h
  21.         rla
  22.         ld      l, a
  23.         ld      a, b
  24.         rra
  25.         rlca
  26.         ld      h, a
  27.         ld      (.l3 + 1), hl
  28.         add     a, c
  29.         xor     l
  30.         ret
  31.  
  32. randomize:
  33.         ld      bc, 0027h               ; RANDOM_IRQ
  34.         exos    16
  35.         ld      l, d
  36.         ld      a, r
  37.         and     7fh
  38.         ld      h, a
  39.         or      l
  40.         jr      nz, random.l2
  41.         dec     hl
  42.         jr      random.l2
  43.  
  44. ; L = A = RND(0..L-1)
  45.  
  46. rnd8:
  47.         dec     l
  48. .l1:    ld      e, l
  49.         ld      d, l
  50.         ld      a, e
  51.         rra
  52.         or      e
  53.         ld      e, a
  54.         rra
  55.         srl     a
  56.         or      e
  57.         ld      e, a
  58.         rra
  59.         rra
  60.         rra
  61.         rra
  62.         and     0fh
  63.         or      e
  64.         ld      e, a
  65. .l2:    call    random
  66.         and     e
  67.         ld      l, a
  68.         ld      a, d
  69.         cp      l
  70.         jr      c, .l2
  71.         ld      a, l
  72.         ld      h, 0
  73.         ret
  74.  
  75. ; HL = BC = RND(0..HL-1)
  76.  
  77. rnd16:
  78.         dec     hl
  79.         ld      e, l
  80.         ld      d, h
  81.         ld      a, d
  82.         or      a
  83.         jr      nz, .l1
  84.         ld      a, e
  85. .l1:    ld      e, a
  86.         rra
  87.         or      e
  88.         ld      e, a
  89.         rra
  90.         srl     a
  91.         or      e
  92.         ld      e, a
  93.         rra
  94.         rra
  95.         rra
  96.         rra
  97.         and     0fh
  98.         or      e
  99.         ld      e, a
  100.         and     d
  101.         jr      z, .l2
  102.         ld      d, e
  103.         ld      e, 0ffh
  104. .l2:    push    hl
  105.         call    random
  106.         and     d
  107.         push    af
  108.         call    random
  109.         pop     bc
  110.         and     e
  111.         ld      c, a
  112.         pop     hl
  113.         ld      a, l
  114.         cp      c
  115.         ld      a, h
  116.         sbc     a, b
  117.         jr      c, .l2
  118.         ld      l, c
  119.         ld      h, b
  120.         ret

10
Programozás / Re: Randomize - véletlen szám generálása
« on: 2019.January.16. 22:35:33 »
Ha a teljesen egyenletes eloszlás a fontos, akkor talán célszerűbb lenne a generálandó számoknak megfelelő méretű táblázatot 0 és 15 közötti értékekkel egyszerű növekvő sorrendben feltölteni, és utána a táblázatból véletlenszerű címről választani a következő elemet, amelynek a helyére az utolsó kerül, és a táblázat mérete eggyel csökken:
Code: C
  1. extern unsigned int rnd(unsigned int range);
  2.  
  3. #define RND_TABLE_SIZE 400
  4.  
  5. static unsigned char rnd_table[RND_TABLE_SIZE];
  6. static unsigned int rnd_left = 0;
  7.  
  8. void rnd_table_init(void)
  9. {
  10.   unsigned int  i;
  11.   for (i = 0; i < RND_TABLE_SIZE; i++)
  12.     rnd_table[i] = i & 15;
  13.   rnd_left = RND_TABLE_SIZE;
  14. }
  15.  
  16. unsigned char rnd_table_next(void)
  17. {
  18.   unsigned int  n;
  19.   unsigned char c;
  20.   if (!rnd_left)
  21.     return 0xFF;
  22.   n = rnd(rnd_left);
  23.   c = rnd_table[n];
  24.   rnd_table[n] = rnd_table[--rnd_left];
  25.   return c;
  26. }

11
Programozás / Re: Randomize - véletlen szám generálása
« on: 2019.January.16. 18:04:36 »
A Xorgame zene lejátszója így választ legfeljebb 8 zene közül:

Code: C
  1. static unsigned char    tune_cnt;
  2. static unsigned char    current_tune = 0;
  3. static unsigned char    rnd_tune_weights[8] = {
  4.   30, 30, 30, 30, 30, 30, 30, 30
  5. };
  6.  
  7. static unsigned char get_random_tune(void)
  8. {
  9.   unsigned char n = rnd8(tune_cnt * 30 - 1, 255);
  10.   unsigned char s = 0;
  11.   unsigned char i, j;
  12.   if (tune_cnt < 2)
  13.     return 0;
  14.   for (i = 0; i < tune_cnt; i++) {
  15.     s = s + rnd_tune_weights[i];
  16.     if (n < s)
  17.       break;
  18.   }
  19.   n = i;
  20.   s = rnd_tune_weights[n];
  21.   rnd_tune_weights[n] = 0;
  22.   j = s / (unsigned char) (tune_cnt - 1);
  23.   s = s - (j * (unsigned char) (tune_cnt - 1));
  24.   for (i = 0; i < tune_cnt; i++) {
  25.     if (i == n)
  26.       continue;
  27.     if (s > 0) {
  28.       rnd_tune_weights[i] += (j + 1);
  29.       s--;
  30.     }
  31.     else {
  32.       rnd_tune_weights[i] += j;
  33.     }
  34.   }
  35.   return n;
  36. }

Ugyanaz a zene nem fordulhat elő kétszer egymás után, és a régebben játszottaknak nagyobb a valószínűsége.

12
Programozás / Re: Randomize - véletlen szám generálása
« on: 2019.January.16. 17:53:53 »
sajnos nem igazán egyenletes az elemek eloszlása, van, hogy egy-egy elem csak nagyon soká jön.

Lehet, hogy ez csak véletlenül fordult elő, de az probléma, ha következetesen mindig ugyanaz az elem ritka. Mivel a függvény az R regisztert is használja, elvileg az is ronthatja a kimenet minőségét, ha a hívások időzítése nem szerencsés. A sebesség mennyire fontos?

13
Interface / Re: USB to Enterprise serial
« on: 2018.December.25. 13:48:38 »
I can send messages back and forth easily.  I've even managed to send and receive whole text files - although for now I have to deal with the end of file manually, because there's no notion of files on a serial stream.

It may be possible to modify the tapeserver program I wrote some time ago to use serial I/O. It allows for accessing a directory of PC files via an EXOS device, similarly to FILE: on ep128emu. Although the baud rate of the EP serial port (9600 maximum?) is not actually better than that of tapeserver, it could still be more convenient to use than audio based communication.

14
CPC-ről / Re:Operation Alexandra
« on: 2018.December.23. 23:10:19 »
Operation Alexandra teszt verzió, már végigvittem párszor, de lehet olyan hiba, amit nem vettem észre. Ep64-en nem fut, nem tudtam lecsökkenteni az LPT méretét a havazás effekt miatt, de amúgy is villogna EP64-en, egy kis küzdelmembe telt, mire a villogást sikerült megszüntetni.

Nekem néha villog 128K-s konfiguráción, bár ez lehet a játék része is. :) A decompress_m4.s-ből egyébként itt találhatók újabb (kisebb/gyorsabb) változatok, ha nem is nagy az eltérés, későbbi programokban talán még hasznos lehet.

15
Interface / Re: USB to Enterprise serial
« on: 2018.December.23. 19:58:12 »
Could this hardware be combined with the MIDI port, assuming that gets built? With hardware serial/parallel conversion, it would probably have some advantages compared to the built-in serial port on B7h, such as higher baud rate.

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