Welcome, Guest. Please login or register.


Author Topic: CPC (Read 457933 times)

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: CPC
« Reply #495 on: 2010.August.19. 16:00:20 »
Összehasonlítás:
  (Attachment Link)
Balról jobbra az első a CPC, a második az első teszt verziók (BIAS = F8h), a harmadik pedig az ep128.hu-ra is felkerült "kész" változat (BIAS = D8h).
Teljesen jók lettek a végleges verzió színei, így látszik a különbség, de ha egymás után néznénk a képeket, akkor fel se tűnne semmi különbség :)
Az eredeti EP-s Sorceryhez képest az új verzió megegyezik színügyileg a CPC-ssel ;)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: CPC
« Reply #496 on: 2010.August.19. 17:48:19 »
Teljesen jók lettek a végleges verzió színei, így látszik a különbség, de ha egymás után néznénk a képeket, akkor fel se tűnne semmi különbség :)
Az eredeti EP-s Sorceryhez képest az új verzió megegyezik színügyileg a CPC-ssel ;)

Tulajdonképpen két észrevehető probléma van: a "pastel yellow" majdnem fehér (ez a választott BIAS eredménye), a szürke szín pedig világosabb és kékes árnyalatú (mivel ez nem BIAS, hanem paletta szín, ezért lehetne változtatni pl. F8h-ra, de nem tudom, melyik nézne ki jobban - az emulátorban ki lehet próbálni játék közben "am 0" és "sr 3f4000 3f4fff b6 ff 7 6, * * f8 *" monitor parancsokkal). Bár egy-két másik szín ezeknél jobban eltér a CPC-től, de ez a két szín nagyon gyakran használt, ezért könnyebb észrevenni.
« Last Edit: 2010.August.19. 17:51:31 by IstvanV »

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: CPC
« Reply #497 on: 2010.August.30. 21:33:55 »
Ha adhatok tippeket a következő játékra, esetleg Rick Dangerous? Vagy Barbarian (kardozós)?
 :oops:

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: CPC
« Reply #498 on: 2010.August.31. 08:42:25 »
Beépítettem a Sound: hívást a programba, elkezd zenélni, de rövid időn belül elszáll, azt észrevettem, hogy b1,b2,b3 lapokat elrontja, vagyis ebből az utsó kettőt nekem kell elrontanom, azt vissza is állítom, viszont valamikor a teljes lapozás elrontódik, sztem akkor amikor EXOS hívás közben történik megszakítás, egyelőre a verem nem átállítására gondolok, de majd még tesztelem.

Code: ZiLOG Z80 Assembler
  1. int50   push    hl
  2.         ld      a,03h
  3.         dec     a
  4.         jr      nz,int50hz
  5.         push    bc
  6.         push    de
  7.         push    ix
  8.         push    iy
  9.         in      a,(0b2h)
  10.         push    af
  11.         in      a,(0b3h)
  12.         push    af
  13.         xor     a
  14.         out     (0b3h),a
  15.         dec     a
  16.         out     (0b2h),a
  17.         in      a,(0b1h)
  18.         push    af
  19.         call    0ebd6h
  20.         pop     af
  21.         out     (0b1h),a
  22.         pop     af
  23.         out     (0b3h),a
  24.         pop     af
  25.         out     (0b2h),a
  26.         inc     a
  27.         call    nz,8c31h
  28.         pop     iy
  29.         pop     ix
  30.         pop     de
  31.         pop     bc
  32.         ld      a,03h
  33. int50hz ld      (int50+2),a
  34.         ld      hl,6848h          ;game speed
  35.         dec     (hl)
  36.         ld      a,30h
  37.         out     (0b4h),a
  38.         pop     hl
  39.         pop     af
  40.         ei
  41.         ret
  42.  
« Last Edit: 2010.August.31. 08:46:22 by geco »

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: CPC
« Reply #499 on: 2010.August.31. 10:08:08 »
Ha adhatok tippeket a következõ játékra, esetleg Rick Dangerous? Vagy Barbarian (kardozós)?
Már meglévõ Spectrum átiratok CPC-s átírása sem rossz ötlet, de szerintem jobb lenne olyan játékokat is átírni, amik még nem léteznek EP-re. "Pikánsabb" lenne, ha új játékok címei kerülnének a repertoárba, mint hogy sok játékból van két példány, egy spectrumos és egy CPC-s.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Ep128

  • EP addict
  • *
  • Posts: 1849
  • Country: hu
    • Honlapom
