Welcome, Guest. Please login or register.


Author Topic: CPC (Read 585280 times)

Offline geco

  • EP addict
  • *
  • Posts: 7232
  • Country: hu
    • Támogató Támogató
Re: CPC
« Reply #75 on: 2006.June.02. 18:47:29 »
Quote from: "Zozosoft"

A színbeállítás is hasonló, itt is egy táblázatból (COLORS) vesszük elõ a megfelelõ EP színt, és végigírjuk az LPT 200 sorában a megfelelõ paletta helyre. Mivel EP-n csak az elsõ 8 szín választható szabadon, ezért 7-esnél nagyobb paletta érték esetén nem csinálunk semmit, a 16 színû játékokról majd Geco tanár úr tart elõadást :-)


16 szín esetén én csak annyit csináltam, hogy kiválasztottam egy olyan BIAS-t ami a legjobban hasonlított ( szerintem ) a CPC-n beállított 16 szín közül 8-hoz, és utána elkezdtem kicserélni a grafikát tartalmazó részben a színeket, hogy a végeredmény olyasmi legyen, mint CPC-n. 100%-ig nem lett ua., mert nem sikerült olyan BIAS-t kiválasztani, amiben minden szín ugyanolyan volt, mint CPC-n a 16 közül 8.
Egy kicsikét macerás játék, de a végén az sikerélmény is nagyobb volt.:) Exolon Esetében könnyû dolgom volt, mert az utolsó két file tartalmazta a grafikát, a fõprogramban csak a csillagok kirakását kellett módosítanom, pont a színcserékbõl adódóan az 5-ös színnel rendelkezõ csillagok villogtak, ugyanúgy mint az ûrhajó lámpája, CPC-n ez eredetileg a 15-ös szín volt. A lövedékek színét nem módosítottam, így az eltérõ a CPC-stõl.

Nagyon tetszett az elõadás, pár dolgot szerintem alkalmazni is fogok, amit eddig nem, pl.:
1. a hangszóró állapotát nem változtatom, elméletileg már készen is van, EXOS hívás beolvassa a státuszát, majd porton keresztül kiírom össze OR-olva a
          BIAS-szal
2. a sikeres betöltés figyelése
3. memóriafoglalás rugalmasítása
4. Hard resetet megpróbálom elkerülni, majd meglátjuk milyen sikerrel.:)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: CPC
« Reply #76 on: 2006.June.02. 18:53:34 »
Quote from: "geco"
Nagyon tetszett az elõadás, pár dolgot szerintem alkalmazni is fogok, amit eddig nem

Akkor már megérte ennyit írkálnom :-)

Offline geco

  • EP addict
  • *
  • Posts: 7232
  • Country: hu
    • Támogató Támogató
Re: CPC
« Reply #77 on: 2006.June.02. 20:46:24 »
Quote from: "Zozosoft"
Akkor már megérte ennyit írkálnom :-)


Az biztos is.  :wink:

Offline gafz

  • EP lover
  • *
  • Posts: 700
  • Country: hu
    • http://gafz.atw.hu
Re: CPC
« Reply #78 on: 2006.June.02. 23:16:18 »
"Házibarkács" átiratok Spectrumról, Amstrad-ról EP-re aránylag kevés munkával... Belegondoltatok mi meló lenne az átírás fordított irányban? :) Tiszteljük ezúton is az EP videochipjét! :)

Valami formátumba öntése az eddigi tudáshalmaznak majd holnap... ma agyilag nagyon le vagyok merülve... :(
Enterprise Forever

Offline gafz

  • EP lover
  • *
  • Posts: 700
  • Country: hu
    • http://gafz.atw.hu
Re: CPC
« Reply #79 on: 2006.June.03. 00:09:10 »
Hohó! Az elsõ pályát ismételgeti állandóan... Valamiféle magyar nyelvû leírás leledzik valahol a játéktól? Keresõkben kicsit bezavar az azonos elnevezése a felugró ablakkal... :) Hogy a bumpy micsoda (azon kívül, hogy a Pop-up elsõ kiadása 8 bites gépekre) már meg sem említem... :)
Enterprise Forever

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: CPC
« Reply #80 on: 2006.June.03. 00:20:11 »
Quote from: "gafz"
Hohó! Az elsõ pályát ismételgeti állandóan... Valamiféle magyar nyelvû leírás leledzik valahol a játéktól? Keresõkben kicsit bezavar az azonos elnevezése a felugró ablakkal... :)


Nem lehet, hogy azért, mert meghalsz? :-)

PC-n is Bumpy néven futott. XT-n játszottunk sokat vele, késöbbi gépeken egyre játszhatatlanabbul gyorsabb lett :-)

