home *** CD-ROM | disk | FTP | other *** search
/ Flop Magazin 50 / Flop_Magazin_50_2007_03_Raster_cs_Side_B.atr / clmvyvoj.tch < prev    next >
Text File  |  2023-02-26  |  7KB  |  19 lines

  1. Caverns of the lost miner a cc65¢Michael Kalou③ (BAKTRA)¢================================¢¢Rozhodnul jsem se splnit si sv
  2. j mal⑨ ataristick⑨ sen. Napsat alespo jednu trochu slu③nou hru. Napadlo mne, əe mohu portovat svou hru "Lost miner" z IBM/PC (s t    m, əe vyuəiji jiə vytvo②en⑦ jeskyn❎).¢¢Kdyə jsem p②em⑨③lel nad t    m, jak⑦ v⑨vojov⑦ prost②edky pouəiji, zavrhnul jsem nejprve BASIC (pro pomalost) a tak⑦ assembler (protoəe v assembleru jsem naprogramoval jedin⑦ mal⑦ demo a nem❎l jsem odvahu ps⇧t v n❎m celou hru). V❎d❎l jsem v③ak o existenci CC65.¢¢CC65 je cross-platform p②eklada⇨ jazyka C a m⇧ tyto sou⇨⇧sti:¢-p②eklada⇨ (C do ASM)¢-assembler (ASM do OBJ)¢-linker (OBJ do XEX)¢-standardn     knihovnu¢¢V jazyce C programuji na IBM/PC a v    m, əe p②eklada⇨e C jsou schopny generovat dostate⇨n❎ efektivn     kd. Volba tedy padla pr⇧v❎ na CC65. Atari se od IBM/PC pon❎kud li③     a p②i tvorb❎ hry to bylo pot②eba vz    t v ⑤vahu.¢¢1.Logika hry¢============¢Logiku hry - zejm⑦na pohyb horn    ka po jeskyni - m⇧ na starosti hlavn     program psan⑨ v C. Pot②ebuji udrəovat stav jeskyn❎ a vyhodnocovat pohyby horn    ka. Zde mi jazyk C pom
  3. əe sv⑨mi ②    d    c    mi strukturami (podm    nky, cykly, v❎tven    ) - v③e lze v tomto jazyce p②ehledn❎ zapsat.¢¢Za pouəit     C se plat     pam❎t     a v⑨po⇨etn    m v⑨konem. Jak tuto cenu sn    əit?¢¢Pro⇨ se na③emu obl    ben⑦mu po⇨    ta⇨i ②    k⇧ mal⑦ Atari? Protoəe m⇧ m⇧lo pam❎ti a jeho procesor malou taktovac     frekvenci (ale p②esto um     velk⑦ v❎ci). Je tedy vhodn⑦ omezit pl⑨tv⇧n    . Kde to je moən⑦, pouə    vat datov⑨ typ char m    sto obl    ben⑦ho datov⑦ho typu int. Mal⑦ Atari m⇧ tak⑦ mal⑨ z⇧sobn    k a proto se vyplat     ③et②it s prom❎nn⑨mi deklarovan⑨mi v t❎lech funkc    . Nav    c p②    stup k t❎mto prom❎nn⑨m vyəaduje v    ce instrukc    . Trochu pam❎ti a v⑨konu se d⇧ u③et②it znovupouə    v⇧n    m jedn⑦ glob⇧ln     prom❎nn⑦ pro ②    zen     cykl
  4. .¢¢P②i tvorb❎ hry jsem se trochu b⇧l, jestli velikost programu nep②eroste Atari p②es pam❎④ov⑦ ⇨ipy, ale v⑨sledn⑨ch 10,5 KB hlavn    ho programu nen     aə tak moc a n⇧ro⇨nost na pam❎④ lze je③t❎ trochu sn    əit. V assembleru by to ov③em dopadlo l⑦pe - za cenu n⇧ro⇨n❎j③     ⑤drəby kdu a men③     p②ehlednosti (star⇧ p    sni⇨ka). S rychlost     hlavn    ho programu jsem byl spokojen. Bez pat②i⇨n⑦ho zpoə⇦ov⇧n     horn    k po jeskyni doslova l⑦tal.¢¢2. P②id⇧n     dat a jejich rozm    st❎n     v pam❎ti¢=======================================¢10,5 KB pam❎ti je pry⇨. Ale bez jeskyn     a bez grafiky si moji hru nikdo nezahraje. Grafika a topologie jeskyn     jsou data, kter⇧ moje hra nezbytn❎ pot②ebuje. Na IBM/PC jsou tato data obvykle um    st❎na v extern    ch souborech na pevn⑦m disku. Jsem kazet⇧②, a tak preferuji software, kter⑨ se bez extern    ch soubor
  5.  obejde...¢¢e③en    m je p②ilepit data k hlavn    mu programu. U topologi     jeskyn     je vcelku jedno, kde v pam❎ti budou um    st❎ny, ale v p②    pad❎ znakov⑦ sady nebo display listu to jedno nen    . ¢¢Probl⑦m se v assembleru ②e③     jednodu③e direktivami pro nastaven     aktu⇧ln     adresy a vloəen     dat:¢¢org $4000¢.incbin "file.dat"¢¢V jazyce C takto postupovat nelze. Je moən⑦ sice p②ev⑦st data na z⇧pis staticky alokovan⑦ho pole, ale nelze ur⇨it adresy na kter⑨ch bude obsah pole uloəen. V p②    pad❎ display-listu nebo znakov⑦ sady bych byl ztracen. Rozm    st❎n     prom❎nn⑨ch v pam❎ti totiə neur⇨uje p②eklada⇨, ale linker. Linker, kter⑨ je sou⇨⇧st     CC65 umoəuje um    s④ovat bloky dat na konkr⑦tn     adresu. Nane③t❎st     se takov⇧ v❎c provede pomoc     ⑤prav jeho konfigura⇨n    ho souboru, coə je t❎əkop⇧dn⑦.¢¢V    cesek⇨n     form⇧t spustiteln⑨ch soubor
  6.  pro Atari umoəuje elegantn❎j③     ②e③en    . Sta⇨ilo napsat vlastn     jednoduch⑨ minilinker (minilinker.jar), kter⑨ jednodu③e ke spustiteln⑦mu souboru p②ilep     dal③     sekce s daty a opat②     je pat②i⇨nou hlavi⇨kou (po⇨⇧te⇨n     a koncov⇧ adresa sekce). T    m je p②id⇧v⇧n     dat vy②e③eno. Jen je t②eba vz    t v ⑤vahu, əe hlavn     program roste od adresy $2E00.¢¢Jako kazet⇧② jsem dbal na to, aby se jednotliv⑦ sekce nep②ekr⑨valy. P②idal jsem tedy topologii jeskyn     (p②evzatou z PC verze), grafiku (2bitov⑦ bitmapy) a jeden display-list. K p②    prav❎ dat mi poslouəila tak⑦ unixov⇧ utilita dd - pomohla mi od②ezat nepot②ebn⑦ ⇨⇧sti soubor
  7.  z verze hry pro IBM/PC. ¢¢3.Hudba a zvuky¢===============¢Mus    m s pravdou ven. Nev    m, opravdu nev    m... jak se programuje ⇨ip POKEY. P②i programov⇧n     v BASICu jsem prost❎ pouə    val SOUND a,b,c,d a to mi k əivotu sta⇨ilo. S CC65 se ə⇧dn⇧ knihovna na hran     zvuk
  8.  nedod⇧v⇧. Panice jsem ov③em nepropadl, protoəe jsem si vzpomn❎l, əe v jist⑦m ⇨    sle magaz    nu FLOP je n⇧vod, jak generovat zvuky jen pomoc     pos    l⇧n     ⇨    sel na ur⇨it⑦ adresy, coə by bylo moən⑦ prov⇧d❎t i v jazyce C. Trvalo mi hezkou chv    li, neə jsem n⇧vod objevil v ⇨    sle 34 a napsal podle n❎j funkci sound(). Spokojen jsem v③ak nebyl. Takto nelze p②ehr⇧vat zvuk "na pozad    " a o hudb❎ se ned⇧ ani uvaəovat.¢¢Co te⇦? Pomohla op❎t vzpom    nka na FLOP, tentokr⇧t ⇨    slo 48. Nepouə    vala hra Cubico ke generov⇧n     zvukov⑦ho efektu p②ehr⇧vac     rutinu Raster Music Trackeru!? Pouə    vala. Po prostudov⇧n     dokumentace, p②    klad
  9.  a zdrojov⑨ch kd
  10.  k RMT jsem doplnil svou jiə d②    ve vytvo②enou hudbu o instrumenty ur⇨en⑦ ke hran     zvukov⑨ch efekt
  11. . V⑨sledkem byl soubor s hudebn    mi daty a soubor s p②ehr⇧vac     rutinou (jak uə to u takov⑨ch tracker
  12.  b⑨v⇧). V obou souborech nebyla ⇨ist⇧ data, ale rovnou sekce spustiteln⑦ho souboru. Musel jsem tedy upravit minilinker tak, aby dok⇧zal i takov⑦ soubory spr⇧vn❎ p②ilepovat. To se poda②ilo.¢¢P②ehr⇧vac     rutin❎ se p②ed⇧vaj     informace pomoc     ⇨    sel uloəen⑨ch v registrech procesoru. Nav    c jsem cht❎l p②ehr⇧vac     rutinu volat b❎hem vertik⇧ln    ho zp❎tn⑦ho b❎hu. Um    st❎n     ⇨    sel do registr
  13.  se mus     ps⇧t v assembleru a obsluha VBI tak⑦. ⑧⇧dn⑨ velk⑨ probl⑦m to nebyl.¢¢4.P②id⇧n     rutin v assembleru¢============================¢Jak jsem napsal v⑨③e, sou⇨⇧st     CC65 je samoz②ejm❎ i assembler. Sta⇨ilo se pod    vat, na co p②eloə     CC65 pr⇧zdnou funkci. Pak uə zb⑨valo jen dopsat jej     t❎lo a do hlavn    ho programu p②ipsat jej     prototyp. Vytvo②il jsem tedy n❎kolik funkc     k ②    zen     p②ehr⇧vac     rutiny v assembleru. P②idal jsem tak⑦ obsluhu VBI.¢¢Hlavn     program a rutiny v assembleru se p②ekl⇧daly zvl⇧③④ a pak se slinkovaly. K prom❎nn⑨m deklarovan⑨m v souboru s rutinami v assembleru ③lo tak⑦ snadno p②istupovat z hlavn    ho programu. V hlavn    m programu se jen p②id⇧ k jejich deklaraci kl    ⇨ov⑦ slovo extern. P②id⇧n     rutin v assembleru ③lo ne⇨ekan❎ hladce. Dobr⇧ zpr⇧va pro program⇧tory r
  14. zn⑨ch efekt
  15. .¢¢5.Z⇧v❎rem¢=========¢Mysl    m əe v⑨voj pomoc     CC65 spluje z⇧kladn     poəadavky atarist
  16.  - CC65 produkuje efektivn     kd, umoəuje snadno vkl⇧dat rutiny v assembleru, nen     probl⑦m um    s④ovat data na konkr⑦tn     adresy. Cenou za p②ehlednost programu je sp    ③e zv⑨③en⇧ spot②eba pam❎ti, neə ztr⇧ta v⑨po⇨etn    ho v⑨konu. Moje hra vznikla za necel⑦ 3 dny. ¢V    ce neə tento text v⇧m ②eknou zdrojov⑦ kdy a kompila⇨n     skripty, kter⑦ si m
  17. əete st⇧hnout.¢V⑨voj pomoc     CC65 doporu⇨uji zejm⑦na program⇧tor
  18. m v BASICu a jeho variant⇧ch. Z    skaj     vy③③     v⑨kon p②i zachov⇧n     vysoko⑤rovov⑦ho jazyka. A tak⑦ strojov⑦ rutiny ve form❎ DATA ②⇧dk
  19.  se stanou minulost    . Maxim⇧ln     v⑨kon ale z Atari nedostanete.¢