Re: CPC
« Reply #500 on: 2010.August.31. 11:36:10 »
Ha adhatok tippeket a következõ játékra, esetleg Rick Dangerous? Vagy Barbarian (kardozós)?
 :oops:

... én már elõbb szóltam (pár hónapja) a Nato Assault -ra szavazva!  :oops: :ds_icon_cheesygrin:
(Az egyetlen "Command & Conquer" -féle játék, ami a gépünkön is fut(na). Egy ocsmány, színhibás, ráadásul csak egyik féllel játszható (vagyis hiányos) átirat van belõle.)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: CPC
« Reply #501 on: 2010.August.31. 13:09:04 »
Beépítettem a Sound: hívást a programba, elkezd zenélni, de rövid időn belül elszáll, azt észrevettem, hogy b1,b2,b3 lapokat elrontja, vagyis ebből az utsó kettőt nekem kell elrontanom, azt vissza is állítom, viszont valamikor a teljes lapozás elrontódik, sztem akkor amikor EXOS hívás közben történik megszakítás, egyelőre a verem nem átállítására gondolok, de majd még tesztelem.

Ezt a részt is át kell írni:

Code: ZiLOG Z80 Assembler
  1. .   8C5E  21 48 68     LD    HL, 6848
  2. .   8C61  35           DEC   (HL)
  3. .   8C62  F1           POP   AF
  4. .   8C63  C1           POP   BC
  5. .   8C64  D1           POP   DE
  6. .   8C65  2A EC 92     LD    HL, (92EC)
  7. .   8C68  E3           EX    (SP), HL
  8. .   8C69  C9           RET

Helyette:

Code: ZiLOG Z80 Assembler
  1.         POP   AF
  2.         POP   BC
  3.         POP   DE
  4.         POP   HL
  5.         RET

Az EXOS hívások közben történő megszakításokra talán megoldás lehet ez is:

Code: ZiLOG Z80 Assembler
  1.         push  af
  2.         in    a, (0b2h)
  3.         inc   a
  4.         jr    z, intExos
  5.         ...
  6. intExos pop   af
  7.         ret

Azaz egyszerűen visszatér, de nem törli a B4h portot és nem engedélyezi újra a megszakítást. Ez akkor működik jól, ha az EXOS hívás általában rövid ideig tart (kevesebb, mint a két megszakítás közötti idő - nem tudom, erre mennyi esély van, mert az EXOS hívások nagyon lassúak), egyébként elveszhetnek megszakítások, de legalább nem fagy le, legalábbis akkor nem, ha a 2. lapra valóban csak EXOS hívás írhat FFh-t.
A "rendes" megoldás az lenne, ha ilyenkor a megszakítás idejére beállítaná a játéknak megfelelő lapozást (ez a 6848h csökkentéséhez is kell) és vermet (ez csak a 8C31h híváshoz).

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: CPC
« Reply #502 on: 2010.August.31. 14:32:19 »
Ezt a részt is át kell írni:

Code: ZiLOG Z80 Assembler
  1. .   8C5E  21 48 68     LD    HL, 6848
  2. .   8C61  35           DEC   (HL)
  3. .   8C62  F1           POP   AF
  4. .   8C63  C1           POP   BC
  5. .   8C64  D1           POP   DE
  6. .   8C65  2A EC 92     LD    HL, (92EC)
  7. .   8C68  E3           EX    (SP), HL
  8. .   8C69  C9           RET

Helyette:

Code: ZiLOG Z80 Assembler
  1.         POP   AF
  2.         POP   BC
  3.         POP   DE
  4.         POP   HL
  5.         RET
Ez a változtatás megtörtént, a rutin nézegetése közben észrevettem a turpisságot :)

Az EXOS hívások közben történő megszakításokra talán megoldás lehet ez is:

Code: ZiLOG Z80 Assembler
  1.         push  af
  2.         in    a, (0b2h)
  3.         inc   a
  4.         jr    z, intExos
  5.         ...
  6. intExos pop   af
  7.         ret

Azaz egyszerűen visszatér, de nem törli a B4h portot és nem engedélyezi újra a megszakítást. Ez akkor működik jól, ha az EXOS hívás általában rövid ideig tart (kevesebb, mint a két megszakítás közötti idő - nem tudom, erre mennyi esély van, mert az EXOS hívások nagyon lassúak), egyébként elveszhetnek megszakítások, de legalább nem fagy le, legalábbis akkor nem, ha a 2. lapra valóban csak EXOS hívás írhat FFh-t.
A "rendes" megoldás az lenne, ha ilyenkor a megszakítás idejére beállítaná a játéknak megfelelő lapozást (ez a 6848h csökkentéséhez is kell) és vermet (ez csak a 8C31h híváshoz).

Elméletileg 8C31 hívás csak akkor van, ha nincs a második lapon az FF szegmens, kipróbálom a játéknak megfelelő lapozást majd.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: CPC
« Reply #503 on: 2010.August.31. 15:08:14 »
Elméletileg 8C31 hívás csak akkor van, ha nincs a második lapon az FF szegmens, kipróbálom a játéknak megfelelő lapozást majd.

Ha fontos, hogy ne vesszenek el a megszakítások, akkor nem kellene a 8C31h-t is megoldani ?
Egyébként úgy látszik, az EXOS 8 hívások többsége elég rövid (~3 ms) ahhoz, hogy a fenti egyszerű megoldás (POP AF, RET ha a 2. lapon FFh szegmens van) is használható legyen, bár néha előfordulnak lassabb (10 ms körüli) hívások is.

Kisebb esztétikai jellegű javítások: az LPT-ben az utolsó előtti LPB (a fekete sorok a VSYNC után) lehetne néhány sorral rövidebb is, például 16 sor 20 helyett, így eltűnnének a fekete sorok a képernyő tetejéről.
A "sea green" szín mintha nem lenne külön színre konvertálva (de lehet, hogy csak nem jól látom, vagy más a grafika, mint az eredeti Sorcery-ben); erre a célra talán megfelene a 14-es szín (1Eh) ?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: CPC
« Reply #504 on: 2010.August.31. 15:56:27 »
Ha adhatok tippeket a következő játékra, esetleg Rick Dangerous?

Az első részt megpróbálom átírni.

Quote
Vagy Barbarian (kardozós)?

Ez vagy ez (gondolom az előbbi, az az ismertebb) ?
« Last Edit: 2010.August.31. 16:00:21 by IstvanV »

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: CPC
« Reply #505 on: 2010.August.31. 18:47:58 »
Az első részt megpróbálom átírni.

 :bow:


Ez vagy ez (gondolom az előbbi, az az ismertebb) ?