Össze kell szedni az összes cuccot a pályán, akkor jön elõ a kijárat, amibe beleugorva jön a következõ pálya. Az elsõ pályán a bal felsõ sarokban lesz ez.
Ja és ugrálni is lehet (sõt kell :) ) a bogyóval, ez egy olyan CPC gomb volt, aminek nincs megfelelõje EP-n, így az ALT-ra jutott :-) legalább nem a szegény sokat szenvedett SPACE lesz kinozva :-)

Offline gafz

  • EP lover
  • *
  • Posts: 700
  • Country: hu
    • http://gafz.atw.hu
Re: CPC
« Reply #81 on: 2006.June.03. 11:51:21 »


Itt még nem készült el a színkonverzió? Vagy ilyen a "valóságban" is? :)
Amúgy játékállás-mentés ill. highscore-mentés nincs? Ha nincs, nem is lesz? :) (bocsánat, telhetetlen vagyok...  :oops: )
Enterprise Forever

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: CPC
« Reply #82 on: 2006.June.03. 12:28:00 »
Quote from: "gafz"
tt még nem készült el a színkonverzió? Vagy ilyen a "valóságban" is? :)

CPC-n is ilyen :-) gondolom pár pályánként változik a színösszeállítás, hogy ne legyen olyan uncsi...

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: CPC
« Reply #83 on: 2006.June.03. 12:34:26 »
Quote from: "gafz"
Amúgy játékállás-mentés ill. highscore-mentés nincs? Ha nincs, nem is lesz? :) (bocsánat, telhetetlen vagyok...  :oops: )

nincs :-(
majd meglátjuk :-) azt viszonylag könnyen meg lehet csinálni, amit a Spectrum Emulátornál is: billentyû figyelési rutinba belerakni egy spéci kombináció figyelését, és ekkor kimenteni a teljes használt memóriát.

Offline gafz

  • EP lover
  • *
  • Posts: 700
  • Country: hu
    • http://gafz.atw.hu
Re: CPC
« Reply #84 on: 2006.June.03. 12:34:26 »
Na a harmadik "szint" megint kék :)
Enterprise Forever

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: CPC
« Reply #85 on: 2006.June.03. 13:34:56 »
Itt az aktuális változat, a fõ fejlõdés, hogy a csillagos betöltõ már zenél :-)
Azonkívül ki lett javítva, hogy akkor is örökélet van, ha nem kérjük :-) a kérdés után a válasznak megfelelõen 0003,0004 címekre rakott nullákat. Mivel ez EP-n nem használt cím, így itt eleve nullák voltak, ami azt okozta, hogy mindenképpen örökélet lett. Mondjuk anélkül szerintem max a harmadik pályáig lehet eljutni :-) és most még le is van lassulva egy kicsit az eredetihez képest!
Meg voltak még kisebb javítások, hogy EXOS 2.0 kompatibilis legyen :-) értelme nincs sok, de így szebb :-)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: CPC
« Reply #86 on: 2006.June.03. 15:16:11 »
De mitõl is zenél a csillagos betöltõ?
Attól, hogy a közvetlen port mûveleteket kicseréltük a Geco-tól kapott rutinra :-) amit ha jól sejtem egy Spectrum 128K program átíratából szedett ki :-)
Mondjuk fogalmam sincs hogy mit csinál, lényeg az, hogy mûködik. A funkciója az, hogy az eredetileg egy megadott AY register irásának az eredményét szimulálja a DAVE-el.
Elöször is lássuk, hogy néz ki CPC eredetiben egy ilyen register írás, a POPUP.000 fáljban 75B9H-tól helyezkedett el egy ilyen. (Ez fut a megszakítási rutinban.)

[asm]L75B9           LD   HL,78B6H
                LD   D,0BH
L75BE           LD   E,(HL)
                LD   B,0F4H
                OUT  (C),D
                LD   BC,0F600H
                OUT  (C),C
                LD   A,0C0H
                OUT  (C),A
                OUT  (C),C
                LD   B,0F4H
                OUT  (C),E
                LD   B,0F6H
                ADD  A,A
                OUT  (C),A
                OUT  (C),C
                DEC  HL
                DEC  D
                JP   P,L75BE
                RET[/asm]

Az LD B,0F4H utasítástól DEC HL elötti OUT-ig történik 1 azaz egy! darab AY regiszter írása! Normális HW-en az ilyesmihez elegendõ egy darab OUT utasítás is :-)
A regiszter száma a D-ben van, az ciklikusan csökken, az írandó adatot a HL-el címzet táblázatból veszi. Tehát az R11-tõl lefelé végig írkálja az összes AY regisztert.
Közvetlen ezután található egy másik port piszkáló rutin:
[asm]
L75DF           LD   DE,0D00H
L75E2           CALL L75EC
                DEC  D
                JP   P,L75E2
                LD   DE,L073F
