home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2004 February
/
Chip_2004-02_cd1.bin
/
program
/
ctenari
/
Hytha
/
ManicMinerZX
/
ManicMinerZXt.txt
< prev
next >
Wrap
Text File
|
1989-12-31
|
15KB
|
270 lines
MANIC MINER - ZX/C64 verze
(C)Y2k3 K.M.S.
freeware under ZOA licence
Manic Miner ZX je konverze znßmΘ osmibitovΘ legendy ze ZX spectra.
Hra je p°eprogramovßna v jazyce ANSI C, zdrojov² k≤d je voln∞
k dispozici a je mo₧no ji p°elo₧it pro DOS, Windows, Linux, Unix,
BeOS, Mac a dalÜφ platformy, kterΘ podporuje grafickß knihovna Allegro.
Jednß se o klasickou ploÜinovku, ve kterΘ mß hrßΦ za ·kol sbφrat
p°edm∞ty, p°iΦem₧ se musφ vyvarovat dotyku se vÜφm, co se h²be
(a n∞kdy i neh²be :-) ). HrßΦ si m∙₧e zvolit jednu ze t°φ variant
hry, kterΘ se liÜφ drobn²mi detaily (podporovßny jsou verze Software
Projects, Bugbyte a C64) a jako bonus nabφzφ takΘ levely Manic Miner 2 a 3
z C64.
Hru Manic Miner jist∞ nenφ t°eba p°edstavovat nikomu,
kdo se jen trochu vß₧n∞ zajφmß o poΦφtaΦe. Verze pro ZX
se stala legendou a i v dneÜnφ dob∞, po vφce ne₧ dvaceti
letech od jejφho vzniku, mß spousty p°φznivc∙. StaΦφ
jen hledat v google.com :-) Toho, kdo mß zßjem si zahrßt
p∙vodnφ verzi pod emulßtorem pot∞Üφ fakt, ₧e server worldofspectrum.org
zφskal jako u v∞tÜiny ZX spectrum her souhlas k jejφmu bezplatnΘmu
Üφ°enφ a nabφzφ ji ke sta₧enφ zdarma ve svΘm archφvu.
Aby hra neupadla v zapomn∞nφ, rozhodl jsem se ji roku 2000
p°eprogramovat pro poΦφtaΦe PC. T°i roky provozu www strßnek,
na kter²ch se hra nachßzela, potvrdily, ₧e pam∞tnφci majφ
zßjem o p∙vodnφ ZX verzi i o verzi z PMD-85.
V systΘmovΘm logu lze Φasto vid∞t, ₧e nßvÜt∞vnφk do vyhledßvacφho
programu napsal "manic miner PMD85 download" nebo n∞co podobnΘho.
Moje konverze z roku 2000 vÜak zßjemc∙m o ni p°inßÜela jedno
omezenφ: byla naprogramovßna pro operaΦnφ systΘm DOS a pou₧φvala
p°φm² p°φstup do videoRAM a na IO porty. JeÜt∞ ve Windows 95 to
tolik nevadilo, ale pod dnes pou₧φvan²mi Windows 2000/XP ji₧
spustit nejde. TakΘ v poslednφ dob∞ registruji znaΦn² nßr∙st
u₧ivatel∙ Linuxu, kter² je se sv²m DOSEmu jeÜt∞ mΘn∞ kompatibilnφ.
Proto jsem se rozhodl, ₧e sv∙j remake naprogramuji znovu a
to v jazyce C jako univerzßln∞ portovateln² program.
Po necelΘm t²dnu mechanickΘho p°episovßnφ k≤du z Pascalu do ANSI C
vznikla souΦasnß verze hry, kterou je mo₧no dφky pou₧itΘ
grafickΘ knihovn∞ Allegro p°elo₧it nejen pro DOS, ale i pro Windows,
Linux, BSD, BeOS, QNX, Mac a dalÜφ platformy.
A₧ na tuto konverzi jsem ponechal hru v p∙vodnφm stavu, pouze jsem
do hry p°idal hudbu. V∞°φm, ₧e dφky tomu p°itßhne hra jeÜt∞ vφce
zßjemc∙ a ₧e pobavφ i po tolika letech od doby, kdy vznikla.
Samotnou hru ji₧ nebudu znovu popisovat, ale p°ilo₧φm
p∙vodnφ dokumentaci, kterou jsem psal pro DOS verzi v roce 2000.
Krom∞ toho jsem do adresß°e se hrou p°ihrßl i starou DOS verzi,
kterou jsem pojmenoval "ManicMinerZX_DOS - old (non-portable).exe".
Poznßmka: prvnφ verze z roku 2000 v Pascalu pou₧φvala hojn∞ p°φstup
k IO port∙m grafickΘ karty a videoRAM. Proto₧e vykreslovßnφ grafiky
bylo realizovßno unikßtnφm zp∙sobem (viz dalÜφ Φßst dokumentace),
rozhodl jsem se, ₧e ne₧ abych p°ed∞lßval cel² grafick² engine (a v podstat∞
celou hru), rad∞ji si napφÜu emulaci textovΘho re₧imu VGA karty.
To je jen informace pro ty, kte°φ budou zkoumat zdrojovΘ k≤dy a budou se
divit, proΦ je vykreslovßnφ tak "krkolomn∞" naprogramovanΘ :-)
Remake je voln∞ Üi°iteln² i se zdrojov²mi k≤dy, pokud jsou dodr₧eny licenΦnφ
podmφnky ZOA. Je tedy mo₧nΘ program pou₧φvat, Üφ°it, umis¥ovat na Internetu
i na softwarov²ch kolekcφch bez poplatk∙ Φi jin²ch protislu₧eb.
Program je urΦen primßrn∞ pro operaΦnφ systΘmy DOS, Linux a Windows, ale je mo₧no
jej portovat i na dalÜφ operaΦnφ systΘmy (Unix, BeOS, Mac...), pro kterΘ
je k dispozici grafickß knihovna Allegro.
V∞°φm, ₧e tato voln∞ Üi°itelnß konverze znßmΘ osmibitovΘ hry pot∞Üφ
vÜechny pam∞tnφky a p°φznivce star²ch Φas∙, kdy hry byly opravdu zßbavnΘ,
aΦkoli byly velmi jednoduchΘ.
Hodn∞ zßbavy p°eje autor.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!! D∙le₧it² dodatek pro u₧ivatele OS LINUX !!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!
!! OperaΦnφ systΘm Linux obsahuje zßva₧nou chybu,
!! dφky nφ₧ na mφst∞ zamrzne, pokud nenadetekuje
!! SVGA grafickou kartu a Allegro provede nahozenφ
!! standardnφho VGA re₧imu 320x200 po ne·sp∞ÜnΘm
!! pokusu o nastavenφ 640x480! Nenφ to chyba
!! hry, ale zßva₧n² nedostatek ovladaΦ∙ operaΦnφho
!! systΘmu Linux (cheche: a pak ₧e je Linux stabilnφ -
!! spadne p°i b∞₧nΘ prßci stejn∞ snadno, jako Windows).
!! Vy°eÜil jsem to tφm, ₧e u₧ivatel mß mo₧nost
!! v p°φkazovΘm °ßdku zadat parametr '320',
!! kter² zajistφ, aby se hra v∙bec nepokouÜela
!! nahodit grafick² re₧im 640x480, ale rovnou standardnφ
!! 320x200. Tento re₧im se naÜt∞stφ t²kß jen setupu,
!! kter² se v rozliÜenφ 320x200 stane h∙°e Φiteln²,
!! samotnΘ hry se to net²kß.
!! Tak₧e shrnu: pokud po spuÜt∞nφ hry totßln∞
!! zamrzne Linux, nenφ to chyba hry, ale Linuxu a
!! lze to vy°eÜit parametrem '320'.
!! Pod Windows a pod DOSem se podobn² problΘm
!! nevyskytl a p°edpoklßdßm, ₧e nenastane ani pod
!! Linuxem, pokud ovladaΦe detekujφ SVGA grafickou
!! kartu umo₧≥ujφcφ rozliÜenφ 640x480 a vyÜÜφ.
!! Pou₧φval jsem distribuci RedHat 6.0, tak je takΘ
!! mo₧nΘ, ₧e v jin²ch distribucφch, pop°φpad∞
!! vyÜÜφch verzφch RedHat, ji₧ je chyba oÜet°ena.
!!
!! Podrobnosti o chyb∞:
!! ukßzka 1(funguje bez problΘm∙-pokud nenφ SVGA k dispozici, je program ukonΦen,
!! takto jsem ale hru °eÜit necht∞l, lepÜφ je po ne·sp∞chu se SVGA zkusit VGA re₧im):
!! if (set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 640, 480, 0, 0)){
!! GFXfail(); // Vypis chybu a ukonci program
!! }
!!
!! ukßzka 2(funguje bez problΘm∙-k chyb∞ by zde dojφt nem∞lo nikdy, proto₧e VGA
!! grafick² adaptΘr je k dispozici v₧dy):
!! if (set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 320, 200, 0, 0)){
!! GFXfail(); // Vypis chybu a ukonci program
!! }
!!
!! ukßzka 3(kombinace p°edchozφch dvou, hra se pokusφ nahodit VGA, pokud nenφ
!! k dispozici SVGA. Pod Windows a DOSem bez problΘm∙, ale LINUX KOMPLETN╠ ZAMRZNE p°i
!! nahazovßnφ VGA m≤du):
!! if (set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 640, 480, 0, 0)){
!! if (set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 320, 200, 0, 0)){
!! GFXfail(); // Vypis chybu a ukonci program
!! }
!! }
!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
---------------------------------------------------------------------------
=================================================================================
---------------------------------------------------------------------------
******************************************
** P∙vodnφ dokumentace k verzi pro DOS: **
** (informace o spouÜt∞nφ hry se t²kß) **
** (jen starΘ verze pro DOS, nikoli ) **
** (novΘ multiplatformnφ verze ! ) **
******************************************
MM je spoleΦn∞ s BOULDERDASHem a ARKANOIDem
nejp°ed∞lßvan∞jÜφ hra vÜech dob. NajdeÜ jφ na ·pln∞ vÜech poΦφtaΦφch
vΦetn∞ PMD-85, aΦkoliv oficißln∞ komerΦn∞ byla vydanß jenom na ZX a C64.
Na vÜech ostatnφch poΦφtaΦφch to p°ed∞lali nadÜenci, jako jsem jß, doma.
MM napsal p∙vodn∞ Üestnßctilet² Matthew Smith na ZX (roku 1983) a hra se
velice brzy stala legendou. Mß dote∩ svoje fancluby a spousty internetov²ch
strßnek. To vÜe p°es vÜechny ty n∞kolikasetmegovΘ 3Dfx skrolovacφ doomovky, co
se v souΦasnosti d∞lajφ. MM i JSW m∞lo na ZX pouh²ch 32Kb a byl to samoz°ejm∞ Φist²
assembler (jß konverzi psal v pascalu, assembler jsem pou₧φval jen na v²pomoc).
Velice brzy se zaΦaly d∞lat podobnΘ hry na stejnΘm principu (Alligata...) a
verze s jin²mi levely (nejznßm∞jÜφ JSW3). Mimochodem Matthew Smith napsal pr²
jen MM a JSW pro Software Projects a mo₧nß jeÜt∞ jednu mΘn∞ znßmou hru a
s tvorbou skonΦil.
Na PC existuje excelentnφ konverze MM (1997) a JSW (1999) od Andyho Nobla s
perfektnφ grafikou a hudbou, ale krom∞ emulßtor∙ osmibit∙ jsem klasickou verzi
pro PC nikde nevid∞l. Tak₧e proto jsem se rozhodl MM p°ed∞lat v p∙vodφ verzi.
A nejen to. M∙₧eÜ si vybrat i verzi pro C64, kterß, aΦkoliv je stejnß jako na
ZX, mß n∞kolik odliÜnostφ, n∞kter²ch ·mysln²ch, n∞kter²ch asi ne.
A kdy₧ jsem u₧ d∞lal verzi pro C64, p°idal jsem svΘ dv∞ starΘ p°ed∞lßvky
MANIC MINER 2 a 3, kterΘ jsem d∞lal na C64 kdysi dßvno jako 13tilet² Ükolßk.
Samoz°ejmostφ je vestav∞n² cheat o n∞kolika ·rovnφch a funkce systΘmovΘho
nastavenφ - pro emulaci mono monitoru (nebo emulaci verze pro PMD-85, kde je
hra Φernobφlß) a pro regulaci rychlosti. Hra je toti₧ synchronizovanß podle
zp∞tnΘho b∞hu paprsku obrazovky a proto₧e novΘ karty majφ vyÜÜφ refresh
ne₧ 60Hz, hra je pak moc rychlß. Rozhodn∞ se ale nestane, jako u jin²ch
star²ch her, ₧e bude hra tak rychlß, ₧e ¥ukneÜ do klßvesy a objevφÜ se na
opaΦnΘm konci levelu. Co ve h°e nenφ je zvuk. D∙vod je jednoduch²- nemßm
ani zvukovou kartu, ani PC speaker.
Celß hra vznikla na poΦφtaΦi 386SX25 bez bedny (karty v MB le₧φ jen tak na
stole) za pßr stovek, proto jde spustit narozdφl od dneÜnφch her tΘm∞° na
vÜem. Podmφnkou pro spuÜt∞nφ je 286ka a VGA grafickß karta.
V rßmci originality jsem se rozhodl hru kompletn∞ napsat nΘ v grafice,
ale v textovΘm m≤du. V grafice pφÜe hry ka₧d², ale hru v textovΘm
m≤du s plynul²m skrolingem objekt∙ nemß hned tak n∞kdo. Nejd°φv jsem musel
ud∞lat emulaci sprajt∙ v textovΘm m≤du. Grafick² engine jich umφ obslou₧it
dev∞t (poslednφ mß mal² defekt, ale to se projevφ jenom v jednom levelu a
to jeÜt∞ tak, ₧e to nenφ na zßvadu, proto₧e u₧ chyb∞l znak ve znakovΘ sad∞).
Mimochodem verze pro C64 kv∙li pouze osmi hardwarov²m sprajt∙m v tom levelu
nemß jednu p°φÜerku.
Jak to funguje ? JednoduÜe. Ka₧dß mrcha vΦetn∞ postaviΦky zabφrß dvakrßt dva
znaky, ale proto₧e se musφ pohybovat po bodech, ka₧d² sprajt spot°ebuje
t°ikrßt t°i znaky. No a grafick² engine spoΦφtß polohu p°φÜerky podle
X a Y, umφstφ jφ do matice 3x3 znak∙ a p°es to dß funkcφ OR pozadφ, p°es kterΘ
p°φÜerka leze. T∞mito upraven²mi znaky se pak p°epφÜou p∙vodnφ znaky
a je to.
Trochu jsem zakysnul, kdy₧ jsem m∞l d∞lat titulnφ obrßzek v textovΘm m≤du a stejn∞
tak level 20, kde je hornφ Φßst levelu p°ekreslenß prßv∞ tφm titulnφm
obrßzkem. Pak jsem ale naÜel, ₧e VGA grafickß karta umφ nahodit textov² m≤d
do re₧imu, kde jsou na obrazovce dv∞ znakovΘ sady najednou. Celkem tedy 512 znak∙
a to pro obrßzek staΦφ dφky tomu, ₧e ZX spectrum m∞lo jenom 32 znak∙ na
°ßdek a navφc ten obrßzek nenφ na cel² obraz, ale jenom do dvou t°etin.
C64 bohu₧el mß 40 znak∙ na °ßdek, tak je titulnφ obrßzek MM3 o°φzl².
VidφÜ tedy, ₧e komplet celß hra je v textovΘm re₧imu posklßdanß z pφsmenek,
aΦkoliv by to nikdo ne°ekl. Dφky tomu je takΘ v∞rn∞ emulovanΘ prolΘzßnφ barev
p°φÜerek do pozadφ, p°esn∞ jak to mß ZX spectrum. ZX toti₧, aΦkoliv umφ
jenom grafiku, neumφ zobrazit vφc ne₧ dv∞ barvy na 8x8 bod∙. Proto₧e textov²
m≤d se chovß stejn∞, je tento znßm² defekt ZX spectra emulovan² p°esn∞ jako na
ZX. C64 tento defekt nemß, proto₧e mß hardwarovΘ sprajty, kterΘ se kreslφ
nezßvisle na pozadφ, a¥ u₧ textovΘm nebo grafickΘm, a ned∞lß barevnΘ ΦtvereΦky
okolo znaku. Moje hra se ale v C64 emulaci chovß stejn∞ jako ZX, proto₧e
textov² re₧im mß stejnou vlastnost jako grafika ZX. HardwarovΘ sprajty prost∞
na PC chybφ :-(
P°i startu se zobrazφ obrazovka s nastavenφm hry a s v²b∞rem verze.
Kdykoliv b∞hem hry i v tΘto obrazovce lze skonΦit hru klßvesou ESC a
vyskoΦit zp∞t do DOSu.
Blikajφcφ nabφdka znamenß start hry s aktußlnφm nastavenφm.
Stiskni 1, pokud chceÜ originßl verzi ze ZX spectra od Software Projects.
2 je verze ZX od BugByte, 3 je verze z C64 a A a B jsou moje verze MM2 a MM3.
OdliÜnosti mezi verzemi popφÜu nφ₧e.
Dßle je tu CHEAT OPTIONS a SYSTEM OPTIONS.
V Cheat si m∙₧eÜ vybrat, zda chceÜ nekoneΦnΘ ₧ivoty (implicitn∞ Ano),
jestli bude hra reagovat na kolize s pohybliv²mi objekty (implicitn∞ Ne) a
m∙₧eÜ si vybrat level, ve kterΘm zaΦneÜ. P°φmo ve h°e m∙₧eÜ klßvesou F11
p°eskakovat levely a F12 hru pozastavit.
V System options m∙₧eÜ vypnout barvy (z∙stanou jenom u titulnφho obrßzku a
u reakcφ na klφΦ a na zabitφ). Nastavenφm hodnoty u Speed Delay zpomalφÜ hru,
pokud je p°φliÜ rychlß, kdy₧ mßÜ vyÜÜφ refresh obrazovky. ╚φslo znamenß, kolikrßt
se bude Φekat na vykreslenφ snφmku, ne₧ se provede jeden pohyb hry.
╚φm vyÜÜφ, tφm je hra pak pomalejÜφ. ╚ßsteΦn∞ to m∙₧e slou₧it i jako takov²
cheat, ale ostatnφ cheaty jsou stejn∞ natolik ·ΦinnΘ, ₧e musφÜ projφt celou hru i
bez zpomalenφ.
Po spuÜt∞nφ hry pomocφ 1,2,3,A nebo B t∞ naskoΦφ titulnφ obrßzek a po stisku
ENTER se dostaneÜ do hry. Hra se dß hrßt bu∩ Üipkami, nebo klßvesami QWZ.
èipky doporuΦuji jenom na numberblocku, proto₧e samotnΘ Üipky jsou hardwarov∞
nevhodn∞ d∞lanΘ a vynechßvajφ.
A zde popφÜi rozdφly mezi verzemi hry. MM2 a 3 jsou odvozeny od C64 verze
a tak se jich t²kajφ takΘ odliÜnosti oproti ZX. MM3 mß jinou znakovou sadu a
ob∞ verze - MM2 i 3 majφ jin² titulnφ obrßzek.
Rozdφly mezi verzemi MM1 Software Projects a BugByte jsou pouze v p°φÜerkßch v
levelu 17 a 18 - mφsto rotujφcφch troj·helnφk∙ mß BugByte verze jakßsi ml²nskß
kola a mφsto brouk∙ v 18t²m levelu mß med∙zy. V ÜestΘm levelu mß mφsto
statickΘ "dr₧ky" obyΦejnΘ k°ovφ.
Verze pro C64 vychßzφ z verze Software Projects, ale mß dost odliÜnostφ.
V prvnφ °ad∞ je to v titulnφm obrßzku nßpis RETURN mφsto ENTER, proto₧e u C64 se
ENTER jmenuje RETURN. Pak mß jinak n∞kterΘ barvy a n∞kde n∞kterΘ znaky.
Defekt bestiφ v 16tΘm levelu jsem neemuloval, proto₧e je pravd∞podobn∞ zp∙soben
pozd∞ji chybou v nahrßvßnφ z kazety a nejspφÜ ho nemß ka₧d².
Ve dvanßctΘm levelu chybφ jedno kolo (nevφm proΦ, asi na n∞j zapomn∞li) a
v 18tΘm levelu chybφ jedna p°φÜerka kv∙li tomu, ₧e je v levelu celkem dev∞t
pohybliv²ch objekt∙ a C64 mß jenom osm hardwarov²ch sprajt∙. 19t² level se
liÜφ pozicφ postaviΦky na zaΦßtku a tφm, ₧e se paprsek lßme jen jednou,
narozdφl od ZX, kde se m∙₧e klikatit n∞kolikrßt. Mimochodem p∙vodnφ verze m∞la
v 19 levelu (a nejen v n∞m) chybu, dφky kterΘ neÜel projφt bez cheatu na kolize
objekt∙. Podlahy se toti₧ posunuly p°i pßdu postaviΦky o znak (a vφce) nahoru,
ale sprajty z∙staly na stejnΘm mφst∞, tak₧e kolize s nepohybliv²mi objekty
neodpovφdaly polohou s kolizemi s bestiema. Tuto chybu jsem pochopiteln∞
neemuloval. Ve dvacßtΘm levelu nenφ p∙vodnφ p°φÜerka ze ZX, ale je pou₧itß z
jednoho p°edchozφho levelu. TakΘ neleze jenom k oku, ale a₧ na konec levelu.
Rozdφl∙ je tam jeÜt∞ trochu vφce, ale ty nejhlavn∞jÜφ jsem popsal. Na ostatnφ
si te∩ nevzpomφnßm, ale na co jsem narazil, to jsem ud∞lal.
SystΘmovΘ po₧adavky:
286 (dop.386/20MHz), 640Kb RAM, VGA gr. karta.
OperaΦnφ systΘm MSDOS.
Nejde pod Windows NT a 2000, pod Win95/98 jde, ale musφ se pouÜt∞t na cel²
obraz, ne v okn∞.
Hra je samoz°ejm∞ freeware i se zdrojov²mi k≤dy pod licencφ ZOA.