Igen, az első az, az 1987-es klasszikus. Ne szépítsük a dolgot: Spectrumon förtelmes.

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: CPC
« Reply #506 on: 2010.September.01. 11:33:46 »
Ha fontos, hogy ne vesszenek el a megszakítások, akkor nem kellene a 8C31h-t is megoldani ?
Egyébként úgy látszik, az EXOS 8 hívások többsége elég rövid (~3 ms) ahhoz, hogy a fenti egyszerű megoldás (POP AF, RET ha a 2. lapon FFh szegmens van) is használható legyen, bár néha előfordulnak lassabb (10 ms körüli) hívások is.
Úgy láttam, hogy adatmódosításon kívül ott csak a billentyűzetlekérdezés van, de lehet jó ötlet, a lapok beállítását el lehetne intézni 0060-00a0h között, meg zenélni, csak helyhiány lép fel, megpróbálom bevonni a 0008-002fh helyet is, talán így megoldható lesz.
Az jutott még eszembe, mi lenne, ha a megszakításokat letiltanám minden egyes EXOS 8 hívás előtt a B4h porton, majd utána engedélyezném egy 30h-val?
Kisebb esztétikai jellegű javítások: az LPT-ben az utolsó előtti LPB (a fekete sorok a VSYNC után) lehetne néhány sorral rövidebb is, például 16 sor 20 helyett, így eltűnnének a fekete sorok a képernyő tetejéről.
A "sea green" szín mintha nem lenne külön színre konvertálva (de lehet, hogy csak nem jól látom, vagy más a grafika, mint az eredeti Sorcery-ben); erre a célra talán megfelene a 14-es szín (1Eh) ?
Csak 311,5 soros az LPT-m , de lehet elszámoltam valamit, nem vettem észre semmi problémát a képen  :oops:
Megnézem majd ezt a színproblémát, sztem ugyanaz a grafika, mint az eredetiben.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: CPC
« Reply #507 on: 2010.September.01. 12:15:27 »
Úgy láttam, hogy adatmódosításon kívül ott csak a billentyűzetlekérdezés van, de lehet jó ötlet, a lapok beállítását el lehetne intézni 0060-00a0h között, meg zenélni, csak helyhiány lép fel, megpróbálom bevonni a 0008-002fh helyet is, talán így megoldható lesz.
Az jutott még eszembe, mi lenne, ha a megszakításokat letiltanám minden egyes EXOS 8 hívás előtt a B4h porton, majd utána engedélyezném egy 30h-val?

Az sem rossz ötlet, de természetesen azzal mindig elvesznek a megszakítások EXOS 8 közben. Az egyszerű B2h port ellenőrzés és visszatérés megoldás legalább akkor nem veszít el megszakítást, ha az EXOS 8 rövid ideig tart, és közben csak egy megszakítás lenne. Akkor a visszatérés után (amint engedélyezettek a megszakítások és már nem FFh van a 2. lapon) még lefuthat egy tárolt megszakítás. Igaz, elhasznál kb. 0.1% CPU időt a megszakítási rutinban.
A B4h port törlését még esetleg előbbre lehetne tenni (közvetlenül a 2. lap ellenőrzés után, ha van ilyen), így még kevésbé valószínű, hogy megszakítások vesznek el.

Quote
Csak 311,5 soros az LPT-m,

Az hogyan lehetséges interlace nélkül ? :eek:

Quote
de lehet elszámoltam valamit, nem vettem észre semmi problémát a képen  :oops:

Nekem emulátorral van 3 fekete sor felül (ez a DCh hosszúságúra beállított, teljesen fekete LPB vége, és még egy sor a felső keretből fekete lesz a margók beállítása miatt). De talán igazi gépen nem sok jelentősége van, mert a TV-k egyébként is mindig sokat levágnak a képből.
« Last Edit: 2010.September.01. 12:34:48 by IstvanV »

Offline geco

  • EP addict
  • *
  • Posts: 7082
  • Country: hu
    • Támogató Támogató
Re: CPC
« Reply #508 on: 2010.September.02. 13:03:02 »
Az hogyan lehetséges interlace nélkül ? :eek:

Nekem emulátorral van 3 fekete sor felül (ez a DCh hosszúságúra beállított, teljesen fekete LPB vége, és még egy sor a felső keretből fekete lesz a margók beállítása miatt). De talán igazi gépen nem sok jelentősége van, mert a TV-k egyébként is mindig sokat levágnak a képből.

Nem tudom, azt vettem észre, ha pár sorral rövidebb az LPT, az nem okoz problémát.
Megnézem ezeket, és orvoslom, meg az LPT-t is kiegészítem 312,5 sorra.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: CPC
« Reply #509 on: 2010.September.02. 13:19:31 »
Megnézem ezeket, és orvoslom, meg az LPT-t is kiegészítem 312,5 sorra.

Ezt nem egészen értem :???: Hogyan lehet az LPT teljes hossza nem egész számú sor ? Pontosan 312-nek kellene lennie. Az ettől kissé eltérő méret ugyan nem feltétlenül probléma, de értelme sem sok van. A fekete sorok eltüntetéséhez a képernyő tetejéről a VSync utáni 20 fekete sort kell rövidíteni néhány sorral, és a felső keretet ugyanannyival hosszabbítani.