L75EC           LD   B,0F4H
                OUT  (C),D
                LD   BC,0F600H
                OUT  (C),C
                LD   A,0C0H
                OUT  (C),A
                OUT  (C),C
                LD   B,0F4H
                OUT  (C),E
                LD   B,0F6H
                ADD  A,A
                OUT  (C),A
                OUT  (C),C
                RET
[/asm]
Az egy darab AY regiszter írására szolgáló részt ugye most már mindenki felismeri :-) megnézve a ciklust, látható, hogy R13-tól lefelé az összes regiszter nullázza, végül az R7-et 3FH-ra állítja. Elég könnyen ki lehet találni, hogy ez egy hang reset rutin lesz :-)

Geco-tól kapott rutin bekerült a betöltõbe, PORTOUT címen, ennek a címét induláskor B900H-ra helyezzük el.
Az elsõ program rész így módosul:
[asm]
L75B9           LD   HL,78B6H
                LD   D,0BH
                LD   E,(HL)
                LD   A,D
                LD   C,E
                CALL 0B900H
                NOP
                ...
                NOP
                RET
[/asm]
Ezután már zenélni fog :-)
A második, hang reset program részt egy olyanra cseréljük, ami nulláza a DAVE összes hang portját.
[asm]
L75DF           LD   BC,10AFH
                XOR A
L75E3           OUT (C),A
                DEC D
                DJNZ L75E3
                NOP
                ...
                NOP
                RET
[/asm]
Ezután pedig el kéne hallgatnia kilépéskor... de nem teszi, az utolsó hang tutul továbbra is... ami nem véletlen, mert hiába van ez a hang reset rutin itt, soha nem kerül meghívásra...
Megnézve, hogy mi történik továbblépésnél, a 8A70H címen található egy ilyen:
[asm]
               LD  HL,8A23H
               CALL 0BCDDH
               CALL 0BCA7H
[/asm]
Az elsõ két utasítás a felhasználói megszakitási rutint láncolja ki, ez már le van kezelve a betöltõnkben.
A második CALL viszont a ROM hang reset rutinja! Olyanunk még nincs... Ezt a CALL-t átírva 75DFH-ra, máris mûködésbe lép az imént átírt hang reset rutin, és innentõl elmarad a végtelen tutulás :-)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: CPC
« Reply #87 on: 2006.June.03. 21:29:40 »
Na már varászoltam szöveget a kezdõképernyõre :-)
A karakter kiírás ROM hívásról lemondtam, elkezdtem kiszedegetni a ROM-ból, de amikor már vagy 5 oldalnyi programlista gyûlt össze, és még mindig újabb alrutinhívásokat találtam, akkor inkább hagytam a fenébe...
Így inkább csináltam 4 színû grafikus lapon szöveget, kimentettem a szükséges bájtkupacot, amit odacsaptam a .000 végére. A francia szöveg kiírásának helyére meg oda tettem egy másoló rutint, ami beteszi a képernyõ memóriába. Mondjuk ez se olyan egyszerû a CPC "érdekes" kép tárolása miatt...
Ime a rutin, ami a sima egyszerû grafikus adatot szétszórja a megfelelõ formába:
[asm]                LD HL,8C00H
                LD IX,0C000H+18*80
                LD A,4*9
                LD B,5
CIK1            PUSH BC
                PUSH IX
                LD B,8
CIK2            PUSH BC
                PUSH IX
                POP DE
                LD BC,80
                OR A
                JR Z,CIK3
                LDIR
                DEC A
CIK3            LD BC,800H
                ADD IX,BC
                POP BC
                DJNZ CIK2
                POP IX
                LD BC,80
                ADD IX,BC
                POP BC
                DJNZ CIK1[/asm]

Offline MrPrise

  • Administrator
  • EP addict
  • *
  • Posts: 2764
  • Country: hu
    • Enterprise Forever
Re: CPC
« Reply #88 on: 2006.June.03. 22:24:22 »
Quote from: "Zozosoft"
Quote from: "geco"
Nagyon tetszett az elõadás, pár dolgot szerintem alkalmazni is fogok, amit eddig nem

Akkor már megérte ennyit írkálnom :-)

Naná hogy meg! :-) Köszi! :smt023

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14779
  • Country: hu
    • http://enterprise.iko.hu/
Re: CPC
« Reply #89 on: 2006.June.04. 01:13:53 »
Próbálom kigyûjteni a hang rutinokat a CPC ROM-ból, nagyja már úgy tünik meg van, de valami még el lehet dugva az IRQ rutinban is... a leírás szerint van egy 100Hz-es megszakítás a hang keltéshez. Hogy ez hol kezelõdik, azt még nem lelem...