mzxhelp.html 807 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071
  1. <html>
  2. <head>
  3. <title>MegaZeux 2.91j (20190220) - Help File</title>
  4. <style>
  5. /* MegaZeux
  6. *
  7. * Copyright (C) 2012 Alice Rowan <petrifiedrowan@gmail.com>
  8. * Copyright (C) 2012 Dr. Lancer-X
  9. *
  10. * This program is free software; you can redistribute it and/or
  11. * modify it under the terms of the GNU General Public License as
  12. * published by the Free Software Foundation; either version 2 of
  13. * the License, or (at your option) any later version.
  14. *
  15. * This program is distributed in the hope that it will be useful,
  16. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  18. * General Public License for more details.
  19. *
  20. * You should have received a copy of the GNU General Public License
  21. * along with this program; if not, write to the Free Software
  22. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  23. */
  24. /**
  25. * fonts.css: Embeddable MZX fonts.
  26. */
  27. @font-face
  28. {
  29. font-family: 'mzxfont';
  30. src: /* mzxfont.eot */
  31. url(data:application/vnd.ms-fontobject;charset=utf-8;base64,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NjIWFAYiJjQ2MhYUBiI2NDYyFhQGIiY0NjIWFAYiNjQ2MhYUBiImNDYyFhQGIjY0NjIWFAYiJjQ2MhYUBiI2NDYyFhQGIiY0NjIWFAYiNjQ2MhYUBiImNDYyFhQGIjY0NjIWFAYiJjQ2MhYUBiK0BR4FBR6lBR4FBR7rBR4FBR6lBR4FBR5LBR4FBR6lBR4FBR7rBR4FBR6lBR4FBR5LBR4FBR6lBR4FBR7rBR4FBR6lBR4FBR5LBR4FBR6lBR4FBR7rBR4FBR6lBR4FBR5LBR4FBR6lBR4FBR7rBR4FBR6lBR4FBR5LBR4FBR6lBR4FBR7rBR4FBR6lBR4FBR5LBR4FBR6lBR4FBR7rBR4FBR6lBR4FBR4EHgUFHgUFHgUFHgUtHgUFHgUFHgUFHgUtHgUFHgUFHgUFHgUtHgUFHgUFHgUFHgUtHgUFHgUFHgUFHgUtHgUFHgUFHgUFHgUtHgUFHgUFHgUFHgUtHgUFHgUFHgUFHgUtHgUFHgUFHgUFHgUtHgUFHgUFHgUFHgUtHgUFHgUFHgUFHgUtHgUFHgUFHgUFHgUtHgUFHgUFHgUFHgUtHgUFHgUFHgUFHgUABAAA//8BQAIvAF8AnwE/Ab8AABI0NjIWFBYyNjQ2MhYUBiIGFBYyFhQGIgYUFjIWFAYiBhQWMhYUBiIGFBYyFhQGIgYUBiImNCYiBhQGIiY0NjI2NCYiJjQ2MjY0JiImNDYyNjQmIiY0NjI2NCYiJjQ2MhY0JiIGFBYyFhQGIgYUFjIWFAYiBhQWMhYUBiIGFBYyFhQWMjY0JiImNDYyNjQmIiY0NjI2NCYiJjQ2MjY0JiImNDYyFhQWMjY0NjIWFBYyNjQ2MhYUFjI2NDYyFhQGIgYUFjIWFAYiBhQWMhYUBiIGFBYyFhQGIgYUFjIWFAYiBhQWMhYUBiIGFBYyFhQGIgYUBiImNCYiBhQGIiY0JiIGFAYiJjQmIgYUBiImNDYyNjQmIiY0NjI2NCYiJjQ2MjY0JiImNDYyNjQmIiY0NjI2NCYiJjQ2MjY0JiImNDYyFjQmIgYUFjIWFAYiBhQWMhYUBiIGFBYyFhQGIgYUFjIWFAYiBhQWMhYUBiIGFBYyFhQWMjY0NjIWFBYyNjQ2MhYUFjI2NCYiJjQ2MjY0JiImNDYyNjQmIiY0NjI2NCYiJjQ2MjY0JiImNDYyNjQmIiY0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VStlMDk3BlUrZTA5OAZVK2UwOTkGVStlMDlhBlUrZTA5YgZVK2UwOWMGVStlMDlkBlUrZTA5ZQZVK2UwOWYGVStlMGEwBlUrZTBhMQZVK2UwYTIGVStlMGEzBlUrZTBhNAZVK2UwYTUGVStlMGE2BlUrZTBhNwZVK2UwYTgGVStlMGE5BlUrZTBhYQZVK2UwYWIGVStlMGFjBlUrZTBhZAZVK2UwYWUGVStlMGFmBlUrZTBiMAZVK2UwYjEGVStlMGIyBlUrZTBiMwZVK2UwYjQGVStlMGI1BlUrZTBiNgZVK2UwYjcGVStlMGI4BlUrZTBiOQZVK2UwYmEGVStlMGJiBlUrZTBiYwZVK2UwYmQGVStlMGJlBlUrZTBiZgZVK2UwYzAGVStlMGMxBlUrZTBjMgZVK2UwYzMGVStlMGM0BlUrZTBjNQZVK2UwYzYGVStlMGM3BlUrZTBjOAZVK2UwYzkGVStlMGNhBlUrZTBjYgZVK2UwY2MGVStlMGNkBlUrZTBjZQZVK2UwY2YGVStlMGQwBlUrZTBkMQZVK2UwZDIGVStlMGQzBlUrZTBkNAZVK2UwZDUGVStlMGQ2BlUrZTBkNwZVK2UwZDgGVStlMGQ5BlUrZTBkYQZVK2UwZGIGVStlMGRjBlUrZTBkZAZVK2UwZGUGVStlMGRmBlUrZTBlMAZVK2UwZTEGVStlMGUyBlUrZTBlMwZVK2UwZTQGVStlMGU1BlUrZTBlNgZVK2UwZTcGVStlMGU4BlUrZTBlOQZVK2UwZWEGVStlMGViBlUrZTBlYwZVK2UwZWQGVStlMGVlBlUrZTBlZgZVK2UwZjAGVStlMGYxBlUrZTBmMgZVK2UwZjMGVStlMGY0BlUrZTBmNQZVK2UwZjYGVStlMGY3BlUrZTBmOAZVK2UwZjkGVStlMGZhBlUrZTBmYgZVK2UwZmMGVStlMGZkBlUrZTBmZQZVK2UwZmYAAAAB//8AAgABAAAADgAAABgAIAAAAAIAAQABAQoAAQAEAAAAAgAAAAEAAAABAAAAAAABAAAAAMmJbzEAAAAAzAgvTwAAAADMCE7f);
  32. src: /* mzxfont.woff */
  33. url(data:application/x-font-woff;charset=utf-8;base64,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)
  34. format('woff'),
  35. /* mzxfont.ttf */
  36. url(data:application/font-sfnt;charset=utf-8;base64,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HgUFHksFHgUFHqUFHgUFHusFHgUFHqUFHgUFHksFHgUFHqUFHgUFHusFHgUFHqUFHgUFHksFHgUFHqUFHgUFHusFHgUFHqUFHgUFHksFHgUFHqUFHgUFHusFHgUFHqUFHgUFHgQeBQUeBQUeBQUeBS0eBQUeBQUeBQUeBS0eBQUeBQUeBQUeBS0eBQUeBQUeBQUeBS0eBQUeBQUeBQUeBS0eBQUeBQUeBQUeBS0eBQUeBQUeBQUeBS0eBQUeBQUeBQUeBS0eBQUeBQUeBQUeBS0eBQUeBQUeBQUeBS0eBQUeBQUeBQUeBS0eBQUeBQUeBQUeBS0eBQUeBQUeBQUeBS0eBQUeBQUeBQUeBQAEAAD//wFAAi8AXwCfAT8BvwAAEjQ2MhYUFjI2NDYyFhQGIgYUFjIWFAYiBhQWMhYUBiIGFBYyFhQGIgYUFjIWFAYiBhQGIiY0JiIGFAYiJjQ2MjY0JiImNDYyNjQmIiY0NjI2NCYiJjQ2MjY0JiImNDYyFjQmIgYUFjIWFAYiBhQWMhYUBiIGFBYyFhQGIgYUFjIWFBYyNjQmIiY0NjI2NCYiJjQ2MjY0JiImNDYyNjQmIiY0NjIWFBYyNjQ2MhYUFjI2NDYyFhQWMjY0NjIWFAYiBhQWMhYUBiIGFBYyFhQGIgYUFjIWFAYiBhQWMhYUBiIGFBYyFhQGIgYUFjIWFAYiBhQGIiY0JiIGFAYiJjQmIgYUBiImNCYiBhQGIiY0NjI2NCYiJjQ2MjY0JiImNDYyNjQmIiY0NjI2NCYiJjQ2MjY0JiImNDYyNjQmIiY0NjIWNCYiBhQWMhYUBiIGFBYyFhQGIgYUFjIWFAYiBhQWMhYUBiIGFBYyFhQGIgYUFjIWFBYyNjQ2MhYUFjI2NDYyFhQWMjY0JiImNDYyNjQmIiY0NjI2NCYiJjQ2MjY0JiImNDYyNjQmIiY0NjI2NCYiJjQmIgYUBiImNCYiBhQGIngFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHi0FHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHn0FHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUFHgUF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AQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAClAWEBYgFjAJwBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+Af8CAAIBAgICAwIEAgUCBgIHBlUrMDAyMAZVKzAwMjEGVSswMDIyBlUrMDAyMwZVKzAwMjQGVSswMDI1BlUrMDAyNgZVKzAwMjcGVSswMDI4BlUrMDAyOQZVKzAwMmEGVSswMDJiBlUrMDAyYwZVKzAwMmQGVSswMDJlBlUrMDAyZgZVKzAwMzAGVSswMDMxBlUrMDAzMgZVKzAwMzMGVSswMDM0BlUrMDAzNQZVKzAwMzYGVSswMDM3BlUrMDAzOAZVKzAwMzkGVSswMDNhBlUrMDAzYgZVKzAwM2MGVSswMDNkBlUrMDAzZQZVKzAwM2YGVSswMDQwBlUrMDA0MQZVKzAwNDIGVSswMDQzBlUrMDA0NAZVKzAwNDUGVSswMDQ2BlUrMDA0NwZVKzAwNDgGVSswMDQ5BlUrMDA0YQZVKzAwNGIGVSswMDRjBlUrMDA0ZAZVKzAwNGUGVSswMDRmBlUrMDA1MAZVKzAwNTEGVSswMDUyBlUrMDA1MwZVKzAwNTQGVSswMDU1BlUrMDA1NgZVKzAwNTcGVSswMDU4BlUrMDA1OQZVKzAwNWEGVSswMDViBlUrMDA1YwZVKzAwNWQGVSswMDVlBlUrMDA1ZgZVKzAwNjAGVSswMDYxBlUrMDA2MgZVKzAwNjMGVSswMDY0BlUrMDA2NQZVKzAwNjYGVSswMDY3BlUrMDA2OAZVKzAwNjkGVSswMDZhBlUrMDA2YgZVKzAwNmMGVSswMDZkBlUrMDA2ZQZVKzAwNmYGVSswMDcwBlUrMDA3MQZVKzAwNzIGVSswMDczBlUrMDA3NAZVKzAwNzUGVSswMDc2BlUrMDA3NwZVKzAwNzgGVSswMDc5BlUrMDA3YQZVKzAwN2IGVSswMDdjBlUrMDA3ZAZVKzAwN2UFYW5nbGUMaW50ZXJzZWN0aW9uBXVuaW9uB3VuaTIyMzUHdW5pMjI1MgtlcXVpdmFsZW5jZQ1wZXJwZW5kaWN1bGFyBlUrZTAwMQZVK2UwMDIGVStlMDAzBlUrZTAwNAZVK2UwMDUGVStlMDA2BlUrZTAwNwZVK2UwMDgGVStlMDA5BlUrZTAwYQZVK2UwMGIGVStlMDBjBlUrZTAwZAZVK2UwMGUGVStlMDBmBlUrZTAxMAZVK2UwMTEGVStlMDEyBlUrZTAxMwZVK2UwMTQGVStlMDE1BlUrZTAxNgZVK2UwMTcGVStlMDE4BlUrZTAxOQZVK2UwMWEGVStlMDFiBlUrZTAxYwZVK2UwMWQGVStlMDFlBlUrZTAxZgZVK2UwN2YGVStlMDgwBlUrZTA4MQZVK2UwODIGVStlMDgzBlUrZTA4NAZVK2UwODUGVStlMDg2BlUrZTA4NwZVK2UwODgGVStlMDg5BlUrZTA4YQZVK2UwOGIGVStlMDhjBlUrZTA4ZAZVK2UwOGUGVStlMDhmBlUrZTA5MAZVK2UwOTEGVStlMDkyBlUrZTA5MwZVK2UwOTQGVStlMDk1BlUrZTA5NgZVK2UwOTcGVStlMDk4BlUrZTA5OQZVK2UwOWEGVStlMDliBlUrZTA5YwZVK2UwOWQGVStlMDllBlUrZTA5ZgZVK2UwYTAGVStlMGExBlUrZTBhMgZVK2UwYTMGVStlMGE0BlUrZTBhNQZVK2UwYTYGVStlMGE3BlUrZTBhOAZVK2UwYTkGVStlMGFhBlUrZTBhYgZVK2UwYWMGVStlMGFkBlUrZTBhZQZVK2UwYWYGVStlMGIwBlUrZTBiMQZVK2UwYjIGVStlMGIzBlUrZTBiNAZVK2UwYjUGVStlMGI2BlUrZTBiNwZVK2UwYjgGVStlMGI5BlUrZTBiYQZVK2UwYmIGVStlMGJjBlUrZTBiZAZVK2UwYmUGVStlMGJmBlUrZTBjMAZVK2UwYzEGVStlMGMyBlUrZTBjMwZVK2UwYzQGVStlMGM1BlUrZTBjNgZVK2UwYzcGVStlMGM4BlUrZTBjOQZVK2UwY2EGVStlMGNiBlUrZTBjYwZVK2UwY2QGVStlMGNlBlUrZTBjZgZVK2UwZDAGVStlMGQxBlUrZTBkMgZVK2UwZDMGVStlMGQ0BlUrZTBkNQZVK2UwZDYGVStlMGQ3BlUrZTBkOAZVK2UwZDkGVStlMGRhBlUrZTBkYgZVK2UwZGMGVStlMGRkBlUrZTBkZQZVK2UwZGYGVStlMGUwBlUrZTBlMQZVK2UwZTIGVStlMGUzBlUrZTBlNAZVK2UwZTUGVStlMGU2BlUrZTBlNwZVK2UwZTgGVStlMGU5BlUrZTBlYQZVK2UwZWIGVStlMGVjBlUrZTBlZAZVK2UwZWUGVStlMGVmBlUrZTBmMAZVK2UwZjEGVStlMGYyBlUrZTBmMwZVK2UwZjQGVStlMGY1BlUrZTBmNgZVK2UwZjcGVStlMGY4BlUrZTBmOQZVK2UwZmEGVStlMGZiBlUrZTBmYwZVK2UwZmQGVStlMGZlBlUrZTBmZgAAAAH//wACAAEAAAAOAAAAGAAgAAAAAgABAAEBCgABAAQAAAACAAAAAQAAAAEAAAAAAAEAAAAAyYlvMQAAAADMCC9PAAAAAMwITt8=)
  37. format('truetype');
  38. /* The original thing that was here:
  39. src: url('mzxfont.eot');
  40. src: url('mzxfont.eot?#iefix') format('embedded-opentype'),
  41. url('mzxfont.woff') format('woff'),
  42. url('mzxfont.tff') format('truetype');
  43. */
  44. font-weight: normal;
  45. font-style: normal;
  46. /* Try to fix the ugly blur. */
  47. /*
  48. font-smooth: never;
  49. font-smoothing: unset;
  50. -webkit-font-smoothing: none;
  51. -moz-osx-font-smoothing: unset;
  52. */
  53. }
  54. </style>
  55. <style>
  56. /* MegaZeux
  57. *
  58. * Copyright (C) 2018 Alice Rowan <petrifiedrowan@gmail.com>
  59. *
  60. * This program is free software; you can redistribute it and/or
  61. * modify it under the terms of the GNU General Public License as
  62. * published by the Free Software Foundation; either version 2 of
  63. * the License, or (at your option) any later version.
  64. *
  65. * This program is distributed in the hope that it will be useful,
  66. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  67. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  68. * General Public License for more details.
  69. *
  70. * You should have received a copy of the GNU General Public License
  71. * along with this program; if not, write to the Free Software
  72. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  73. */
  74. /**
  75. * style.css: Embeddable formatting CSS for HTML help file generation.
  76. */
  77. body
  78. {
  79. margin: 0px;
  80. }
  81. #helpnav
  82. {
  83. font-family: Arial, Helvetica, sans-serif;
  84. width: 100%;
  85. height: 5em;
  86. padding: .5em;
  87. padding-left: 0px;
  88. padding-right: 0px;
  89. border-bottom: 5px solid;
  90. text-align: center;
  91. /* Floating navigation bar. */
  92. position: fixed;
  93. top: 0;
  94. }
  95. #helpnav h1
  96. {
  97. display: block;
  98. margin: .5em;
  99. padding: 0px;
  100. font-size: 1.5em;
  101. }
  102. .helpnavcentered
  103. {
  104. display: inline;
  105. text-align: center;
  106. }
  107. .helpnavcentered ul
  108. {
  109. padding: 0px;
  110. margin: .25em;
  111. }
  112. .helpnavcentered li
  113. {
  114. display: inline-block;
  115. margin: 1px;
  116. list-style-type: none;
  117. text-align: center;
  118. font-size: .95em;
  119. }
  120. .helpnavcentered li a
  121. {
  122. background-color: #222;
  123. border-color: #222;
  124. border-radius: 4px 4px;
  125. -moz-border-radius: 4px 4px;
  126. padding: 3px 5px;
  127. color: #FFF;
  128. text-decoration: none;
  129. }
  130. .helpnavcentered li a:hover
  131. {
  132. background-color: #666;
  133. border-color: #666;
  134. }
  135. #helpcontainer
  136. {
  137. font-family: 'mzxfont';
  138. width: 512px;
  139. height: auto;
  140. padding: 3px 76px;
  141. margin: auto;
  142. overflow: auto;
  143. white-space: pre;
  144. line-height: 14px;
  145. font-size: 14px;
  146. /* Extra top padding to help fix anchors. */
  147. padding-top: 6em;
  148. }
  149. .helpfile
  150. {
  151. page-break-after: always;
  152. }
  153. .helpfile hr
  154. {
  155. background-color: #000;
  156. height: 2px;
  157. margin: 14px 8px;
  158. border: none;
  159. }
  160. .helpcentered
  161. {
  162. display: block;
  163. text-align: center;
  164. margin: 0px;
  165. }
  166. .helpanchor
  167. {
  168. /* This forces the page to jump above the anchor so it doesn't display
  169. * under the navigation bar. */
  170. padding-top: 8em;
  171. margin-top: -8em;
  172. /* This is a fix for the fix above so the now gigantic anchor doesn't
  173. * cover links up. */
  174. pointer-events: none;
  175. }
  176. .helplink
  177. {
  178. text-decoration: none;
  179. }
  180. .helplink:before
  181. {
  182. padding-right: 8px;
  183. font-family: 'mzxfont';
  184. content: "\E010";
  185. }
  186. @media print
  187. {
  188. #helpnav
  189. {
  190. /* Disable the floating navigation bar in print mode. */
  191. position: absolute;
  192. border-bottom: 3px solid;
  193. }
  194. .helpnavcentered
  195. {
  196. /* Hide navigation buttons when in print mode. */
  197. display: none;
  198. }
  199. }
  200. @media only screen and (max-width: 680px),
  201. only screen and (max-device-width: 1080px)
  202. {
  203. /* Disable big margins on small windows, small displays, or phones. */
  204. #helpcontainer
  205. {
  206. padding: 3px 8px;
  207. padding-top: 6em;
  208. }
  209. }
  210. @media only screen and (max-device-width: 800px)
  211. {
  212. /* Probably a phone. Scale up navigation and text. */
  213. #helpnav
  214. {
  215. height: 7em;
  216. }
  217. #helpnav h1
  218. {
  219. font-size: 2em;
  220. }
  221. .helpnavcentered li
  222. {
  223. font-size: 1.5em;
  224. }
  225. #helpcontainer
  226. {
  227. width: 768px;
  228. line-height: 21px;
  229. font-size: 21px;
  230. }
  231. }
  232. @media only screen and (max-device-width: 1080px)
  233. {
  234. /* Probably a phone. Scale up navigation and text. */
  235. #helpnav
  236. {
  237. height: 8em;
  238. }
  239. #helpnav h1
  240. {
  241. font-size: 2.5em;
  242. }
  243. .helpnavcentered li
  244. {
  245. font-size: 1.75em;
  246. }
  247. #helpcontainer
  248. {
  249. width: 960px;
  250. line-height: 26px;
  251. font-size: 26px;
  252. }
  253. }
  254. </style>
  255. <style>
  256. /* MegaZeux
  257. *
  258. * Copyright (C) 2018 Alice Rowan <petrifiedrowan@gmail.com>
  259. *
  260. * This program is free software; you can redistribute it and/or
  261. * modify it under the terms of the GNU General Public License as
  262. * published by the Free Software Foundation; either version 2 of
  263. * the License, or (at your option) any later version.
  264. *
  265. * This program is distributed in the hope that it will be useful,
  266. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  267. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  268. * General Public License for more details.
  269. *
  270. * You should have received a copy of the GNU General Public License
  271. * along with this program; if not, write to the Free Software
  272. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  273. */
  274. /**
  275. * style_color.css: Embeddable color CSS for HTML help files.
  276. * Should only style outside of printing mode.
  277. *
  278. * TODO: possibly invert the query here.
  279. */
  280. @media not print
  281. {
  282. body
  283. {
  284. background-color: #333;
  285. }
  286. #helpnav
  287. {
  288. background-color: #444;
  289. color: #FFF;
  290. border-bottom-color: #333;
  291. }
  292. #helpcontainer
  293. {
  294. background-color: #555;
  295. color: #FFF;
  296. }
  297. .helplink { color: #FFFFFF; }
  298. .helplink:before { color: #FFFF55; }
  299. .helplink:hover { color: #FF55FF; }
  300. .f0 { color: #000000; }
  301. .f1 { color: #0000AA; }
  302. .f2 { color: #00AA00; }
  303. .f3 { color: #00AAAA; }
  304. .f4 { color: #AA0000; }
  305. .f5 { color: #AA00AA; }
  306. .f6 { color: #AA5500; }
  307. .f7 { color: #AAAAAA; }
  308. .f8 { color: #555555; }
  309. .f9 { color: #7777FF; } /* Should be #5555FF, but that's ugly on dk grey. */
  310. .fa, .fA { color: #55FF55; }
  311. .fb, .fB { color: #55FFFF; }
  312. .fc, .fC { color: #FF5555; }
  313. .fd, .fD { color: #FF55FF; }
  314. .fe, .fE { color: #FFFF55; }
  315. .ff, .fF { color: #FFFFFF; }
  316. .b0 { background-color: #000000; }
  317. .b1 { background-color: #0000AA; }
  318. .b2 { background-color: #00AA00; }
  319. .b3 { background-color: #00AAAA; }
  320. .b4 { background-color: #AA0000; }
  321. .b5 { background-color: #AA00AA; }
  322. .b6 { background-color: #AA5500; }
  323. .b7 { background-color: #AAAAAA; }
  324. .b8 { background-color: #555555; }
  325. .b9 { background-color: #5555FF; }
  326. .ba, .bA { background-color: #55FF55; }
  327. .bb, .bB { background-color: #55FFFF; }
  328. .bc, .bC { background-color: #FF5555; }
  329. .bd, .bD { background-color: #FF55FF; }
  330. .be, .bE { background-color: #FFFF55; }
  331. .bf, .bF { background-color: #FFFFFF; }
  332. }
  333. </style>
  334. </head>
  335. <body>
  336. <div id="helpnav">
  337. <h1>MegaZeux 2.91j (20190220) - Help File</h1>
  338. <div class="helpnavcentered"><ul>
  339. <li><a href="#MAIN.HLP__072">Contents</a></li><li><a href="#EDITINGK.HLP__080">Editor Keys</a></li><li><a href="#ROBOTICR.HLP__087">Robotic Manual</a></li><li><a href="#COMMANDR.HLP__1st">Commands</a></li><li><a href="#COUNTERS.HLP__1st">Counters</a></li><li><a href="#NEWINVER.HLP__1st">Changelog</a></li></ul></div>
  340. </div>
  341. <div id="helpcontainer">
  342. <div class="helpfile" id="MAIN.HLP">
  343. <span class="b1 "> </span>
  344. <span class="b1 "> </span><span class="ff b1 ">M </span><span class="fb b1 ">E G </span><span class="f3 b1 ">A Z </span><span class="fb b1 ">E U </span><span class="ff b1 ">X </span>
  345. <span class="b1 "> </span>
  346. <a class="helpanchor" name="MAIN.HLP__072"> <span class="f9 ">Table of Contents</span></a>
  347. <a class="helplink" href="#FAQ.HLP__1st">FREQUENTLY ASKED QUESTIONS.</a>
  348. <a class="helplink" href="#CONFGINI.HLP__1st">The Config File</a>
  349. <a class="helplink" href="#HELPONHE.HLP__000">Help on Help (Press F1 Within Help to Read This)</a>
  350. <a class="helplink" href="#MOUSESUP.HLP__1st">Mouse Support in MegaZeux</a>
  351. <a class="helplink" href="#1ST_TIME.HLP__071">Overview of MegaZeux - First Time Users Read This!</a>
  352. <a class="helplink" href="#ZZT.HLP__zzt">A ZZTer's Guide to MegaZeux</a>
  353. <a class="helplink" href="#DIABOX.HLP__098">Dialog Boxes</a>
  354. <a class="helplink" href="#CONTROLS.HLP__ctr">Controls</a>
  355. <a class="helplink" href="#NONDESCR.HLP__091">Nondescript Play Tips</a>
  356. <a class="helplink" href="#BUILTINS.HLP__1st">The Mirth of Built-ins</a>
  357. <a class="helplink" href="#THEWORLD.HLP__1st">The World Editor</a>
  358. <a class="helplink" href="#GENERALE.HLP__1st">General Editing Tips</a>
  359. <a class="helplink" href="#EDITINGK.HLP__080">Editing Keys and Options Reference</a>
  360. <a class="helplink" href="#CHAREDIT.HLP__079">The Character Editor</a>
  361. <a class="helplink" href="#PALEEDIT.HLP__093">The Palette Editor</a>
  362. <a class="helplink" href="#SMZXMODE.HLP__095">Super MegaZeux Modes</a>
  363. <a class="helplink" href="#GLOBALIN.HLP__086">Global Info Options</a>
  364. <a class="helplink" href="#BOARDINF.HLP__085">Board Info Options</a>
  365. <a class="helplink" href="#SOUNDEFX.HLP__1st">MegaZeux's Sound System</a>
  366. <a class="helplink" href="#TOVERLAY.HLP__081">Editing and Using the Overlay</a>
  367. <a class="helplink" href="#SCROLLSS.HLP__1st">Signs and Scrolls in the Editor</a>
  368. <a class="helplink" href="#SENSORSW.HLP__094">Sensors - What They Are and How to Use Them</a>
  369. <a class="helplink" href="#ROBOTSWH.HLP__1st">Robots - What They Are and How to Use Them</a>
  370. <a class="helplink" href="#ROBOTICT.HLP__1st">Robotic Tutorial</a>
  371. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  372. <a class="helplink" href="#UPDATER.HLP__099">The MegaZeux Updater</a>
  373. <a class="helplink" href="#DBGMODE.HLP__dbg">Debug Modes</a>
  374. <a class="helplink" href="#ERRORMES.HLP__1st">Error Messages</a>
  375. <a class="helplink" href="#MEGAZEUX.HLP__1st">MegaZeux Limitations</a>
  376. <a class="helplink" href="#IFYOUFIN.HLP__1st">If You Find a Bug...</a>
  377. <a class="helplink" href="#NEWINVER.HLP__1st">NEW in MegaZeux!</a>
  378. <p class="helpcentered">** Credits and Acknowledgments **</p>
  379. <p class="helpcentered">Programming and Overall Design by Gilead Kutnick (Exophase),</p><p class="helpcentered">Alistair Strachan (ajs), Alice Rowan (Lachesis) and Lancer-X</p><p class="helpcentered">Based off of original program and source code by Alexis Janson</p><p class="helpcentered">Help file by Terryn</p><p class="helpcentered">Default SMZX palette by Joel Lamontagne (LogiCow)</p><p class="helpcentered">ccv utility by Lancer-X</p><p class="helpcentered">png2smzx utility by Alan Williams (Mr_Alert)</p><p class="helpcentered">checkres utility by Josh Matthews (Revvy), ajs and Lachesis</p><p class="helpcentered">Port contributors: Adrian Siekierka (asiekierka) [3DS],</p><p class="helpcentered">Mr_Alert [Wii], Kevin Vance [NDS], Simon Parzer [GP2X]</p><p class="helpcentered">Renderer code contributors: LogiCow, Mr_Alert</p><p class="helpcentered">Shader code contributors: David Cravens (astral), GreaseMonkey</p><p class="helpcentered">Icon by Quantum P.; Extra icons by LogiCow</p><p class="helpcentered">GDM conversion by ajs and MadBrain</p><p class="helpcentered">Other past contributors: Spider124, Koji, JZig, Akwende,</p><p class="helpcentered">MenTaLguY.</p>
  380. <p class="helpcentered">** Special Thanks **</p>
  381. <p class="helpcentered">Insidious (.deb Builds)</p><p class="helpcentered">mzxgiant (MSVC Testing, Bug Fixes)</p><p class="helpcentered">mzxrules (Testing)</p><p class="helpcentered">Quantum P. (OS X Testing / Builds)</p><p class="helpcentered">Spectere (OS X Builds)</p><p class="helpcentered">Terryn (Testing)</p><p class="helpcentered">Wervyn (Testing)</p>
  382. <p class="helpcentered">MegaZeux 2.80 Thanks & Beta Testers:</p><p class="helpcentered">Exophase</p><p class="helpcentered">ZoMbIeGuY</p><p class="helpcentered">Wervyn</p><p class="helpcentered">Quasar84</p><p class="helpcentered">Lancer-X</p><p class="helpcentered">KenOhki2112</p><p class="helpcentered">Terryn</p><p class="helpcentered">Inuchance (Macintosh testing)</p><p class="helpcentered">Everyone who submitted a bug report</p>
  383. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  384. <hr /></div>
  385. <div class="helpfile" id="HELPONHE.HLP">
  386. <a class="helpanchor" name="HELPONHE.HLP__000"> </a>
  387. <p class="helpcentered"><span class="f9 ">Help on Help</span></p>
  388. Using MegaZeux's help system is very simple. Press F1 at almost
  389. any time to bring up context-relevant help. Within help, use the
  390. arrow keys to scroll the current section. Press PageUp and
  391. PageDown to scroll faster. Many sections of help contain
  392. selections, like this:
  393. <a class="helplink" href="#HELPONHE.HLP__sl">Selection</a>
  394. <a class="helpanchor" name="HELPONHE.HLP__sl"> </a>
  395. Scroll the section until the pointer is aligned with the arrows
  396. on the edges of the help box, and press Enter. You will jump to
  397. a help section indicated by the selection. Example: If a
  398. selection says "Controls", scroll until the word is aligned
  399. with the arrows on the left and right, and press Enter. You
  400. should now be reading help on Controls.
  401. Press F1 within help to jump to this section. Press Alt+F1
  402. within help to jump to the Table of Contents (Table of Major
  403. Help Topics). Press ESC to exit the help system.
  404. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  405. <hr /></div>
  406. <div class="helpfile" id="1ST_TIME.HLP">
  407. <a class="helpanchor" name="1ST_TIME.HLP__071"> </a>
  408. <p class="helpcentered"><span class="f9 ">Overview of MegaZeux</span></p>
  409. <p class="helpcentered">Welcome to MegaZeux! Use the arrow keys to scroll</p><p class="helpcentered">this text, and ESC when you are done reading.</p>
  410. <p class="helpcentered">Press END to learn about the NEW FEATURES in</p><p class="helpcentered">MegaZeux!</p>
  411. As you may already know, MegaZeux is a game system which
  412. allows you to play almost limitless worlds with
  413. dated-yet-charming graphics and with excellent digitized music
  414. and sound. Not only are there several MZX worlds out there
  415. already, but new worlds are being uploaded to large websites
  416. like DigitalMZX. However, the best feature of MegaZeux is the
  417. World Editor.
  418. Using the World Editor, ANYONE can create the world of their
  419. dreams. Make it as simple or complex (well, almost), as easy
  420. or difficult, as long or short as you please. We aren't just
  421. talking about worlds made up of petty, pre-programmed enemies
  422. and objects; MegaZeux has its own, easy-to-use PROGRAMMING
  423. LANGUAGE called Robotic that allows you to create objects,
  424. engines and worlds that do almost anything you desire.
  425. For the newest user, it's recommended that you play Caverns,
  426. the first ever MegaZeux game, to get the feel of simple yet
  427. well-designed games in MegaZeux. You may wish to read the help
  428. section entitled "Controls" to learn how to play MegaZeux.
  429. If you're more adventurous, start with a more complex game like
  430. Demon Earth or Bernard the Bard, or a prettier game like & or
  431. Fritz Blitz to see what kind of graphics functions, bells and
  432. whistles MZX can offer.
  433. Once you have the feel for the game, feel free to dive into the
  434. World Editor and get messy! You should probably read the help
  435. section entitled "The World Editor" first.
  436. To go to one of these sections now, hit Enter after aligning
  437. the arrows with one of these choices. Press ESC now to exit to
  438. the game.
  439. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  440. <a class="helplink" href="#CONTROLS.HLP__ctr">Controls</a>
  441. <a class="helplink" href="#THEWORLD.HLP__1st">The World Editor</a>
  442. <a class="helplink" href="#NEWINVER.HLP__1st">NEW in MegaZeux!</a>
  443. <hr /></div>
  444. <div class="helpfile" id="ZZT.HLP">
  445. <a class="helpanchor" name="ZZT.HLP__zzt"> </a>
  446. <p class="helpcentered"><span class="f9 ">A ZZTer's Guide to MegaZeux</span></p>
  447. ZZT and MegaZeux are worlds apart, although one can convert
  448. from making ZZT games to making basic MegaZeux games with
  449. (mostly) minimal effort. This section is to help seasoned
  450. ZZTers adjust to MegaZeux.
  451. Firstly, some mechanistic differences exist.
  452. -MegaZeux uses counters instead of flags; however, counters
  453. can easily be used as flags if set only to 1 and 0.
  454. -MegaZeux has an incredibly high amount of available counters.
  455. -There is no default mechanism for torches.
  456. -No equivalent of centipedes exists as a default enemy.
  457. -Multiple MegaZeux keys of the same color can be picked up at
  458. once.
  459. -There is no board setting controlling the amount of player
  460. shots that can be on a given board.
  461. -Cloning the player has no use in MZX; uses of player clones
  462. need simulated in Robotic.
  463. -The Shift-? hotkey (often used for inventory engines) does not
  464. exist in MegaZeux but can be emulated with Robotic.
  465. -ZZT prevents moving between boards if the other board has an
  466. object where the player would end up, but MZX simply overwrites
  467. the object on the other board with the player.
  468. -Bomb explosions are not instantaneous but instead radiate out
  469. from the center. They are also diamond-shaped as opposed to
  470. a flattened oval shape.
  471. -MegaZeux uses cycle 1 as default (as opposed to ZZT's cycle
  472. 3).
  473. -No equivalent of duplicators exists.
  474. -Seekers (aka "stars") and bears do not destroy Breakaway
  475. territories in MegaZeux.
  476. -MegaZeux water is not equivalent to ZZT water, as it can be
  477. traversed. ZZT water is most similar to MZX's "goop".
  478. -MZX Sharks can be shot. They do not swim in water, but can in
  479. lava or goop. They can also shoot any type of projectile.
  480. -MZX Scrolls cannot execute code. Use a Robot ending with the
  481. "die" command to emulate ZZT scrolls with code instead.
  482. -Terrains that give out a distinctive message on first touch
  483. (fakes, forests) give out no such message in MZX.
  484. -There are two types of Gems; the one that best emulates ZZT
  485. gems is the Magic Gem.
  486. -Lasers will not push the player into other objects. This makes
  487. some ZZT laser configurations a lot less deadly.
  488. -Scrolls with only one line launch a message box (instead of
  489. using the message row for the line).
  490. -ZZT has one less bullet type than MZX; shift MZX types one
  491. tier of "friendliness" for each typical shooter to get
  492. ZZT-equivalent bullets.
  493. -Putting in fake commands for comedic effect (e.g. putting in
  494. <span class="fA ">#GOSUCKANEGG</span><span class="fF "> to make ZZT beep and go "ERR: Bad command</span>
  495. GOSUCKANEGG") does not work in MegaZeux and has to be emulated.
  496. -Special exploits (e.g. black holes, monitors, speed-up
  497. exploit, flag overloading) have no direct MZX equivalent.
  498. -Other, extremely minor, differences best left for total wonks
  499. or for ZZT port authors, while others are implicitly understood
  500. and do not require spelling out.
  501. Secondly, here is how the ZZT-OOP commands convert to Robotic.
  502. ---------------------------------------------------------------
  503. Key:
  504. [*] = There's no direct (i.e. one-line) way to make Robots do
  505. commands on IF statements. A label pointing to the command will
  506. have to do.
  507. [+] = There is no good analogue for this command, due to
  508. bound objects sharing zap/restore settings in ZZT. Without
  509. these concerns, COPYROBOT is the closest match.
  510. [#] = You need to manually add a label at the top of the Robot
  511. for this in MZX.
  512. ---------------------------------------------------------------
  513. <span class="fA ">@object_name = . "@Robot_name"</span>
  514. <span class="fA ">/direction/direction = PERSISTENT GO (works only for cardinal</span>
  515. <span class="fA ">directions and idle: n s e w i)</span>
  516. <span class="fA ">?direction = / "directions"</span>
  517. <span class="fA ">'comment = . "comment"</span>
  518. <span class="fA ">one line of text = * "text"</span>
  519. <span class="fA ">multiple lines of text = % "text"</span>
  520. <span class="fA ">!label;text = ? "label" "text"</span>
  521. <span class="fA ">$ text = % "~ftext" (by default palette)</span>
  522. <span class="fA ">#BECOME thing = BECOME color thing param</span>
  523. <span class="fA ">#BIND object_name = COPYROBOT "Robot" [+]</span>
  524. <span class="fA ">#CHANGE thing newthing = CHANGE color thing param newcolor</span>
  525. <span class="fA ">newthing newparam</span>
  526. <span class="fA ">#CHAR # = CHAR #</span>
  527. <span class="fA ">#CLEAR flag = SET "counter" 0</span>
  528. <span class="fA ">#CYCLE # = CYCLE #</span>
  529. <span class="fA ">#DIE = DIE</span>
  530. <span class="fA ">#END = END</span>
  531. <span class="fA ">#ENDGAME = ENDGAME</span>
  532. <span class="fA ">#GIVE item # = GIVE # item</span>
  533. <span class="fA ">#GO direction = GO direction #</span>
  534. <span class="fA ">#IDLE = WAIT #</span>
  535. <span class="fA ">#IF flag label;text = ? "counter" "label" "text"</span>
  536. <span class="fA ">#IF flag THEN command = IF "counter" = 1 THEN "label" </span>
  537. <span class="fF ">[*]</span>
  538. <span class="fA ">#IF ANY object THEN command = IF ANY color thing param "label"</span>
  539. <span class="fF ">[*]</span>
  540. <span class="fA ">#IF NOT flag THEN command = IF "counter" = 0 THEN "label" </span>
  541. <span class="fF ">[*]</span>
  542. <span class="fA ">#IF condition THEN command = IF condition THEN "label" </span>
  543. <span class="fF ">[*]</span>
  544. <span class="fA ">#IF NOT condition THEN command = IF NOT condition THEN "label"</span>
  545. <span class="fF ">[*]</span>
  546. <span class="fA ">#LOCK = LOCKSELF</span>
  547. <span class="fA ">#PLAY notes = PLAY "notes"</span>
  548. <span class="fA ">#PUT direction thing = PUT color thing param direction</span>
  549. <span class="fA ">#RESTART </span>
  550. <span class="fF ">[#]</span>
  551. <span class="fA ">#RESTORE label = RESTORE "label" #</span>
  552. <span class="fA ">#SEND label = GOTO "label"</span>
  553. <span class="fA ">#SEND Objectname:"label" = SEND "Robotname" "label"</span>
  554. <span class="fA ">#SEND ALL:command = SEND "All" "label" </span>
  555. <span class="fF ">[*]</span>
  556. <span class="fA ">#SET flag = SET "counter" 1</span>
  557. <span class="fA ">#SHOOT direction = SHOOT direction</span>
  558. <span class="fA ">#TAKE item # failure_label = TAKE # item "failure_label"</span>
  559. <span class="fA ">(failure label optional)</span>
  560. <span class="fA ">#THROWSTAR direction = SHOOTSEEKER direction</span>
  561. <span class="fA ">#TRY direction label = TRY direction "label"</span>
  562. <span class="fA ">#UNLOCK = UNLOCKSELF</span>
  563. <span class="fA ">#WALK direction = WALK direction</span>
  564. <span class="fA ">#ZAP label = ZAP "label" #</span>
  565. ---------------------------------------------------------------
  566. As for conditions, a few are changed:
  567. <span class="fA ">ALLIGNED</span><span class="fF "> is now </span><span class="fA ">ALIGNED</span>
  568. <span class="fA ">CONTACT</span><span class="fF "> is now </span><span class="fA ">TOUCHING ANYDIR</span>
  569. <span class="fA ">ENERGIZED</span><span class="fF "> is no longer a condition but the "invinco" label.</span>
  570. ---------------------------------------------------------------
  571. This should be all one needs to make most ZZT-style games for
  572. MegaZeux, except for a little Robotic knowledge to replicate
  573. things like torches and duplicators. Of course, much more
  574. powerful games can be made with MegaZeux; see corresponding
  575. help for details.
  576. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  577. <hr /></div>
  578. <div class="helpfile" id="DIABOX.HLP">
  579. <a class="helpanchor" name="DIABOX.HLP__098"> </a>
  580. <p class="helpcentered"><span class="f9 ">Dialog Boxes</span></p>
  581. Much of MegaZeux's interface is made of dialog boxes. They
  582. are simple and intuitive to use, but instructions for the
  583. uninformed are included here.
  584. A dialog box is a form of inputting various information. An
  585. example of a dialog box is the Save Game box or the Settings
  586. box, both in-game. To use a box is simple - Use TAB and
  587. SHIFT+TAB to highlight an element, and type or use the cursor
  588. keys to change the value. Press ENTER on a button (Rectangle
  589. with a label) to exit the dialog or produce an effect.
  590. MZX also utilizes mouse control. You can click on a dialog box
  591. element to select it, or click on a selected element to change
  592. it. The mouse wheel will cycle up/down the choices in the
  593. current section. Click on a selected button to activate it.
  594. You can usually use HOME to jump to the first section of the
  595. dialog box, and END to jump to the OK or NEXT button. TAB jumps
  596. forward a section, while SHIFT+TAB goes backwards a section.
  597. The different dialog box elements and special related keys
  598. are explained in detail for the remainder of this section.
  599. INPUT - This is where you type in a series of characters,
  600. usually letters and numbers. You can move the cursor around
  601. within the line, type to insert characters, move to the start
  602. with Home, and move to the end with End. Alt + Backspace
  603. deletes the entire line, while Ctrl + Backspace deletes the
  604. last typed word.
  605. NUMBER - This is where you have a number and you change it
  606. with the arrow keys or mouse clicks on buttons. Up, Down, and
  607. the mouse wheel will change it by 1, Alt+Up, Alt+Down and
  608. Alt+Wheel will change it by 10, and PageUp and PageDown will
  609. change it by 100. You can also hold the mouse button down on one
  610. of the arrows to change the number or press 0-9 to set the last
  611. digit. Pressing 0-9 on the keypad changes the current digit to
  612. that value. Finally, Backspace deletes the last digit.
  613. NUMBER LINE - This is a line of numbers, with one highlighted.
  614. It functions in a manner similar to the above, but in a limited
  615. range.
  616. CHARACTER - This is where you can select characters. Press a
  617. character to use that character; click on it or press Enter to
  618. get a large menu of characters (32x8) to select from.
  619. COLOR - This is where you can select a single color. Press
  620. Enter or click on it to get a large menu of colors to choose
  621. from.
  622. CHECK BOXES - These are On/Off switches. Use Up/Down or the
  623. mouse wheel to move within the list of choices, and use Space,
  624. Enter, or mouse clicks to toggle choices on and off. Press Tab
  625. to jump out of a check box section. An [X] means the option is
  626. currently on.
  627. RADIO BUTTONS - These are similar to Check Boxes, but are
  628. mutually exclusive. The mouse or arrow keys will select the
  629. current and ONLY option that is on. The ( ) shows the current
  630. option.
  631. BUTTON - These are rectangles with labels. When selected,
  632. press Enter or click to activate. OK or Done will verify the
  633. contents of the dialog box. Cancel will cancel any changes
  634. you've made. (ESC will usually do this as well.) Next and
  635. Previous move between multiple dialog boxes. Other buttons
  636. do what their label signifies and are explained in the
  637. appropriate help section.
  638. LISTS - These show a selection from a list of choices. The
  639. current selection is shown. Press Enter or click on it to
  640. bring up a list of choices from which you can select a new
  641. choice.
  642. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  643. <hr /></div>
  644. <div class="helpfile" id="CONTROLS.HLP">
  645. <a class="helpanchor" name="CONTROLS.HLP__ctr"> </a>
  646. <p class="helpcentered"><span class="f9 ">Controls</span></p>
  647. Universal controls are as follows:
  648. -Tab goes forward one section; Shift+Tab goes backward one
  649. section.
  650. -Esc cancels.
  651. -Enter selects.
  652. -Alt+Backspace deletes the entire line.
  653. -Ctrl+Backspace deletes the last typed word.
  654. -Ctrl+Left jumps to the previous word; Ctrl+Right jumps to the
  655. next word.
  656. -0 thru 9 sets the last digit in a number box (such as setting
  657. amounts of items in a chest); backspace deletes the last digit.
  658. On Mac platforms, any command that uses the Alt key can take &#xE0BD;&#xE0BE;
  659. (the command key) instead.
  660. File access controls are as follows:
  661. -(0-9 and A-Z) will jump to the first file/directory starting
  662. with that character. More specific seeking can be done by
  663. typing characters in quick succession (for instance, s+e+c
  664. would jump to the first file starting with sec).
  665. -Del will delete the highlighted file/directory. You will be
  666. asked for confirmation.
  667. -Alt+R will rename the highlighted file/directory.
  668. -Alt+N will create a new directory.
  669. In-game controls are as follows:
  670. F1 - Help
  671. Use this at any time to bring up context-relevant help. Within
  672. the game, you will go to the Controls section. Some games may
  673. have this menu disabled or replaced with their own help menus.
  674. Enter - Menu/Status
  675. Use this to bring up a menu of options and a list of your
  676. current stats, such as Score, Gems, any custom-defined status
  677. counters, etc. Some games may have this key do nothing, or even
  678. something different entirely.
  679. ESC - Exit to Title
  680. This will load a prompt to quit the current game and return to
  681. its title screen. In yes/no dialog boxes, this selects the "no"
  682. option. Some games may disable using ESC to trigger the exit
  683. prompt, but other methods (such as Alt+F4) will always work.
  684. F2 or Ctrl+F2 or Alt+F2 - Settings
  685. <a class="helpanchor" name="CONTROLS.HLP__092">This will bring up a dialog box where you can change the</a>
  686. current game settings: Game Speed (if allowed), Music toggle,
  687. Sound toggle, and Audio Volumes (Overall Volume, SoundFX
  688. volume, and PC Speaker SFX).
  689. Speed 1 is the fastest; speed 16 is the slowest. A speed of 1
  690. will run MZX as fast as possible and as such acts differently
  691. between computers; it will also cause flicker in fullscreen
  692. mode, so it is not recommended unless it is your only option.
  693. (Please note that some games may have the speed change by
  694. itself; the next load will change to the default speed unless
  695. otherwise prompted.)
  696. No changes to sound options will go into effect until the
  697. Settings menu is left.
  698. In addition to these settings, one can change the current
  699. scaling shader if running MegaZeux with the GLSL renderer.
  700. Settings for game speed will only apply for the current world;
  701. all other settings are global.
  702. Note that some games may block access to the F2 menu entirely.
  703. Ctrl+F2 or Alt+F2 will ignore this setting and allow access to
  704. the menu even if it is prohibited otherwise.
  705. F3 - Save Game
  706. This will prompt you for a filename, allowing the saving of the
  707. exact state of the current game. Some games may not allow
  708. saving on some (or any) of its screens, or will only allow
  709. saving in certain spots of a board. Saving lets you quit your
  710. game in the middle or take precautions against unknown dangers.
  711. F4 - Restore Game
  712. This will let you select a saved game from a list of filenames.
  713. The game will then be reloaded from the same point you left
  714. off. While most games will allow loading anywhere, some will
  715. restrict loading to certain times or will use a custom
  716. mechanism for loading games instead. In general, MegaZeux can
  717. only load saves made in MegaZeux versions sharing the current
  718. version number (e.g. 2.81c can load saves made in 2.81 through
  719. 2.81h), but current versions of MegaZeux allow direct loading of
  720. saves made in 2.84 versions as well as saves made in the current
  721. version.
  722. NOTE: A few games may save or load automatically, and
  723. high-caliber games may have completely different methods of
  724. saving and loading games.
  725. F5 or Ins - Toggle Bomb Type
  726. This will switch your current bomb type between High Strength
  727. and Low Strength.
  728. F6 - Debug Window
  729. This will bring up a small box in the lower left corner of the
  730. screen, detailing several statistics. The top-right of the box
  731. displays the world version of the current world; X/Y lists the
  732. current x,y position of the player; Board lists the current
  733. board number; Robot mem lists the amount of Robot memory
  734. currently consumed by the current board's Robots; the space
  735. below lists the currently playing music, with "(no module)" for
  736. none and "*" for the module wildcard; finally, the bottom right
  737. numbers list the key_code (green) and key_pressed (magenta)
  738. values of the last pressed key. Press F6 again to turn the box
  739. off. This shortcut will only work during playtesting in the
  740. editor.
  741. F7 - Items Cheat
  742. This will set ammo, coins, gems, hibombs and lobombs to 32767,
  743. fill health (set to maxhealth), fill lives (set to maxlives),
  744. and set keys to one of each color. This is a cheating function,
  745. so do not use unless fully necessary; a few games punish the
  746. player for using this function. This may be limited to
  747. playtesting sessions in the editor, or limited to MZXRun builds,
  748. depending on config.txt settings.
  749. F8 - Zap Cheat
  750. This will destroy everything in all eight directions directly
  751. around the player, replacing all eight squares with spaces.
  752. This is a cheating function, so do not use unless fully
  753. necessary; a few games punish the player for using this
  754. function. This may be limited to playtesting sessions in the
  755. editor, or limited to MZXRun builds, depending on config.txt
  756. settings.
  757. F9 - Quicksave
  758. This will save the game, like F3, but to the last filename you
  759. used without prompting you for a filename. The old file will
  760. be overwritten. If no game has been saved since MegaZeux was
  761. started, the save will have the default filename listed in the
  762. config.txt file. If saving is blocked, quicksaving will be
  763. blocked as well.
  764. <a class="helplink" href="#CONFGINI.HLP__1st">The Config File</a>
  765. F10 - Quickload
  766. This will reload the last game saved using F3 or F9. If no
  767. game has been saved since MegaZeux was started, the default
  768. save filename will be used. The same caveats about save versions
  769. still apply here. If loading is blocked, quickloading will be
  770. blocked as well.
  771. F11 - Counter Debug Mode
  772. This will load a screen listing which counters and strings
  773. have been set, as well as values for default counters and
  774. strings. Counter debug mode allows considerable manipulation of
  775. counters and strings, among other things. This shortcut only
  776. works when playtesting in the editor. For more detail, go to its
  777. specific section.
  778. <a class="helplink" href="#DBGMODE.HLP__100">Debug Modes - Counter Debug Mode</a>
  779. Alt+F11 - Robotic Debugger
  780. This will launch the config menu for the built-in Robotic
  781. debugger. The Robotic debugger can monitor running Robotic code
  782. and allow step-by-step reading and manipulation of running
  783. Robots as they execute. This shortcut only works when
  784. playtesting in the editor. For more detail, go to its specific
  785. section.
  786. <a class="helplink" href="#DBGMODE.HLP__101">Debug Modes - The Robotic Debugger</a>
  787. F12 - Take Screenshot
  788. Pressing F12 will make a 640x350 screenshot (in PNG format by
  789. default) in the working directory, using the software renderer.
  790. The file naming starts from "screen0". The config file may
  791. disallow taking screenshots, depending on setting.
  792. Arrows - Move
  793. The arrow keys will move the player and allow it to interact
  794. with most objects in most games.
  795. Space - Shoot
  796. By default, one uses this key in conjunction with an arrow
  797. key to fire a weapon in the selected direction. Weapons and
  798. spacebar uses vary from world to world.
  799. Del - Bomb
  800. By default, this will drop a bomb of the current type BENEATH
  801. the player. Move out of the way to activate it, then run before
  802. it explodes! Uses of the del key vary from game to game.
  803. Tab / Left Arrow / Right Arrow - Select Option
  804. In yes/no dialog boxes, these keys toggle between yes and no.
  805. Other games may have other controls, such as 'S' to cast a
  806. spell or 'I' to bring up an inventory screen, but they should be
  807. detailed within the game.
  808. The following keys are active at the title screen:
  809. F1 - Help (see above)
  810. Enter - Menu
  811. This is similar to default Enter within the game. However,
  812. it brings up a list of key bindings instead.
  813. ESC - Exit MegaZeux
  814. Pressing ESC will load a prompt where the user can exit
  815. MegaZeux.
  816. F2 / Ctrl+F2 / Alt+F2 / S - Settings (see above)
  817. F3 or L - Load World
  818. This will allow you to load up the title screen of any MegaZeux
  819. world. A list of choices will be presented to you to select
  820. from. After the world is loaded, you may watch the title
  821. screen, then press 'P' to play.
  822. F4 or R - Restore Game (see above)
  823. F5 or P - Play Game
  824. This will stop the title screen and actually begin game play.
  825. F7 or U - Updater
  826. This will load the updater. The updater will connect to an
  827. online repository and check if a new MegaZeux version is
  828. available. If so, the user gets the option to update MegaZeux.
  829. MZX will then list the files added/changed/deleted in the
  830. update, and if the user decides to update, MZX will restart
  831. when the update is finished.
  832. WARNING: This will most likely replace your config.txt file, so
  833. if you want to keep your settings, make a backup first so you
  834. can apply your settings to the new file!
  835. F8 or N - New World
  836. This will quit the gaming portion of MegaZeux and enter the
  837. integrated World Editor, set to an empty MZX world. Alt+N will
  838. act the same, but skip the prompt to name and create a starting
  839. board.
  840. F9 or E - Edit World
  841. This will quit the gaming portion of MegaZeux and enter the
  842. integrated World Editor, set to edit the currently-loaded
  843. world. When no world is loaded, this acts the same as New World,
  844. and Alt+E with no world loaded will also skip the prompt to name
  845. and create a starting board. Note that "MZXRun" builds of
  846. MegaZeux do not contain the editor. For detailed info on using
  847. the World Editor, view the appropriate help sections.
  848. <a class="helplink" href="#THEWORLD.HLP__1st">The World Editor</a>
  849. F10 - Quickload (see above)
  850. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  851. <hr /></div>
  852. <div class="helpfile" id="NONDESCR.HLP">
  853. <a class="helpanchor" name="NONDESCR.HLP__091"> </a>
  854. <p class="helpcentered"><span class="f9 ">Nondescript Play Tips</span></p>
  855. First, let me warn you that many worlds you get from archives
  856. or (especially) from personal webpages may not be of acceptable
  857. quality. They may be unfair, boring, have numerous bugs, and/or
  858. not give proper instructions. On a related note, there is no
  859. problem in MAKING poor games, but PLEASE think before uploading
  860. them without attempting fixes or improvements, even in these
  861. days where games are fewer and farther between. Really old games
  862. of bad quality, on the other hand, are tolerated somewhat
  863. better. Don't let a few dull games ruin the fun.
  864. With that out of the way, some basic play tips:
  865. <span class="fA ">*</span><span class="fF "> RTFM (Read the Flipping Manual). Whatever information</span>
  866. the game has to give is probably important. Some authors
  867. include info files in their distributions; make sure these
  868. are read. It saves everybody time and effort. To authors, it
  869. saves time and effort to include such files in your
  870. submissions.
  871. <span class="fA ">*</span><span class="fF "> Make sure you visit every screen possible.</span>
  872. <span class="fA ">*</span><span class="fF "> Save your game! It is rather simple - in most games,</span>
  873. Press F3 to save your game to disk at the EXACT point you are
  874. [if allowed]. Press F4 to reload a saved game. You can use F9
  875. and F10 to quick-save and quick-load, which work on the last
  876. game you saved. Remember to save often and keep multiple saves-
  877. If something ends your game, you'll want to lose as little
  878. progress as possible.
  879. <span class="fA ">*</span><span class="fF "> Touch everything! Even things of seemingly little value</span>
  880. may prove worthy of your attention. If it kills you, then...
  881. well... hope you saved (see above).
  882. <span class="fA ">*</span><span class="fF "> Collect supplies! Make sure you grab every coin, gem,</span>
  883. ammo dump, bomb, chest, pouch, and foobar you see! You will
  884. often be in want of supplies, so don't push things.
  885. <span class="fA ">*</span><span class="fF "> Remember how things work. Most things in MegaZeux have</span>
  886. patterns, even Robots, and the same object will usually do the
  887. same thing all the time. (However, two objects may look alike
  888. and not really be the same thing.)
  889. <span class="fA ">*</span><span class="fF "> Don't take anything for granted. If it looks like a spike,</span>
  890. it probably is. _Probably_. Although it is rare that these
  891. types of puzzles must be solved to complete a game, there
  892. are often bonuses, hidden rooms, etc. behind illusions.
  893. <span class="fA ">*</span><span class="fF "> Try things twice, even thrice. Sometimes objects respond</span>
  894. differently at other times. If you get a new treasure, go
  895. talk to all the citizens - maybe one of them will say
  896. something new. If some place seems inaccessible, come back
  897. later!
  898. <span class="fA ">*</span><span class="fF "> If doing the same thing over and over keeps failing, try</span>
  899. something else. It helps to look at new methods and to put
  900. distance between yourself and the problem.
  901. <span class="fA ">*</span><span class="fF "> Bullets can stop spitting fire, but only sometimes. If trying</span>
  902. to gun down an enemy that spits fire, stagger your shots
  903. somewhat; holding down the spacebar often results in ALL of
  904. your shots being cancelled.
  905. <span class="fA ">*</span><span class="fF "> If all else fails, look in the game with the editor. This</span>
  906. depends on the clarity of the author(s)'s code, but looking in
  907. the editor can help if all other solutions have been
  908. exhausted.
  909. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  910. <hr /></div>
  911. <div class="helpfile" id="MOUSESUP.HLP">
  912. <a class="helpanchor" name="MOUSESUP.HLP__1st"> </a>
  913. <p class="helpcentered"><span class="f9 ">Mouse Support in MegaZeux</span></p>
  914. Use of the mouse is very simple. Move the mouse to move the
  915. mouse cursor. Press the Left mouse button to select something,
  916. activate something, etc. Press the Right mouse button to grab
  917. whatever's under the cursor in the World Editor. Certain games
  918. may make use of the mouse during gameplay; the scroll wheel will
  919. always emulate up/down presses in dialog boxes and the list menu
  920. on top of whatever functions it may have in the current game.
  921. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  922. <hr /></div>
  923. <div class="helpfile" id="BUILTINS.HLP">
  924. <a class="helpanchor" name="BUILTINS.HLP__1st"> </a>
  925. <p class="helpcentered"><span class="f9 ">The Mirth of Built-ins</span></p>
  926. The following help section contains a list of the different
  927. objects, enemies, items, and terrains you will find within
  928. the different MegaZeux worlds.
  929. Want to make a (very) quick and (very) dirty game? Built-ins are
  930. the way to do it! However, outside of a select few built-ins
  931. (such as certain terrains, Robots and items) heavy usage of
  932. these built-ins for long-term projects is best-suited for
  933. beginners and savants.
  934. <p class="helpcentered"><span class="f8 b0 ">&#xE0B1; </span><span class="fF b0 ">Terrains</span><span class="f8 b0 "> &#xE0B1;</span></p>
  935. <span class="fB ">Space</span>
  936. This is the simplest terrain; it does absolutely nothing!
  937. <span class="fB ">Normal </span><span class="fA b0 ">&#xE0B2;</span>
  938. <span class="fB ">Solid </span><span class="fE ">&#xE0DB;</span>
  939. <span class="fB ">Tree </span><span class="fA ">&#xE006;</span>
  940. <span class="fB ">Line </span><span class="fF ">&#xE0CD;&#xE0CD;&#xE0CD;&#xE0CD;&#xE0CD;</span>
  941. <span class="fB ">Custom Block </span><span class="f7 ">?</span>
  942. These are all basic walls; they just get in the way. Sometimes
  943. trees can be burned down.
  944. <span class="fB ">Breakaway </span><span class="fC b0 ">&#xE0B1;</span>
  945. <span class="fB ">Custom Break </span><span class="f7 ">?</span>
  946. These block movement as well, but they can be destroyed with
  947. most weapons (such as bullets or bombs). Certain other things
  948. can destroy them as well.
  949. <span class="fB ">Fake </span><span class="fA ">&#xE0B2;</span>
  950. <span class="fB ">Carpet </span><span class="f4 b0 ">&#xE0B1;</span>
  951. <span class="fB ">Floor </span><span class="f9 b0 ">&#xE0B0;</span>
  952. <span class="fB ">Tiles </span><span class="f0 bF ">&#xE0FE;</span>
  953. <span class="fB ">Custom Floor </span><span class="f7 ">?</span>
  954. These are all treated as flooring, or "background". Anything,
  955. including yourself, can move onto and over these. They are
  956. primarily for decoration.
  957. <span class="fB ">Web </span><span class="f7 ">&#xE0C5;</span>
  958. <span class="fB ">Thick Web </span><span class="f7 ">&#xE0CE;</span>
  959. These are another type of flooring. However, webs are often
  960. the home for spiders, so watch your step!
  961. <span class="fB ">Forest </span><span class="f2 b0 ">&#xE0B2;</span>
  962. This terrain will block the path of almost any built-in. You,
  963. however, can move through it with ease, clearing a pathway.
  964. Enemies can move along a cleared path.
  965. <span class="fB ">Invis. Wall</span>
  966. This LOOKS like just an empty space... until you bump into it.
  967. Then it becomes a normal wall, blocking your path.
  968. <p class="helpcentered"><span class="f8 b0 ">&#xE0B1; </span><span class="fF b0 ">Items</span><span class="f8 b0 "> &#xE0B1;</span></p>
  969. <span class="fB ">Gem &#xE004;</span>
  970. <span class="fB ">Magic Gem &#xE004;</span>
  971. Your total number of gems is shown on the status screen, and
  972. each gem gives you one point. Many older games also use them as
  973. a type of currency, where you can trade gems for stuff like
  974. food, ammo, weapons, or hints. Magic Gems also give you one
  975. health point apiece when taken.
  976. <span class="fB ">Health </span><span class="fC ">&#xE003;</span>
  977. This will improve your outlook dramatically. Collecting one of
  978. these increases health by a certain amount. The amount varies
  979. for different hearts. Keep in mind that if you're currently at
  980. your maximum health, running into a heart will still collect it.
  981. <span class="fB ">Energizer </span><span class="f1 ">&#xE09B;</span>
  982. After grabbing an energizer, the player will flash colors for a
  983. limited time. During this period, you are invincible against
  984. enemies, bullets, fire, lava, poison damage, and most other
  985. forms of pain. Be careful not to get into a dangerous situation
  986. as its energy runs out!
  987. <span class="fB ">Ammo </span><span class="f3 ">&#xE0A3; &#xE0A4;</span>
  988. When you grab ammunition, it will add a certain amount of
  989. ammo to your supplies. The amount may be different for
  990. different piles.
  991. <span class="fB ">Bomb </span><span class="f0 ">&#xE00B;</span>
  992. Each bomb you grab adds another to your supply. The sound made
  993. when you grab the bomb will be high-pitched for a high strength
  994. bomb and low-pitched for the rare low strength bomb.
  995. <span class="fB ">Key </span><span class="fA ">&#xE00C;</span>
  996. Collect keys to open locks, doors, and gates later on. The key
  997. and the lock/etc. must match colors, and a key will only work
  998. once. You can carry up to sixteen keys at once. The default
  999. status screen, if viewable, will show your current supply of
  1000. keys.
  1001. If you've played ZZT games, you'll be interested to know that
  1002. you can carry multiple keys of the same color.
  1003. <span class="fB ">Lock </span><span class="fA ">&#xE008;</span>
  1004. A lock will only open if you have a key of the same color to
  1005. unlock it. The key can only be used once and will disappear
  1006. along with the lock.
  1007. <span class="fB ">Coin </span><span class="fE ">&#xE007;</span>
  1008. Collecting coins is a good idea- they not only increase your
  1009. score, but can usually be used to purchase valuable items or
  1010. services from vendors.
  1011. <span class="fB ">Life </span><span class="fB ">&#xE09B;</span>
  1012. A life orb will give you yet another chance for survival in
  1013. MegaZeux. Keep in mind that if you're currently at your maximum
  1014. amount of lives, running into a life orb will still collect it.
  1015. <span class="fB ">Pouch </span><span class="f7 ">&#xE09F;</span>
  1016. A pouch is usually filled with coins, gems, or even both. The
  1017. amount varies, but often you will find yourself pleasantly
  1018. rich....
  1019. <span class="fB ">Chest </span><span class="f6 ">&#xE0A0;</span>
  1020. A chest can contain numerous things. The contents will be one
  1021. of the following: Empty, a Key, Coins, Lives, Ammo, Health,
  1022. a Potion or Ring, Bombs, or Gems. Once you grab the contents,
  1023. the chest itself will remain, but be empty.
  1024. <span class="fB ">Ring </span><span class="fE ">o</span>
  1025. <span class="fB ">Potion &#xE096;</span>
  1026. These mystical items will bestow a magical effect on you when
  1027. you wear or drink them. The effect, however, is unknown to
  1028. you until you try it... and some effects aren't so nice.
  1029. <a class="helpanchor" name="BUILTINS.HLP__prx"> </a>
  1030. <p class="helpcentered"><span class="f8 b0 ">&#xE0B1; </span><span class="fF b0 ">Potion and Ring Effects</span><span class="f8 b0 "> &#xE0B1;</span></p>
  1031. Effects are limited to the current room only, except for
  1032. healing, hurting, and invinco.
  1033. <span class="fB ">No Effect</span>
  1034. This effect does absolutely nothing.
  1035. <span class="fB ">Invinco</span>
  1036. Just like an energizer, you will become invulnerable to most
  1037. forms of pain until you stop flashing.
  1038. <span class="fB ">Blast</span>
  1039. Scatters plentiful, random explosions around the screen.
  1040. <span class="fB ">Health x10</span>
  1041. <span class="fB ">Health x50</span>
  1042. Gives the player 10 or 50 additional health points,
  1043. respectively.
  1044. <span class="fB ">Poison</span>
  1045. Reduces the player's health by 10.
  1046. <span class="fB ">Blind</span>
  1047. Temporarily blinds the player. The viewport will appear in
  1048. dark gray. You can still move and interact, but you won't be
  1049. able to see anything but the player.
  1050. <span class="fB ">Kill Enemies</span>
  1051. Kills all enemies in the room, including "Invincible" enemies.
  1052. <span class="fB ">Lava Walker</span>
  1053. Allows the player to temporarily walk on lava and fire.
  1054. <span class="fB ">Detonate</span>
  1055. Explodes all bombs and lit bombs in the room.
  1056. <span class="fB ">Banish (Dragons)</span>
  1057. Turns all dragons on the board into ghosts. Each ghost made this
  1058. way will have intelligence set to 4, movement speed set to 4,
  1059. and the "Invincible" flag set to off.
  1060. <span class="fB ">Summon (Dragons)</span>
  1061. Turns all creatures on the board - excepting guns - into
  1062. dragons. (This includes other dragons.) Each dragon made this
  1063. way will have a firing rate of 3, 4 hit points, and the "Moves"
  1064. flag set to on.
  1065. <span class="fB ">Avalanche</span>
  1066. Scatters boulders randomly around the screen.
  1067. <span class="fB ">Freeze Time</span>
  1068. Freezes ALL non-player on-screen objects (including all Robots
  1069. except the Global) for a short time.
  1070. <span class="fB ">Wind</span>
  1071. The player retains control but will also move additional random
  1072. steps for a limited time. The wind will blow the player in all
  1073. directions.
  1074. <span class="fB ">Slow Time</span>
  1075. Slows ALL non-player on-screen objects (including all Robots
  1076. except the Global) for a short time. The resulting speed is
  1077. approximately half normal speed.
  1078. <p class="helpcentered"><span class="f8 b0 ">&#xE0B1; </span><span class="fF b0 ">Creatures</span><span class="f8 b0 "> &#xE0B1;</span></p>
  1079. <span class="fB ">Snake </span><span class="f2 ">&#xE0EB;</span>
  1080. <span class="fB ">Runner </span><span class="fC ">&#xE002;</span>
  1081. A snake moves in a straight line until it hits an obstruction,
  1082. then aims itself in another direction and continues. Hitting a
  1083. snake (like all enemies hereafter unless noted) will cause you
  1084. to lose health, then kill the snake. Runners act like snakes and
  1085. will take up to four hits, but will only go the opposite
  1086. direction when obstructed.
  1087. <span class="fB ">Eye </span><span class="fF ">&#xE0EC;</span>
  1088. An eye chases you down like any ordinary enemy, but when it
  1089. catches you or dies, it explodes! The size of the explosion
  1090. can vary with each eye. As eyes float, they can traverse both
  1091. goop and lava.
  1092. <span class="fB ">Ghost </span><span class="f7 ">&#xE0EA;</span>
  1093. <span class="fB ">Thief </span><span class="fC ">&#xE005;</span>
  1094. A ghost is the simplest enemy, simply chasing you. While some
  1095. of them are invincible, most can be killed. Thieves chase but
  1096. don't do damage. They steal your gems on touch instead, and can
  1097. do so multiple times until killed. Ghosts can traverse lava and
  1098. goop; thieves cannot.
  1099. <span class="fA ">*</span>
  1100. <span class="fB ">Slime Blob </span><span class="fA ">*&#xE0B1;*</span>
  1101. <span class="fA ">*</span>
  1102. A slime blob usually doesn't hurt you, but it can quickly
  1103. become incredibly annoying because of its habit of dividing
  1104. into more slime blobs, then hardening into "solid slime"
  1105. (i.e. breakables), quickly filling rooms.... You can often
  1106. kill slime by touching or shooting it, but some slimes can be
  1107. invincible, and others can be harmful to touch.
  1108. <span class="fB ">Dragon </span><span class="f4 ">&#xE015; </span><span class="fC ">&#xE00F; </span><span class="fE ">*</span><span class="fC ">&#xE00F;</span>
  1109. Some dragons move around slowly, but their main advantage is
  1110. their offense - they can shoot barrages of scorching flame.
  1111. Dragons also have a strong defense, taking up to eight hits to
  1112. kill. Touching them will take away health, but will NOT hurt the
  1113. dragon. Dragons can traverse lava but not goop.
  1114. <span class="fB ">Fish </span><span class="fE ">&#xE0E0;</span>
  1115. <span class="fB ">Shark </span><span class="f7 ">&#xE07F;</span>
  1116. <span class="fB ">Spitting Tiger </span><span class="fB ">&#xE0E3; </span><span class="fF ">&#xE0F9; &#xE0F9; &#xE0F9;</span>
  1117. Fish have to stay in the water and often can't hurt you. Those
  1118. that can, however, will hurt you if you're adjacent to them,
  1119. even if you're on land. Some fish take two hits to kill. Sharks,
  1120. however, swim in lava or goop, are always hostile, and can
  1121. attempt to shoot you with fire, bullets or seekers. Spitting
  1122. Tigers act like sharks, but are restricted to land.
  1123. <span class="f0 ">&#xE0DA;&#xE0C5;&#xE0BF;</span>
  1124. <span class="fB ">Spider </span><span class="f0 ">&#xE0C4;&#xE0C5;</span><span class="f7 ">&#xE095;</span><span class="f0 ">&#xE0C5;&#xE0C4;</span>
  1125. <span class="f0 ">&#xE0C0;&#xE0C5;&#xE0D9;</span>
  1126. Spiders, although eager to catch you, are usually restricted to
  1127. movement on webs. Certain spiders, however, can actually leave
  1128. the webs. Some spiders take two hits to kill.
  1129. <span class="fB ">Goblin </span><span class="f2 ">&#xE005;</span>
  1130. Goblins chase but periodically stop, making them an easy
  1131. built-in villain.
  1132. <span class="fB ">Bear </span><span class="f6 ">&#xE0AC;</span>
  1133. Bears only move if you get too close, then they lumber over for
  1134. the attack. Many require 2 hits to kill.
  1135. <span class="fB ">Bear Cub </span><span class="f6 ">&#xE0AD;</span>
  1136. Bear cubs are very lively, rushing all over the place. Since
  1137. they move so fast in a seemingly random manner, they are often
  1138. hard to kill.
  1139. <span class="fB ">Bullet Gun </span><span class="fF ">&#xE094; &#xE094; &#xE01B;</span>
  1140. <span class="fB ">Spinning Gun </span><span class="fC ">&#xE00F;</span><span class="fE ">* </span><span class="fF ">&#xE01B;</span>
  1141. Bullet and spinning guns, both indestructible, fire any type of
  1142. normal projectile (bullets, fire or seekers). The bullet gun,
  1143. however, is fixed while the spinning gun can fire from all
  1144. cardinal directions.
  1145. <span class="fB ">Lazer Gun </span><span class="f0 ">&#xE0CE;</span><span class="f1 ">&#xE082;</span><span class="f9 ">&#xE082;</span><span class="f3 ">&#xE082;</span><span class="fB ">&#xE082;</span><span class="fF ">&#xE082;&#xE082;&#xE082;&#xE082;</span><span class="f7 ">&#xE082;</span>
  1146. The indestructible lazer guns fire off lazer walls at regular
  1147. intervals, and sustain these walls for a specific length of
  1148. time. Unlike in ZZT, getting hit by a laser does not push the
  1149. player into objects, though it will push the player if a space
  1150. is open. The beam can be obstructed by nearly anything not a
  1151. ground type, even including a bullet.
  1152. <span class="fB ">Missile Gun </span><span class="f0 ">&#xE010;</span>
  1153. Missile guns fire missiles in one direction. Some fire just
  1154. once while others can fire missiles indefinitely. The gun
  1155. itself is indestructible.
  1156. <p class="helpcentered"><span class="f8 b0 ">&#xE0B1; </span><span class="fF b0 ">Puzzle Pieces</span><span class="f8 b0 "> &#xE0B1;</span></p>
  1157. The following objects are often used to create mind-twisting
  1158. puzzles requiring you to push objects all over the place to
  1159. reach a goal. Be warned.
  1160. <span class="fB ">Boulder </span><span class="f7 ">&#xE0E9;</span>
  1161. <span class="fB ">Crate </span><span class="f6 ">&#xE0FE;</span>
  1162. <span class="fB ">Custom Push </span><span class="f7 ">?</span>
  1163. Boulders and crates can be pushed in any direction, with any
  1164. number of pushable things in a row. They can be blown up.
  1165. <span class="fB ">Box </span><span class="fF ">&#xE0FE;</span>
  1166. <span class="fB ">Custom Box </span><span class="f7 ">?</span>
  1167. Boxes can also be pushed in any direction, but cannot be blown
  1168. up.
  1169. <span class="fB ">Pusher </span><span class="f0 ">&#xE010; </span><span class="f7 ">&#xE0FE;&#xE0FE;&#xE0FE;</span>
  1170. Pushers cannot hurt you, but they constantly move in one given
  1171. direction, pushing almost anything in their path - Boxes,
  1172. crates, and even you!
  1173. <span class="fB ">Slider NS </span><span class="fE ">&#xE012;</span>
  1174. <span class="fB ">Slider EW </span><span class="fE ">&#xE01D;</span>
  1175. Sliders can be pushed, but ONLY in certain directions. A Slider
  1176. NS can only be pushed north/south, while a Slider EW can only be
  1177. pushed east/west.
  1178. <p class="helpcentered"><span class="f8 b0 ">&#xE0B1; </span><span class="fF b0 ">Transport</span><span class="f8 b0 "> &#xE0B1;</span></p>
  1179. <span class="fB ">Stairs </span><span class="fF ">&#xE0A2;</span>
  1180. <span class="fB ">Cave (or door) </span><span class="f0 ">&#xE0A1;</span>
  1181. <span class="fB ">Whirlpool </span><span class="f9 b1 ">&#xE097;</span>
  1182. When you enter any one of these, you are transported to another
  1183. location within the current world. These are not always
  1184. two-way connections.
  1185. <span class="fB ">CW </span><span class="fA ">/</span>
  1186. <span class="fB ">CCW </span><span class="fA ">\</span>
  1187. These rotate in the given direction (ClockWise or
  1188. CounterClockWise), rotating everything around them at the same
  1189. time. Walls and other solid objects will not be affected.
  1190. <span class="fF ">v</span>
  1191. <span class="fB ">Transport </span><span class="fF ">} {</span>
  1192. <span class="fF ">~</span>
  1193. Most transporters face a single direction. Entering these on
  1194. the "open" side, or pushing other things into them, will
  1195. cause a jump to another location. Some transporters rotate 360
  1196. degrees and can be entered from any side.
  1197. The destination of a transport is somewhat complex, but the
  1198. search pattern is as follows:
  1199. 1. If the other side of the entered transport is empty, move
  1200. there. If there is something there that can be pushed out
  1201. of the way, move there and push it out of the way.
  1202. 2. If the other side is blocked, continue in that direction
  1203. looking for the first non-blocked transporter facing the
  1204. OPPOSITE direction, or an "any-direction" transport.
  1205. 3. If neither condition can be met, no transport takes place.
  1206. <p class="helpcentered"><span class="f8 b0 ">&#xE0B1; </span><span class="fF b0 ">Elements</span><span class="f8 b0 "> &#xE0B1;</span></p>
  1207. <span class="fB ">Still Water </span><span class="f9 b1 ">&#xE0B0;</span>
  1208. <span class="fB ">N Water </span><span class="f9 b1 ">&#xE018;</span>
  1209. <span class="fB ">S Water </span><span class="f9 b1 ">&#xE019;</span>
  1210. <span class="fB ">E Water </span><span class="f9 b1 ">&#xE01A;</span>
  1211. <span class="fB ">W Water </span><span class="f9 b1 ">&#xE01B;</span>
  1212. Water is a type of floor that can be moved onto by the player,
  1213. some enemies, and certain other objects. Sometimes, water has a
  1214. current, moving you constantly in a certain direction.
  1215. <span class="fB ">Ice </span><span class="fB b3 ">\</span>
  1216. Ice is another type of floor. However, the player will slide on
  1217. it, constantly moving in the last direction the player moved
  1218. until running into a non-pushable obstacle. Attempting to move
  1219. in another direction while still on ice will cause the player to
  1220. slide in that direction instead.
  1221. <span class="fB ">Lava </span><span class="fC b4 ">&#xE0B1;&#xE0B2;&#xE0B0;&#xE0B1;&#xE0B2;</span>
  1222. Lava is another floor. However, it is (almost always) very
  1223. deadly. Only a few things can traverse it, puzzle pieces cannot
  1224. be pushed onto it, and any player unfortunate enough to walk on
  1225. it will typically suffer rapid and massive amounts of damage.
  1226. <span class="fB ">Fire </span><span class="fC b0 ">&#xE0B1;&#xE0B0;</span><span class="fE b0 ">&#xE0B2;&#xE0B1;</span><span class="fC b0 ">&#xE0B2;</span>
  1227. Fire is yet another type of floor. It often will spread across
  1228. the floor, enveloping trees, chests, brown objects, and
  1229. sometimes even empty space. It can damage the player at random
  1230. intervals when merely standing near it, and cause constant
  1231. damage while standing ON it, but by default fire does far less
  1232. damage than lava. Most fires will eventually burn out.
  1233. <span class="fB ">Lit Bomb </span><span class="f0 ">&#xE0AB;</span>
  1234. <span class="fB ">Mine </span><span class="f4 ">&#xE08F;</span>
  1235. A lit bomb is an explosion on a fuse. You DON'T want to be
  1236. nearby when the fuse runs out... mines, on the other hand, only
  1237. blow up when touched, shot, or hit with an explosion.
  1238. <span class="fF bE ">&#xE0B1;</span>
  1239. <span class="fF bE ">&#xE0B1;</span><span class="fC bE ">&#xE0B1;</span><span class="fF bE ">&#xE0B1;</span>
  1240. <span class="fB ">Explosion </span><span class="fF bE ">&#xE0B1;</span><span class="fC bE ">&#xE0B1;</span><span class="fC b4 ">&#xE0B1;</span><span class="fC bE ">&#xE0B1;</span><span class="fF bE ">&#xE0B1;</span>
  1241. <span class="fF bE ">&#xE0B1;</span><span class="fC bE ">&#xE0B1;</span><span class="fF bE ">&#xE0B1;</span>
  1242. <span class="fF bE ">&#xE0B1;</span>
  1243. An explosion starts at a certain point, quickly spreading
  1244. outward, wreaking havoc in its wake. Some explosions are
  1245. smaller than others. Explosions will also cause explosives
  1246. such as bombs to explode, leading to some very cool chain
  1247. reactions.
  1248. <span class="fB ">Goop </span><span class="f8 b1 ">&#xE0B0;&#xE0B0;&#xE0B0;</span>
  1249. Goop is pretty much non-traversable terrain to anything
  1250. landborne. Sharks may occasionally inhabit it, and select Robots
  1251. may be able to walk in it. Bullets, lazers, and other
  1252. projectiles will traverse it freely. Goop may also be treated
  1253. as water or other terrains in certain worlds.
  1254. <p class="helpcentered"><span class="f8 b0 ">&#xE0B1; </span><span class="fF b0 ">Miscellaneous</span><span class="f8 b0 "> &#xE0B1;</span></p>
  1255. <span class="fB ">Door </span><span class="f2 ">&#xE0B1;&#xE0B2;&#xE0DB;</span><span class="fA ">&#xE0C4;</span><span class="f2 ">&#xE0DB;&#xE0B2;&#xE0B1;</span>
  1256. <span class="fB ">Gate </span><span class="f7 ">&#xE0B1;&#xE0B2;&#xE0DB;&#xE016;&#xE0DB;&#xE0B2;&#xE0B1;</span>
  1257. A door is what you would expect - When you touch it, it will
  1258. open itself, pushing obstacles in its path out of the way, and
  1259. then close after a brief pause. Doors require two free spaces
  1260. in the direction it moves to open fully. Certain doors are
  1261. locked and require you to use a key to open them. They then
  1262. remain unlocked. Gates act similarly, but do not move; they can
  1263. be moved over directly when open.
  1264. <span class="fB ">Ricochet Panel </span><span class="f0 ">/</span>
  1265. <span class="fB ">Ricochet </span><span class="fA ">*</span>
  1266. When a bullet hits a ricochet panel, it is reflected to travel
  1267. in a new direction, depending upon the way the panel is facing.
  1268. When a bullet hits a ricochet, it is reflected back in the
  1269. original direction. Any bullet that hits a ricochet panel or a
  1270. ricochet will have its type set to neutral when reflected.
  1271. <span class="fB ">Spike </span><span class="f7 ">&#xE010;</span>
  1272. <span class="fB ">Custom Hurt </span><span class="f7 ">?</span>
  1273. Spikes and other painful devices will simply hurt you if you
  1274. touch them. These are often used in conjunction with ice or
  1275. with sidescroller engines.
  1276. <span class="fB ">Text </span><span class="f7 ">?</span>
  1277. Another type of wall. Cannot be walked on, but can provide
  1278. hints or other enlightening messages.
  1279. <span class="fB ">Moving Wall N </span><span class="f7 ">?</span>
  1280. <span class="fB ">Moving Wall S </span><span class="f7 ">?</span>
  1281. <span class="fB ">Moving Wall E </span><span class="f7 ">?</span>
  1282. <span class="fB ">Moving Wall W </span><span class="f7 ">?</span>
  1283. Moving walls are like Runners - They just move back and forth,
  1284. to and fro... they can't hurt you by touch, but can get in the
  1285. way very easily.
  1286. <p class="helpcentered"><span class="f8 b0 ">&#xE0B1; </span><span class="fF b0 ">Objects</span><span class="f8 b0 "> &#xE0B1;</span></p>
  1287. <span class="fB ">Player </span><span class="fB b1 ">&#xE002;</span>
  1288. This is you. Really. Well, sometimes. The player is often
  1289. locked, with a Robot or sprite representing the player
  1290. character, but exactly one player object is always present.
  1291. <span class="fB ">Scroll </span><span class="fF ">&#xE0E8;</span>
  1292. <span class="fB ">Sign </span><span class="f6 ">&#xE0E2;</span>
  1293. Touch this to display a given message. The message will be in a
  1294. message box. A Scroll will disappear after you finish reading
  1295. it; signs will not.
  1296. Unlike in ZZT, scrolls and signs are text-only: they cannot
  1297. execute any commands. Also unlike ZZT, messages only one line
  1298. long will still be shown in a message box.
  1299. <span class="fB ">Missile </span><span class="f0 ">&#xE010;</span>
  1300. Missiles fly around the room, turning at obstructions. They
  1301. will explode if they hit the player or when they cannot turn.
  1302. <span class="fB ">Bullet </span><span class="fF ">&#xE093;</span>
  1303. Bullets will fly in a straight line until they hit something
  1304. (and disappear) or do damage to someone or something. Ricochets
  1305. can change the direction a bullet is traveling in, as well as
  1306. change its type to neutral. There are three types of bullets:
  1307. Player (the player shoots these by default), Neutral (Robots
  1308. shoot these in a default shoot command), and Enemy (built-in
  1309. enemies shoot these by default). Player bullets cannot harm the
  1310. player; Enemy bullets cannot harm default enemies; Neutral
  1311. bullets can harm both the player and default enemies.
  1312. <span class="fB ">Seeker </span><span class="fA ">|</span>
  1313. A seeker, thrown by a Tiger, Shark, or other enemy, will chase
  1314. the player all over the screen until they collide and do damage.
  1315. Collision with most projectiles will not destroy it, only pause
  1316. it. They have a limited life, however, and will expire after a
  1317. certain amount of time or when caught in an explosion.
  1318. They are still one of the deadliest weapons you will face;
  1319. more than only a few at once can easily ruin a game.
  1320. <span class="fB ">Shooting Fire </span><span class="fC ">&#xE00F; </span><span class="fE ">*</span><span class="fC ">&#xE00F;</span>
  1321. Shooting fire will continue in a straight line until it hits
  1322. the player (resulting in direct damage) or another object
  1323. (resulting in a small fire). The fire may quickly spread out of
  1324. control in some areas, or just burn out in others. Bullets can
  1325. sometimes destroy shooting fire, but other times the shooting
  1326. fire simply absorbs the bullet.
  1327. <span class="fB ">Sensor </span><span class="f7 ">?</span>
  1328. Sensors are a form of floor that only the player can move onto.
  1329. They will usually then produce some form of effect, by
  1330. interacting with a Robot; other times they act as "save points".
  1331. Other objects will push them around instead.
  1332. <a class="helplink" href="#SENSORSW.HLP__094">Sensors - What They Are and How to Use Them</a>
  1333. <span class="fB ">Robot </span><span class="f7 ">?</span>
  1334. <span class="fB ">Pushable Robot </span><span class="f7 ">?</span>
  1335. Robots are the workhorses, the artisans, the... nearly
  1336. everythings of MegaZeux. They are highly flexible objects
  1337. which can do almost anything. They utilize their own full-scale
  1338. programming language, dubbed Robotic. If another object can
  1339. do something, a Robot can almost always do it better. They can
  1340. show messages, fight the player, play music or sound, set the
  1341. entire gameplay structure, and do countless other things. See
  1342. the appropriate help sections for more information.
  1343. <a class="helplink" href="#ROBOTSWH.HLP__1st">Robots - What They Are and How to Use Them</a>
  1344. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  1345. <hr /></div>
  1346. <div class="helpfile" id="CONFGINI.HLP">
  1347. <a class="helpanchor" name="CONFGINI.HLP__1st"> </a>
  1348. <p class="helpcentered"><span class="f9 ">The Config File</span></p>
  1349. One of the first things a new MegaZeux user should do is edit
  1350. the options in the config file; even experienced MZXers may find
  1351. some of the customization options novel and useful. Go open
  1352. config.txt in any text editor. There is ample commentary to let
  1353. the user know how to change the options. Make sure to remove
  1354. the # sign from any option you want set!
  1355. Editing the options can result in better sound, better / more
  1356. customizable graphics, more fitting defaults, a more
  1357. personalized Robotic editor, joystick support, extended macros,
  1358. automated backup and much more.
  1359. New versions - even minor version changes - have added new
  1360. options to the config file, so it is helpful to keep this file
  1361. current.
  1362. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  1363. <hr /></div>
  1364. <div class="helpfile" id="IFYOUFIN.HLP">
  1365. <a class="helpanchor" name="IFYOUFIN.HLP__1st"> </a>
  1366. <p class="helpcentered"><span class="f9 ">If You Find a Bug...</span></p>
  1367. ..we want to know! We're very interested in any problems or
  1368. bugs you find in MegaZeux. We also welcome any comments,
  1369. criticism, or suggestions. We especially appreciate QUALITY
  1370. MegaZeux worlds. Here's the contact information as of this
  1371. writing:
  1372. Check the reports on DigitalMZX's Bug Tracker
  1373. (http://www.digitalmzx.net/forums/index.php?app=tracker) to see
  1374. if your problem has already been addressed. Active problems and
  1375. bugs that are only fixed in a development version of MegaZeux
  1376. are listed, as of this writing, in the "MegaZeux" category,
  1377. while the bugs that are fixed in a stable version are in the
  1378. "Closed MegaZeux Bugs" category. Feature Requests are handled
  1379. similarly.
  1380. To make things sane for all parties, do this before submitting:
  1381. 1) Make sure you have the most current version of MegaZeux.
  1382. 2) Make sure that the Bug Tracker doesn't address your bug.
  1383. 3) Try to write down what specifically happens.
  1384. 4) List what platform(s) you know show this problem.
  1385. 5) Try to pinpoint the problem to a specific Robotic line or
  1386. MZX function; at the very least, try to narrow it down.
  1387. Pinpointing which version introduced the bug is very
  1388. helpful, if possible.
  1389. 6) If it is a crash, try to run a debug build through GDB and
  1390. post a backtrace of the crash.
  1391. 7) If you're unsure if the bug's been addressed, try to build
  1392. a version from GitHub's GIT repository and see if the bug
  1393. is still present in the test build.
  1394. 8) Optimally, if the problem is a regression caused by the
  1395. port, upload a world made in 2.70 that works in 2.70 but
  1396. does not in the current version to best isolate the
  1397. problem.
  1398. &#xE009;
  1399. Additionally, contacting the developers in real-time can help
  1400. illuminate the problem.
  1401. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  1402. <hr /></div>
  1403. <div class="helpfile" id="FAQ.HLP">
  1404. <a class="helpanchor" name="FAQ.HLP__1st"> </a>
  1405. <p class="helpcentered"><span class="f9 ">Frequently Asked Questions</span></p>
  1406. The following is a list of questions that have been received
  1407. about MegaZeux innumerable times in some form or another.
  1408. Q: I hate that MegaZeux is always windowed! Could you change
  1409. this?
  1410. A: There's already a way to switch between fullscreen and
  1411. windowed modes - press Ctrl+Alt+ENTER. Also, the config file
  1412. has an option that starts MZX in fullscreen mode at launch.
  1413. Q: How can I get option (foobar) in the config file to work?
  1414. A: Make sure the pound / hash sign in front of the command is
  1415. deleted. Otherwise, the option is treated as a comment and
  1416. ignored.
  1417. Q: Are there any MZX-specific tools that can make developing an
  1418. MZX game easier?
  1419. A: Yes, plenty! MegaZeux comes with two helpful tools:
  1420. "Checkres" will detect what files are referenced by an MZX
  1421. world and which are present, and "ccv" can take an image file
  1422. and output a conversion of it in .chr/.mzm form for MZX use.
  1423. There are several graphical conversion programs such as
  1424. CharCon, and MZX worlds that create control mappings such as
  1425. Joymap. MZX has natural time-savers, of course. Automated
  1426. backups, macros, Robotic code import/export, expressions,
  1427. repeated block copying and other features can help speed up
  1428. development time.
  1429. Q: This MZX game has some neat things in it! Can I use some of
  1430. these things in my own game?
  1431. A: It's usually okay to do this, as long as you give definite
  1432. credit to the original creator(s). Unless it was made
  1433. specifically for the game, music and sound from other MZX
  1434. games generally doesn't need direct attribution, but re-used
  1435. artwork and code definitely should get attribution. If you're
  1436. unsure whether the original creator(s) would like you using
  1437. their work in your own game, ask! What we don't want to see,
  1438. though, is passing the work of others - especially graphics,
  1439. writing, and code - as your own. DON'T PLAGIARIZE. JUST
  1440. BECAUSE THEY DID NOT EXPLICITLY FORBID YOU FROM USING THEIR
  1441. WORK DOES NOT MEAN YOU CAN PASS IT OFF AS YOUR OWN.
  1442. Q: Can I distribute a world I made with MegaZeux? Is it legal?
  1443. Must I/can I include MegaZeux with it? Can they be shareware
  1444. worlds?
  1445. A: Of course you can distribute your worlds! That is what
  1446. MegaZeux is for! However, while there are those who would help
  1447. point out your game's flaws in a forgiving manner, not
  1448. everyone is capable of constructive criticism. Playtest your
  1449. game before uploading it, with at least one other person
  1450. evaluating the game for bugs, play balance, and
  1451. text/plot/grammatical errors (when relevant). Get creative and
  1452. make your game worth playing!
  1453. Please include any WAV, module, OGG, CHR, MZM, PAL and all
  1454. other files with the games, as well as a cohesive and helpful
  1455. description file or manual. (Using checkres to guarantee that
  1456. every relevant file is included can be helpful.)
  1457. While you can simply distribute your game with a copy of
  1458. MegaZeux included, or even just post the game's files in an
  1459. archive by itself, consider releasing your game as both a
  1460. standalone archive and as pure game files in separate
  1461. downloads.
  1462. Typically, MegaZeux worlds are freeware, but if you've made an
  1463. assuredly epic and ground-breaking game, then you can attempt
  1464. to ask for registration money in a shareware demo version.
  1465. Just don't get your hopes up. Alternatively, consider
  1466. uploading your game to a platform that allows optional
  1467. donations.
  1468. Q: I WANT FUNCTION (FOOBAR) ADDED OR I LEAVE THE COMMUNITY
  1469. FOREVER :<
  1470. A: Before you go bugging the maintainer(s) of MegaZeux to add
  1471. new functions, consider these things:
  1472. 1) Some things require massive work to implement. These
  1473. things require changing the world, save or board format,
  1474. and format changes are explicitly reserved for version
  1475. number changes.
  1476. 2) Some things have been purposely ignored because the
  1477. maintainer(s) deems these things not worth including. In
  1478. this case, it's probably best to pick up the source and
  1479. figure out how to add this function yourself.
  1480. 3) You may not be the first to ask for any certain feature.
  1481. Current feature requests are listed in DMZX's Bug Tracker.
  1482. If you are not the first, then you'll often find out why a
  1483. feature is not implemented or, better, you'll end up
  1484. finding out that it is going to be implemented after all!
  1485. Either way, you learn more about the feature and what
  1486. would need to be done to include it.
  1487. 4) It's technically possible to add new commands, but
  1488. currently the method of storing Robotic severely limits
  1489. the amount of new commands. Until this system is retooled,
  1490. there will be no new commands. Features that are most
  1491. cleanly implemented through a new command may possibly be
  1492. implemented in other ways, however.
  1493. Q: Is adding network capabilities to MegaZeux planned?
  1494. A: Short answer: Possibly. This has been discussed at-length;
  1495. the biggest problems with adding these to GAMES are thorny
  1496. implementation issues (how the MZX programmer would insert
  1497. network capabilities into a MegaZeux world, as well as the
  1498. structure in general). It's definitely possible, and possible
  1499. to do soundly, but developers don't have netplay as a high
  1500. priority. As for other networking capabilities and MZX, this
  1501. has already been done to some extent (starting with 2.82b,
  1502. MZX ships with an updater program). Implementing tools and
  1503. aids for MZX relying on networking is a lot less thorny of an
  1504. issue, and might be considered.
  1505. Q: Will MegaZeux games ever be playable without MegaZeux
  1506. itself?
  1507. A: In a sense, they can be now. It was a long-held consensus
  1508. among most of MegaZeux's developers that the possible hassle
  1509. saved for newbies and for those who would instantly refuse to
  1510. play a game because it can't be launched directly was not
  1511. worth implementing this feature. However, this has changed.
  1512. MZXRun, the editor-less version of MegaZeux, can now be
  1513. set to run in "standalone mode", a configuration designed for
  1514. only playing a specific world. This mode changes several MZX
  1515. mannerisms to better accommodate a standalone version of a
  1516. game. The title screen can also be completely skipped.
  1517. Additions to Robotic (such as exiting the game through code or
  1518. blocking the default escape menu) have also facilitated
  1519. standalone releases. Read the comments for standalone_mode in
  1520. config.txt for more information, if interested.
  1521. Q: I need more than 256 characters! Could you help with this?
  1522. A: Then you'll need to carefully utilize the Robot command
  1523. LOAD CHAR SET and ration your characters carefully. The
  1524. 256-char limit is set within the world format and will
  1525. currently be left alone. Also, you might not REALLY
  1526. need 256 characters at once. If you're wanting more
  1527. characters because of heavy character use in animation,
  1528. partial character set loading will probably be the best
  1529. solution. Otherwise, find out which characters will never be
  1530. shown when other characters are and replace them with
  1531. characters you WILL use.
  1532. Alternatively, make use of unbound sprites. Unbound sprites
  1533. can access 15 full character sets instead of just one, on top
  1534. of their other benefits.
  1535. <a class="helplink" href="#PARTIAL.HLP__par">Partial Character Sets</a>
  1536. Q: Why is my MegaZeux world starting on the title screen?
  1537. A: The first board has to be set. Press 'G' in the editor, then
  1538. set the board using the "First board" field at the top left.
  1539. Q: Whenever I place a string on the overlay, the spaces aren't
  1540. acting like overlay at all! Is this a bug?
  1541. A: No, it's not. Char 32 (the natural space) is never part of
  1542. the overlay. You have to reserve an extra character or use
  1543. the solid character for spaces, or otherwise convert spaces
  1544. to useable replacements during run-time.
  1545. Q: How can I input a number over 32767 or under -32768 in
  1546. Robotic?
  1547. A: You must use an expression. Encase the number in
  1548. parentheses, as shown here:
  1549. <span class="fE ">set "largesse" to "(2000000000)"</span>
  1550. Q: My Robot can't change its/the player's characters! I
  1551. use CHAR "A" but it turns invisible! What am I doing wrong?
  1552. A: Use CHAR 'A' instead. You MUST use single quotes
  1553. (apostrophes) or it will use the value of the COUNTER
  1554. A, which is probably 0.
  1555. Q: Can I use the music from Caverns in my games? How about
  1556. the music from the registered games? How about the SAM
  1557. files?
  1558. A: It'd be preferred if you did not use Caverns music in any
  1559. games you distribute, because Caverns music was ancient aeons
  1560. ago. The music from the registered games was illegal to
  1561. distribute; it's now under the GPL, but should be avoided for
  1562. the same reasons Caverns music should. The SAM files are
  1563. public domain and may be used as you please.
  1564. Q: Where can I get module files?
  1565. A: If you can't make them, search webpages for good ones.
  1566. http://www.modarchive.com has a very large tracked music
  1567. library, as do many old CD-ROM shareware collections. Another
  1568. popular option is to convince a friend to do it for you. If
  1569. your game shows exceptional promise, then an established
  1570. musician in the community might make music for you. You will
  1571. probably have to show real evidence that your game is as good
  1572. as its hype in most cases, however. In any case, remember to
  1573. give credit where it is due (yes, even to yourself).
  1574. Be careful when inserting OGG files into your game. OGG files
  1575. often present considerable bloat to a game if used as music.
  1576. Also, not only may you be chided for putting in a popular song
  1577. if you do so, but you could be violating copyright law.
  1578. Chances are that if you can make a coherent argument on "fair
  1579. use" of copyrighted songs, you will be far less likely to be
  1580. in this position to begin with. <span class="fC ">&#xE003;</span>
  1581. Q: What is some good software to create module files?
  1582. A: It's a matter of personal preference. Many people prefer
  1583. OpenMPT because it works well with Windows. Others prefer to
  1584. work with Schism Tracker. Finally, a few are still fond of
  1585. Fast Tracker II, and therefore use the similar MilkyTracker.
  1586. DOS-based trackers like IT and FT2 understandably need outside
  1587. tools such as DOSBox to run as expected.
  1588. If you don't mind pumping up your game's filesize, you could
  1589. use any typical composition software (like FL Studio) and
  1590. convert your wave to ogg format.
  1591. Q: How do I make WAV files?
  1592. A: There are three easy ways to create WAV files. First, you
  1593. get recording software and a mic. Set it all up (read the
  1594. instructions if necessary) and go for it. Second, you can
  1595. download them or get them from outside sources (such as The
  1596. Freesound Project). Third, you can take existing files and
  1597. change them with effects like echo. Converting .wav files
  1598. intended for sound effects into OGG format is a worthwhile
  1599. idea; the drop in file size compared to the drop in quality
  1600. is huge.
  1601. Q: Why do I get garbage when I try reading a file?
  1602. A: You likely have it open for writing. To close a file, use
  1603. the command SET "" to "FWRITE_OPEN".
  1604. Q: Why does MegaZeux slow down significantly when I set the
  1605. "commands" counter to a high value?
  1606. A: You're likely using an idle loop without a CYCLE 1 or WAIT 1
  1607. command inserted. Find the offending loop and add one; if
  1608. you're wary about possible delay effects, rest assured that
  1609. adding either of these will not unnecessarily add delays. It
  1610. will simply end a cycle. By default, MZX will warn you if you
  1611. exceed 2000000 commands in a cycle (but only in test
  1612. sessions). For further information, look up the Cycles and
  1613. Board Scans section.
  1614. <a class="helplink" href="#PROCESS.HLP__prc">Cycles and Board Scans - How MZX Processes Robots</a>
  1615. Q: I don't like that anyone can open up my game and see how it
  1616. works, or that anyone can use the editor functions to cheat
  1617. at my game. Is there an easy way to prevent people from
  1618. opening my game in the editor?
  1619. A: Nope. MegaZeux used to be able to protect worlds from being
  1620. edited or even played without a password, but this feature
  1621. has long since been removed.
  1622. Releasing games in standalone form can possibly help. While
  1623. anyone who has even cursory knowledge of MegaZeux can still
  1624. fully look through a standalone game, people who have no
  1625. knowledge of MegaZeux beforehand will lack the immediate means
  1626. to heavily manipulate or look through your game.
  1627. Q: I heard only certain graphics cards can properly show Super
  1628. MZX mode games. Is this true?
  1629. A: Not anymore. Any computer that can display normal games in
  1630. MegaZeux can now display Super MZX mode games.
  1631. Q: How can I get "mod *" as the default board mod?
  1632. A: To set "mod *", use either Shift+8 or the asterisk (*) on the
  1633. numpad.
  1634. Q: What's with these "~roboclp.tmp" files packed with so many
  1635. games?
  1636. A: Those held clipboard information in DOS versions of MegaZeux.
  1637. They are useless and can be freely deleted.
  1638. Q: Why doesn't [ work for taking screenshots?
  1639. A: It has been changed to F12 and now works in any area in MZX,
  1640. including any part of the editor. Instead of PCX, it now
  1641. currently outputs PNG files by default, but will output MS
  1642. BMP format files on platforms unable to support PNG.
  1643. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  1644. <hr /></div>
  1645. <div class="helpfile" id="MEGAZEUX.HLP">
  1646. <a class="helpanchor" name="MEGAZEUX.HLP__1st"> </a>
  1647. <p class="helpcentered"><span class="f9 ">MegaZeux Limitations</span></p>
  1648. MegaZeux has to impose a number of limitations to insure
  1649. worldfile compatibility with MZX 2.x worldfiles.
  1650. <p class="helpcentered">Memory Limitations</p>
  1651. No single Robot can exceed 2 megabytes in size.
  1652. No single sign or Scroll can exceed 64 kilobytes in size.
  1653. <p class="helpcentered">Quantity Limitations</p>
  1654. Item: Largest number allowed:
  1655. Robots 255 per board plus Global Robot
  1656. Scrolls/Signs 255 per board
  1657. Sensors 255 per board
  1658. Sprites 256 per world
  1659. Boards 250 per world
  1660. Local Counters 32 per Robot plus specialized local counters
  1661. (e.g. loopcount, lava_walk, bullettype)
  1662. <p class="helpcentered">Length Limitations</p>
  1663. Robot Name Length 14 characters
  1664. Board Name Length 24 characters
  1665. String Length 4,194,304 characters (4 megabytes)
  1666. Editor Line Length 241 characters (INCLUDING "extra" words)
  1667. * Message Length 512 characters
  1668. Input String Length 512 characters
  1669. Macro Length 64 characters (for single-line macros)
  1670. Mod Filename Length 512 characters (including subdirectories,
  1671. if applicable)
  1672. <p class="helpcentered">Theoretical Limitations</p>
  1673. Board size maximum is roughly 16.7 million characters
  1674. ((2^24) - 1).
  1675. Vlayer size maximum is roughly 16.7 million characters
  1676. ((2^24) - 1).
  1677. Board width or height maximum is 32767.
  1678. The maximum number of counters and strings depends on
  1679. the platform (e.g. between 32 or 64-bit) but is sufficiently
  1680. large. You should be fine utilizing hundreds of thousands, or
  1681. even millions.
  1682. These limitations are mostly theoretical because of the utter
  1683. improbability of meeting these limits and the amount of RAM (up
  1684. to (hundreds of) gigabytes if fully utilized) they consume.
  1685. <p class="helpcentered">Other Limitations</p>
  1686. Numbers less than -32768 or more than 32767 cannot be directly
  1687. used in Robotic. This problem is a worldfile issue and can be
  1688. circumvented by using a constant expression (parentheses).
  1689. No board can have a width of a multiple of 256 chars because
  1690. this corrupts the board if it lacks an overlay. This problem is
  1691. a worldfile issue and widths set to a multiple of 256 will
  1692. increased by one more horizontal character regardless of the
  1693. status of the board's overlay.
  1694. <a class="helplink" href="#EXPRESS.HLP__exp">Expressions</a>
  1695. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  1696. <hr /></div>
  1697. <div class="helpfile" id="THEWORLD.HLP">
  1698. <a class="helpanchor" name="THEWORLD.HLP__1st"> </a>
  1699. <p class="helpcentered"><span class="f9 ">The World Editor</span></p>
  1700. Ready to start creating your own worlds? Then, let's get
  1701. started! This section is a short editor tutorial. It will
  1702. teach you the basics of creating your own worlds.
  1703. To get into the editor, press N or F8 from the title screen. You
  1704. will be asked to name a starting board: one can type an
  1705. appropriate name and create a second starting board, or press
  1706. Escape to cancel and remain on your new world's title screen.
  1707. When this prompt is dealt with, you will be presented with a
  1708. blank board with a small status bar at the bottom. You can use
  1709. Alt+H to pop up a listing of key shortcuts at the bottom. PageUp
  1710. and PageDown change its currently shown key shortcuts. The mouse
  1711. also works to change pages (but not to select actions). Feel
  1712. free to play around with these various options. Press Alt+R to
  1713. restart and clear everything (you will be asked for
  1714. confirmation, to make sure you really want to go through with
  1715. it).
  1716. (On Mac platforms, any key shortcut containing Alt can work with
  1717. &#xE0BD;&#xE0BE; replacing Alt. So, for above, &#xE0BD;&#xE0BE;+H would pop up the help
  1718. listing, and &#xE0BD;&#xE0BE;+R would restart the world.)
  1719. For your first world, you should start simple. The very first
  1720. board in the board listings is the title screen, so name that
  1721. board after your game. (If you opted to create a starting board,
  1722. you have to switch to the first board with the B key.) Press I
  1723. for board info. This screen will display a bunch of options;
  1724. there are loads of important options, but the most relevant
  1725. option for now is the "Board name" option. Type in the name of
  1726. your game and then click on "OK" or press Tab until OK is
  1727. highlighted and press Enter. Now that the title screen is
  1728. named, its design begins... or is put aside for later (or even
  1729. the end).
  1730. If you made a starting board upon creating your world, simply
  1731. press B to move to it. If you skipped making a starting board,
  1732. you may need to create the first playable board, or location, of
  1733. your game. Press A to add a board, then type in a short
  1734. description of the board, such as "Starting Board". Press Enter
  1735. to go to this new board. This board also needs to be set as the
  1736. starting board. Press G to load the Global Settings screen. Once
  1737. there, select the First Board option and set it to your starting
  1738. board.
  1739. Now you are free to doodle around. Use C to change the active
  1740. color. Use F3 through F9 to bring up menus of items, terrains,
  1741. and creatures. Selecting one with the arrows and Enter will
  1742. allow you to place it using arrow keys and space.
  1743. For example, press F3 for terrains, and select Line. (This is
  1744. a form of wall.) Now move around, placing walls. To ease
  1745. this, you can press Tab to toggle draw mode. When draw mode is
  1746. active, every move of the cursor will place the current
  1747. item/color. The current item and color is shown on the top
  1748. line of the menu.
  1749. Try to create a pleasing-looking screen, regardless of its
  1750. planned function. Some items will require that you set settings
  1751. to determine their behavior. To place the player's starting
  1752. position, move the cursor to the destination, press F10, and
  1753. select Player. Alternatively, press Enter while highlighting
  1754. the Player and press Space on the desired destination.
  1755. When you are done, press G to go to the Global Info screen.
  1756. TAB to the Next button and press Enter. You will now be
  1757. highlighting the option "First Board". Press Enter, and select
  1758. the starting board (this is where gameplay starts... NOT the
  1759. title screen in the vast majority of cases) from the list and
  1760. press Enter. Then TAB to OK and press Enter.
  1761. You could now press Alt+N to select a module (music) file for
  1762. the board, if you wish. Then press S to save the world, and
  1763. type in a filename. (The extension of .MZX will automatically
  1764. be added.) Press Enter to save the world. Press ESC to exit the
  1765. editor, and now you can play your game! You can use L to reload
  1766. your world in the editor to make changes, if necessary. See
  1767. General Editing Tips for more advanced editing info.
  1768. New in the 2.8+ line of MegaZeux is the protection of colors
  1769. and characters the editor uses. The editor uses sets outside of
  1770. the currently used sets. The character set for the editor is
  1771. mzx_edit.chr; only edit if you want to change the editor's
  1772. appearance.
  1773. <a class="helplink" href="#GENERALE.HLP__1st">General Editing Tips</a>
  1774. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  1775. <hr /></div>
  1776. <div class="helpfile" id="GENERALE.HLP">
  1777. <a class="helpanchor" name="GENERALE.HLP__1st"> </a>
  1778. <p class="helpcentered"><span class="f9 ">General Editing Tips</span></p>
  1779. The following is a list of important editing tips. They assume
  1780. you are familiar with MegaZeux's dialog box system, and that
  1781. you can navigate the editor's menus.
  1782. <p class="helpcentered">Linking Boards</p>
  1783. Simple, one-board games can get boring REALLY fast. There are
  1784. five ways to move between boards.
  1785. A simple method of connecting boards is with the Board Exits
  1786. dialog, accessed by pressing X. Here, you can select boards that
  1787. you will reach if you walk off of the screen in a given
  1788. direction. The destination board shouldn't have anything in the
  1789. way, and will not automatically lead back - you must set the
  1790. exit on that board too.
  1791. Another way is to use a Robot to teleport a player with the
  1792. <span class="fA ">teleport player "boardname" X Y</span><span class="fF "> command. This assumes that you</span>
  1793. are familiar with using Robots, but is the only way to go to
  1794. another board without having the player walk off-screen, moving
  1795. the player into a teleport, requiring the player to have been on
  1796. the destination board earlier, or reloading the current world.
  1797. Robots can also dynamically set board exits using the
  1798. <span class="fA ">BOARD [dir] "boardname"</span><span class="fF "> command, including disabling exits</span>
  1799. by inputting NONE instead of the board name.
  1800. <a class="helplink" href="#COMMAND2.HLP___t5">TELEPORT PLAYER "string" # #</a>
  1801. <a class="helplink" href="#COMMAND2.HLP___b7">BOARD [dir] "string"</a>
  1802. <a class="helplink" href="#COMMAND2.HLP___b8">BOARD [dir] NONE</a>
  1803. The third way is to add stairs, caves and whirlpools using the
  1804. Transport (F7) menu. After one is picked, you select a
  1805. destination board. The destination board should contain a
  1806. similar transport leading back. The two entrances will now lead
  1807. to each other.
  1808. The fourth way is by saving and restoring player positions using
  1809. Robotic. The <span class="fA ">save player position #</span><span class="fF "> command will remember the</span>
  1810. current board and player position and save this info in the
  1811. given slot #, and the <span class="fA ">restore player position #</span><span class="fF "> command returns</span>
  1812. the player to the saved position.
  1813. The last way - the most kludge-like - is to load the current
  1814. world with a 'swap world' command. This will send the player to
  1815. the starting board of the current world, but will restore the
  1816. world to its original state. Set counters and strings will be
  1817. preserved. This method is used for its powerful restorative
  1818. properties.
  1819. To switch to other boards in the editor, use B. To add boards,
  1820. press A, or press B and select (add board) from the board list.
  1821. <p class="helpcentered">Board Sizes</p><a class="helpanchor" name="GENERALE.HLP__sizepos"> </a>
  1822. You can change the size and placement of a board's viewport with
  1823. Alt+P. You can also choose to center the viewport; this will
  1824. automatically set the viewport placement to display the center
  1825. of the screen.
  1826. You can also change the actual size of the board. The highest
  1827. possible size is 16.7 million tiles, though a board that size
  1828. would require unreasonably high RAM requirements (128MB). Note
  1829. that reducing the size of a board will permanently destroy
  1830. anything outside of the new limits.
  1831. <p class="helpcentered">Other Important Editing Keys</p>
  1832. You can use Ins to "grab" the object beneath the cursor, or
  1833. Enter to edit it and then grab it as well. Use P to modify the
  1834. settings of the object in the buffer. Use Alt+N to select music
  1835. for the current board, or turn the music off if it is already
  1836. selected. Use Alt+Z to clear the current board entirely (you
  1837. will be asked for confirmation). You can edit important Board
  1838. Options with I, and important Global (world) Options with G.
  1839. <p class="helpcentered">The Mouse in the Editor</p>The left mouse button acts like space; it places a copy of the
  1840. current item over the mouse cursor. The right mouse button acts
  1841. like insert; it grabs the current thing over the mouse cursor.
  1842. <a class="helplink" href="#EDITINGK.HLP__080">Editing Keys and Options Reference</a>
  1843. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  1844. <hr /></div>
  1845. <div class="helpfile" id="EDITINGK.HLP">
  1846. <a class="helpanchor" name="EDITINGK.HLP__080"> </a>
  1847. <p class="helpcentered"><span class="f9 ">Editing Keys and Options Reference</span></p>
  1848. The following is an alphabetical listing of keys within the
  1849. World editor. This is followed by a detailed description of
  1850. what each one does.
  1851. On Mac platforms, any command that uses the Alt key can take &#xE0BD;&#xE0BE;
  1852. (the command key) instead.
  1853. <a class="helplink" href="#EDITINGK.HLP___A">A - Add (board)</a>
  1854. <a class="helplink" href="#EDITINGK.HLP___B">B - Select Board</a>
  1855. <a class="helplink" href="#EDITINGK.HLP___C">C - Color</a>
  1856. <a class="helplink" href="#EDITINGK.HLP___D">D - Delete (board)</a>
  1857. <a class="helplink" href="#EDITINGK.HLP___F">F - Fill</a>
  1858. <a class="helplink" href="#EDITINGK.HLP___G">G - Global Info</a>
  1859. <a class="helplink" href="#EDITINGK.HLP___I">I - Info (board)</a>
  1860. <a class="helplink" href="#EDITINGK.HLP___L">L - Load</a>
  1861. <a class="helplink" href="#EDITINGK.HLP___M">M - Move Board</a>
  1862. <a class="helplink" href="#EDITINGK.HLP___P">P - Parameter</a>
  1863. <a class="helplink" href="#EDITINGK.HLP__076">S - Save</a>
  1864. <a class="helplink" href="#EDITINGK.HLP___V">V - View</a>
  1865. <a class="helplink" href="#EDITINGK.HLP__083">X - Exits</a>
  1866. <a class="helplink" href="#EDITINGK.HLP__min">- - Goto Previous Board</a>
  1867. <a class="helplink" href="#EDITINGK.HLP__plu">+ - Goto Next Board</a>
  1868. <a class="helplink" href="#EDITINGK.HLP__075">Alt+A - Select Char Set</a>
  1869. <a class="helplink" href="#EDITINGK.HLP__073">Alt+B - Block</a>
  1870. <a class="helplink" href="#EDITINGK.HLP__AltC">Alt+C - Char Edit</a>
  1871. <a class="helplink" href="#EDITINGK.HLP__AltD">Alt+D - Default Colors</a>
  1872. <a class="helplink" href="#EDITINGK.HLP__AltE">Alt+E - Palette</a>
  1873. <a class="helplink" href="#EDITINGK.HLP__097">Alt+F - Sound Effects</a>
  1874. <a class="helplink" href="#EDITINGK.HLP__AltG">Alt+G - Edit Global Robot</a>
  1875. <a class="helplink" href="#EDITINGK.HLP__AltH">Alt+H - Hotkey Toggle</a>
  1876. <a class="helplink" href="#EDITINGK.HLP__078">Alt+I - Import</a>
  1877. <a class="helplink" href="#EDITINGK.HLP__AltL">Alt+L - Test WAV</a>
  1878. <a class="helplink" href="#EDITINGK.HLP__AltM">Alt+M - Modify</a>
  1879. <a class="helplink" href="#EDITINGK.HLP__AltN">Alt+N - Music</a>
  1880. <a class="helplink" href="#EDITINGK.HLP__AltO">Alt+O - Edit Overlay</a>
  1881. <a class="helplink" href="#EDITINGK.HLP__084">Alt+P - Size/Pos</a>
  1882. <a class="helplink" href="#EDITINGK.HLP__AltR">Alt+R - Restart</a>
  1883. <a class="helplink" href="#EDITINGK.HLP__082">Alt+S - Status Info</a>
  1884. <a class="helplink" href="#EDITINGK.HLP__AltS2">Alt+S - Show Level</a>
  1885. <a class="helplink" href="#EDITINGK.HLP__AltT">Alt+T - Test</a>
  1886. <a class="helplink" href="#EDITINGK.HLP__077">Alt+X - Export</a>
  1887. <a class="helplink" href="#EDITINGK.HLP__AltY">Alt+Y - Debug Window</a>
  1888. <a class="helplink" href="#EDITINGK.HLP__AltZ">Alt+Z - Clear (Board)</a>
  1889. <a class="helplink" href="#EDITINGK.HLP__AltNu">Alt+Number - Load Editor Position</a>
  1890. <a class="helplink" href="#EDITINGK.HLP__CtrG">Ctrl+G - Goto Position</a>
  1891. <a class="helplink" href="#EDITINGK.HLP__CtrN">Ctrl+N - Test Music</a>
  1892. <a class="helplink" href="#EDITINGK.HLP__CtrY">Ctrl+Y - Redo</a>
  1893. <a class="helplink" href="#EDITINGK.HLP__CtrZ">Ctrl+Z - Undo</a>
  1894. <a class="helplink" href="#EDITINGK.HLP__CtrNu">Ctrl+Number - Save Editor Position</a>
  1895. <a class="helplink" href="#EDITINGK.HLP__Sft8">Shift+8 OR Numpad * - Mod Wildcard</a>
  1896. <a class="helplink" href="#EDITINGK.HLP__SftAr">Shift+Arrow - Goto Linked Board</a>
  1897. <a class="helplink" href="#EDITINGK.HLP__F1">F1 - Help</a>
  1898. <a class="helplink" href="#EDITINGK.HLP__F2">F2 - Text</a>
  1899. <a class="helplink" href="#EDITINGK.HLP__F3">F3 - Terrain</a>
  1900. <a class="helplink" href="#EDITINGK.HLP__F4">F4 - Item</a>
  1901. <a class="helplink" href="#EDITINGK.HLP__F5">F5 - Creature</a>
  1902. <a class="helplink" href="#EDITINGK.HLP__F6">F6 - Puzzle</a>
  1903. <a class="helplink" href="#EDITINGK.HLP__F7">F7 - Transport</a>
  1904. <a class="helplink" href="#EDITINGK.HLP__F8">F8 - Element</a>
  1905. <a class="helplink" href="#EDITINGK.HLP__F9">F9 - Misc. (thing)</a>
  1906. <a class="helplink" href="#EDITINGK.HLP__F10">F10 - Objects</a>
  1907. <a class="helplink" href="#EDITINGK.HLP__F11">F11 - Select Screen Mode</a>
  1908. <a class="helplink" href="#EDITINGK.HLP__F12">F12 - Take Screenshot</a>
  1909. <a class="helplink" href="#EDITINGK.HLP__AF11">Alt+F11 - Robotic Debugger</a>
  1910. <a class="helplink" href="#EDITINGK.HLP__ShF1">Shift+F1 - Show InvisWalls</a>
  1911. <a class="helplink" href="#EDITINGK.HLP__ShF2">Shift+F2 - Show Robots</a>
  1912. <a class="helplink" href="#EDITINGK.HLP__ShF3">Shift+F3 - Show Fakes</a>
  1913. <a class="helplink" href="#EDITINGK.HLP__ShF4">Shift+F4 - Show Spaces</a>
  1914. <a class="helplink" href="#EDITINGK.HLP__Ar">Arrow - Move</a>
  1915. <a class="helplink" href="#EDITINGK.HLP__AltAr">Alt+Arrow - Move 10</a>
  1916. <a class="helplink" href="#EDITINGK.HLP__BkSp">BackSpace - Delete (Main Layer Only)</a>
  1917. <a class="helplink" href="#EDITINGK.HLP__Del">Delete - Delete</a>
  1918. <a class="helplink" href="#EDITINGK.HLP__End">End - L/R Corner</a>
  1919. <a class="helplink" href="#EDITINGK.HLP__En">Enter - Modify+Grab [Board Mode]</a>
  1920. <a class="helplink" href="#EDITINGK.HLP__Enter2">Enter - Character [Overlay Mode]</a>
  1921. <a class="helplink" href="#EDITINGK.HLP__ESC">Escape - Exit/Cancel Mode</a>
  1922. <a class="helplink" href="#EDITINGK.HLP__Home">Home - U/L Corner</a>
  1923. <a class="helplink" href="#EDITINGK.HLP__Ins">Insert - Grab</a>
  1924. <a class="helplink" href="#EDITINGK.HLP__Sp">Spacebar - Place</a>
  1925. <a class="helplink" href="#EDITINGK.HLP__Tab">Tab - Draw</a>
  1926. <a class="helplink" href="#EDITINGK.HLP__PgDn">PageDown - Next Menu</a>
  1927. <a class="helplink" href="#EDITINGK.HLP__PgUp">PageUp - Previous Menu</a>
  1928. <a class="helpanchor" name="EDITINGK.HLP___A"><span class="fE ">A - Add (Board)</span></a>
  1929. Press A to add another board to the current world. You will be
  1930. asked for the name of the new board, and then a new board will
  1931. be created. The settings for the new board will be the defaults.
  1932. After adding a board, you will be moved to the new board. There
  1933. is a limit of 250 unique boards per world.
  1934. <a class="helpanchor" name="EDITINGK.HLP__075"><span class="fE ">Alt+A - Select Char Set</span></a>
  1935. Press Alt+A and select one of the four different character
  1936. sets. This will change the current character set to one of the
  1937. four defaults. ASCII is the default EGA ASCII character set
  1938. (code page 437). MegaZeux default is the default MegaZeux
  1939. character set. Blank is the MegaZeux default, but with most
  1940. graphical characters blank instead. Text, lines, arrows, blocks,
  1941. and certain other symbols are not affected. SMZX set is the
  1942. default character set for SMZX modes.
  1943. <a class="helpanchor" name="EDITINGK.HLP___B"><span class="fE ">B - Select Board</span></a>
  1944. Press B to change the current board by selecting from a list.
  1945. Selecting (add board) will prompt the user to name the new
  1946. board; once named, the board is created and becomes the current
  1947. board.
  1948. <a class="helpanchor" name="EDITINGK.HLP__073"><span class="fE ">Alt+B - Block</span></a>
  1949. Press Alt+B to start block mode, then move the cursor to the
  1950. opposite corner of a rectangular block and press Alt+B again.
  1951. You can then select an action to perform upon the block. In all
  1952. copy/move operations, the cursor marks the new UPPER LEFT
  1953. corner.
  1954. Copy block will allow you to duplicate the block by moving the
  1955. cursor to a destination and pressing Enter.
  1956. Copy block (repeated) will allow same as Copy block, but will
  1957. allow copying the same block to multiple places.
  1958. Move block will allow you to move the block to a new location.
  1959. Clear block will erase the contents of the block.
  1960. Flip block will flip the block upside down.
  1961. Mirror block will flip the block left to right.
  1962. Paint block will change the entire block to the current color.
  1963. Copy to overlay will copy the block to the given spot of the
  1964. overlay.
  1965. Copy to vlayer will copy the block to the given spot of the
  1966. vlayer.
  1967. Save as MZM will save the block as a layer-type MZM file.
  1968. Destinations for Move and Copy can overlap the original block
  1969. safely.
  1970. You can block copy to other boards by going to the desired board
  1971. when prompted to pick the destination of the block; just press B
  1972. and pick the desired board.
  1973. Also, one can move the cursor across the width or height of the
  1974. block by using Ctrl+Dir. This is very helpful for tiling blocks
  1975. using the repeated copy function.
  1976. <a class="helpanchor" name="EDITINGK.HLP___C"><span class="fE ">C - Color</span></a>
  1977. Press C to select a new current color from a menu. The thing
  1978. under the cursor is not affected. One can jump to a color by
  1979. typing its hex code in the color menu; for example, typing "0D"
  1980. would jump to color 013 (background color 0, foreground color
  1981. D).
  1982. A quirk to keep in mind: any entity with a background color of 0
  1983. will display the background color of anything beneath it.
  1984. <a class="helpanchor" name="EDITINGK.HLP__AltC"><span class="fE ">Alt+C - Char Edit</span></a>
  1985. Press Alt+C to edit the character set. The character editor is
  1986. a separate section of the world editor and is discussed in
  1987. another section.
  1988. <a class="helplink" href="#CHAREDIT.HLP__079">The Character Editor</a>
  1989. <a class="helpanchor" name="EDITINGK.HLP___D"><span class="fE ">D - Delete (board)</span></a>
  1990. Press D to select a board from a list to be deleted. You cannot
  1991. delete the first board (the title screen). A deleted board will
  1992. be pruned out, with the next actual board taking its place. A
  1993. deleted board cannot be recovered or undone, so make sure this
  1994. is the desired action.
  1995. <a class="helpanchor" name="EDITINGK.HLP__AltD"><span class="fE ">Alt+D - Default Colors</span></a>
  1996. Press Alt+D to toggle forcing default colors for placing
  1997. built-ins (defaults to on). Turning this off causes built-ins to
  1998. be placed with the colors of the object held in the buffer. The
  1999. buffer object listed in the status bar will have a red dot at
  2000. the end when default colors are off. Only some types of
  2001. built-ins, such as creatures and items, have default colors.
  2002. <a class="helpanchor" name="EDITINGK.HLP__AltE"><span class="fE ">Alt+E - Palette</span></a>
  2003. Press Alt+E to edit the palette (colors). The palette editor
  2004. is a separate section of the world editor and is discussed in
  2005. another section.
  2006. <a class="helplink" href="#PALEEDIT.HLP__093">The Palette Editor</a>
  2007. <a class="helpanchor" name="EDITINGK.HLP___F"><span class="fE ">F - Fill</span></a>
  2008. Press F to fill in an enclosed area with the current thing and
  2009. color. The area must be completely surrounded by things other
  2010. than the thing beneath the cursor. For example, you can fill
  2011. over a solid square of Fakes with something else. The current
  2012. fill command may not work accurately for very large and complex
  2013. areas - in this case, you must move to the unfilled areas and
  2014. press F to continue filling. This happens very rarely,
  2015. however. Also, beware of trying to fill an area with an item
  2016. with limited placements, such as a Robot.
  2017. <a class="helpanchor" name="EDITINGK.HLP__097"><span class="fE ">Alt+F - Sound Effects</span></a>
  2018. Press Alt+F to enter the sound effects editor. This editor
  2019. affects all triggered sounds resulting from built-in actions,
  2020. such as getting hit and shooting. First you must decide whether
  2021. to use the default set of sound effects, or whether to edit
  2022. your own. You can't edit the default set. If you edit your own,
  2023. you will be in a series of three editing screens. Use the Next
  2024. and Previous buttons to move between screens. Sound effects,
  2025. and the format used to represent them, are described in detail
  2026. in another section. The format is the same as used for the
  2027. Robotic command PLAY. (Like with PLAY, digitized sounds are
  2028. allowed here.)
  2029. <a class="helplink" href="#SOUNDEFX.HLP__1st">MegaZeux's Sound System</a>
  2030. <a class="helpanchor" name="EDITINGK.HLP__AltG"><span class="fE ">Alt+G - Edit Global Robot</span></a>
  2031. Alt+G will start editing the Global Robot, starting at its name
  2032. field.
  2033. <a class="helpanchor" name="EDITINGK.HLP__CtrG"><span class="fE ">Ctrl+G - Goto Position</span></a>
  2034. Ctrl+G will pop up a window, displaying target x,y coordinates.
  2035. Set the coordinates by either typing in or selecting the desired
  2036. X and Y values, and select OK to go to those coordinates on the
  2037. current board. Choosing Cancel or pressing Escape cancels.
  2038. <a class="helpanchor" name="EDITINGK.HLP___G"><span class="fE ">G - Global Info</span></a>
  2039. Press G to enter the global info dialog boxes. The global info
  2040. options are covered in another section.
  2041. <a class="helplink" href="#GLOBALIN.HLP__086">Global Info Options</a>
  2042. <a class="helpanchor" name="EDITINGK.HLP__AltH"><span class="fE ">Alt+H - Hotkey Toggle</span></a>
  2043. Press Alt+H to toggle display of the hotkeys and horizontal
  2044. border. The default state of the hotkeys can be changed in the
  2045. config file.
  2046. <a class="helplink" href="#CONFGINI.HLP__1st">The Config File</a>
  2047. <a class="helpanchor" name="EDITINGK.HLP___I"><span class="fE ">I - Info (board)</span></a>
  2048. Press I to enter the board info dialog box. The board info
  2049. options are covered in another section.
  2050. <a class="helplink" href="#BOARDINF.HLP__085">Board Info Options</a>
  2051. <a class="helpanchor" name="EDITINGK.HLP__078"><span class="fE ">Alt+I - Import</span></a>
  2052. Alt+I allows you to import a number of different file types
  2053. into the current board or world. You can import a board file
  2054. (.MZB) unique to MegaZeux. You can import a character set file
  2055. (.CHR). You can import another world (.MZX), which is appended
  2056. to the end of the list of boards. The global of the imported
  2057. world will be ignored. (Unlike old versions of MegaZeux, all
  2058. exits in an imported world will work.) You can import a palette
  2059. (.PAL) file (including a palette indices (.PALIDX) file in SMZX
  2060. mode 3) or a sound effects (.SFX) file, all unique to MegaZeux.
  2061. Finally, you can import an MZM file at a given position.
  2062. Importing boards or worlds will clear the board and overlay undo
  2063. histories.
  2064. <a class="helpanchor" name="EDITINGK.HLP___L"><span class="fE ">L - Load</span></a>
  2065. L brings up a list of worlds in the current directory and allows
  2066. you to select one to load. You will be warned if the current
  2067. world as-is has not been saved yet.
  2068. <a class="helpanchor" name="EDITINGK.HLP__AltL"><span class="fE ">Alt+L - Test WAV</span></a>
  2069. Alt+L brings up a list of WAV/SAM/OGG files in the current
  2070. directory. Selecting one will play it once at its natural
  2071. frequency. This has no effect on the actual board or world.
  2072. <a class="helpanchor" name="EDITINGK.HLP___M"><span class="fE ">M - Move Board</span></a>
  2073. M moves the current board to the desired place on the board
  2074. list. The title screen cannot be moved, and other boards cannot
  2075. be moved to the title screen position.
  2076. <a class="helpanchor" name="EDITINGK.HLP__AltM"><span class="fE ">Alt+M - Modify</span></a>
  2077. Alt+M allows you to modify the settings of the thing under the
  2078. cursor without changing the item in the buffer.
  2079. <a class="helpanchor" name="EDITINGK.HLP__AltN"><span class="fE ">Alt+N - Music</span></a>
  2080. Alt+N brings up a list of module files in the current directory.
  2081. Selecting one will select it as the default music for the
  2082. current board. If music is already playing, Alt+N will turn it
  2083. off.
  2084. <a class="helpanchor" name="EDITINGK.HLP__CtrN"><span class="fE ">Ctrl+N - Test Music</span></a>
  2085. Ctrl+N does the same as Alt+N, except it only plays the
  2086. selected module. It does not set the board module to the
  2087. selected module. It also remembers the last-used directory to
  2088. maintain a current listening directory. A tested module will
  2089. continue to play even if the current board is set to play music,
  2090. and even if the current world file is changed.
  2091. <a class="helpanchor" name="EDITINGK.HLP__AltO"><span class="fE ">Alt+O - Edit Overlay</span></a>
  2092. Alt+O enters overlay editing mode. The overlay is on normal
  2093. overlay mode by default. The overlay editing mode is similar to
  2094. the normal editing mode, except that only certain keys are
  2095. active, and the Enter and Alt+S keys have new purposes. The
  2096. overlay is explained in further detail in another section.
  2097. <a class="helplink" href="#TOVERLAY.HLP__081">Editing and Using the Overlay</a>
  2098. <a class="helpanchor" name="EDITINGK.HLP___P"><span class="fE ">P - Parameter</span></a>
  2099. P allows you to change the settings of the current object in
  2100. the buffer. The object under the cursor is not affected.
  2101. <a class="helpanchor" name="EDITINGK.HLP__084"><span class="fE ">Alt+P - Size/Pos</span></a>
  2102. Alt+P allows you to change the size of the current board, the
  2103. viewport size, and location. See the linked section for details.
  2104. This action will clear the board and overlay undo histories.
  2105. <a class="helplink" href="#GENERALE.HLP__sizepos">Board Sizes</a>
  2106. <a class="helpanchor" name="EDITINGK.HLP__AltR"><span class="fE ">Alt+R - Restart</span></a>
  2107. Alt+R will clear the entire world. You will be asked for
  2108. confirmation. All undo histories will also be cleared.
  2109. <a class="helpanchor" name="EDITINGK.HLP__076"><span class="fE ">S - Save</span></a>
  2110. S will prompt you for a filename, then save the current world
  2111. as a MZX file. The save option will be highlighted if the
  2112. world has changed since the last save or load.
  2113. <a class="helpanchor" name="EDITINGK.HLP__082"><span class="fE ">Alt+S - Status Info</span></a>
  2114. Alt+S will allow you to type in six different counters that
  2115. can be shown on the default status screen within the game. This
  2116. allows you to easily display your own items that the player can
  2117. collect, and see how many are currently held. Counters are
  2118. discussed in further detail with Robots.
  2119. <a class="helpanchor" name="EDITINGK.HLP__AltS2"><span class="fE ">Alt+S - Show Level</span></a>
  2120. Alt+S while editing the overlay will toggle whether the level
  2121. beneath the overlay is shown in overlay editing mode (defaults
  2122. to YES).
  2123. <a class="helplink" href="#TOVERLAY.HLP__081">Editing and Using the Overlay</a>
  2124. <a class="helpanchor" name="EDITINGK.HLP__AltT"><span class="fE ">Alt+T - Test</span></a>
  2125. Alt+T will allow you to test the current world, starting on the
  2126. current board. Games CAN be loaded and saved in this mode,
  2127. making it especially helpful for debugging. Test mode also
  2128. enables several debugging tools and cheats that can be used
  2129. during a test session. Quitting will return to the editor. Note
  2130. that entering a test session will clear all editor undo
  2131. histories.
  2132. <a class="helplink" href="#DBGMODE.HLP__dbg">Debug Modes</a>
  2133. <a class="helpanchor" name="EDITINGK.HLP___V"><span class="fE ">V - View</span></a>
  2134. V will allow you to see the current board as it would appear in
  2135. the game. Use the arrows to Scroll the view, and ESC to return
  2136. to the editor.
  2137. <a class="helpanchor" name="EDITINGK.HLP__083"><span class="fE ">X - Exits</span></a>
  2138. X will bring up a menu where you can select exits for each
  2139. board direction. For example, selecting a destination board of
  2140. "City" for north will cause the player to go to that board when
  2141. pressing against the north edge of the current board. Boards
  2142. are not automatically back-linked - to make "City" lead back
  2143. here, you must go to that board and make a south exit back.
  2144. Make sure the linked boards don't obstruct each other's exits,
  2145. and that their linking boundaries are of the same size.
  2146. <a class="helpanchor" name="EDITINGK.HLP__077"><span class="fE ">Alt+X - Export</span></a>
  2147. Alt+X will allow you to export a number of different file types.
  2148. You can export a board file (MZB) unique to MegaZeux, good for
  2149. giving single boards to others. (The character set, palette,
  2150. vlayer and global info aren't included!) You can export the
  2151. character set (CHR) for later game use or to edit in Fontutil or
  2152. another external app. You can export palettes (PAL) [full,
  2153. partial, SMZX] and sound effect settings (SFX) for
  2154. transportation. Both are file formats unique to MegaZeux.
  2155. Finally, you can export the current world, but using the last
  2156. version's world format, with the "Downver. world (MZX)" option.
  2157. Files like MZMs and SAVs can be exported in-game by Robotic
  2158. code. See their respective areas for details. Other file types
  2159. such as character sets can be exported generically through file
  2160. writing facilities and charset counters. SMZX indices (PALIDX)
  2161. can be exported using the Export Palette (PAL) option in SMZX
  2162. mode 3; its export dialogue will appear after the palette export
  2163. dialogue.
  2164. <a class="helpanchor" name="EDITINGK.HLP__AltY"><span class="fE ">Alt+Y - Debug Window</span></a>
  2165. Alt+Y will toggle a red box in the lower corner of the screen.
  2166. This box shows (on labeled lines) the current position of the
  2167. cursor, the current Robot memory situation, and the presently
  2168. playing module, and lists the MZX version of the current world
  2169. at the top. This is the same as pressing F6 in-game, but removes
  2170. the key_code and key_pressed info.
  2171. <a class="helpanchor" name="EDITINGK.HLP__AltZ"><span class="fE ">Alt+Z - Clear (board)</span></a>
  2172. Alt+Z will clear the current board entirely. You will be asked
  2173. for confirmation. Clearing the board will clear the board undo
  2174. history as well.
  2175. <a class="helpanchor" name="EDITINGK.HLP__CtrZ"><span class="fE ">Ctrl+Z - Undo</span></a>
  2176. <a class="helpanchor" name="EDITINGK.HLP__CtrY"><span class="fE ">Ctrl+Y - Redo</span></a>
  2177. Ctrl+Z will undo an action; Ctrl+Y will redo any previously
  2178. undone action. Action depth is determined by config file
  2179. settings, with 100 as default.
  2180. <a class="helpanchor" name="EDITINGK.HLP__CtrNu"><span class="fE ">Ctrl+Number - Save Editor Position</span></a>
  2181. <a class="helpanchor" name="EDITINGK.HLP__AltNu"><span class="fE ">Alt+Number - Load Editor Position</span></a>
  2182. These save and load up to 10 cursor positions in the editor
  2183. (0 through 9). These positions save both current board
  2184. coordinates and active board, so one can save position on one
  2185. board and load position from another board. These positions are
  2186. saved for that world in its .editor.cnf file.
  2187. <a class="helpanchor" name="EDITINGK.HLP__Sft8"><span class="fE ">Shift+8 OR Numpad * - Mod Wildcard</span></a>
  2188. This sets the board's current mod to play whatever played in
  2189. the last-visited board. (i.e. The mod playing on that board
  2190. differs if entering that board from a board using different
  2191. music; it does not stick with the first such mod and play that
  2192. from then on.)
  2193. <a class="helpanchor" name="EDITINGK.HLP__SftAr"><span class="fE ">Shift+Arrow - Goto Linked Board</span></a>
  2194. This goes to the board linked in the given direction, if it
  2195. exists. For example, pressing shift+up would go to the board
  2196. linked to the North exit, provided there is a board linked to
  2197. that exit.
  2198. <a class="helpanchor" name="EDITINGK.HLP__min"><span class="fE ">- - Goto Previous Board</span></a>
  2199. This moves the editor to the previous board in the board list,
  2200. if it exists.
  2201. <a class="helpanchor" name="EDITINGK.HLP__plu"><span class="fE ">+ - Goto Next Board</span></a>
  2202. This moves the editor to the next board in the board list, if
  2203. it exists.
  2204. <a class="helpanchor" name="EDITINGK.HLP__F1"><span class="fE ">F1 - Help</span></a>
  2205. F1 will bring up context-relevant help. You can press F1 at
  2206. almost any time.
  2207. <a class="helpanchor" name="EDITINGK.HLP__F2"><span class="fE ">F2 - Text</span></a>
  2208. F2 will toggle text mode on and off. When text mode is on,
  2209. Enter will go to the next line, and Backspace will delete the
  2210. character under the cursor and move the cursor one position to
  2211. the left. All printable characters will type in as text,
  2212. including pressing the Spacebar.
  2213. <a class="helpanchor" name="EDITINGK.HLP__F3"><span class="fE ">F3 - Terrain</span></a>
  2214. <a class="helpanchor" name="EDITINGK.HLP__F4"><span class="fE ">F4 - Item</span></a>
  2215. <a class="helpanchor" name="EDITINGK.HLP__F5"><span class="fE ">F5 - Creature</span></a>
  2216. <a class="helpanchor" name="EDITINGK.HLP__F6"><span class="fE ">F6 - Puzzle</span></a>
  2217. <a class="helpanchor" name="EDITINGK.HLP__F7"><span class="fE ">F7 - Transport</span></a>
  2218. <a class="helpanchor" name="EDITINGK.HLP__F8"><span class="fE ">F8 - Element</span></a>
  2219. <a class="helpanchor" name="EDITINGK.HLP__F9"><span class="fE ">F9 - Misc. (thing)</span></a>
  2220. <a class="helpanchor" name="EDITINGK.HLP__F10"><span class="fE ">F10 - Objects</span></a>
  2221. The above eight keys will bring up a menu of things to select
  2222. from. Selecting one will ask you to enter settings (if
  2223. appropriate) or choose a character for that thing. Then a copy
  2224. of that thing will be placed at the cursor's location, and will
  2225. also become the current object in the buffer. Scrolls, Signs,
  2226. Sensors, Robots, and Pushable Robots (all in the Objects menu)
  2227. will be discussed in another section. The current thing, color,
  2228. and settings parameter (p##) is shown in the upper-right corner
  2229. of the editor menu. Knowing the settings parameter isn't
  2230. important except for certain Robotic programming situations.
  2231. <a class="helplink" href="#SCROLLSS.HLP__1st">Signs and Scrolls in the Editor</a>
  2232. <a class="helplink" href="#SENSORSW.HLP__094">Sensors - What They Are and How to Use Them</a>
  2233. <a class="helplink" href="#ROBOTSWH.HLP__1st">Robots - What They Are and How to Use Them</a>
  2234. <a class="helplink" href="#ROBOTICT.HLP__1st">Robotic Tutorial</a>
  2235. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  2236. <a class="helpanchor" name="EDITINGK.HLP__F11"><span class="fE ">F11 - Select Screen Mode</span></a>
  2237. Pressing F11 will open a menu, allowing the user to select an
  2238. MZX display mode (normal mode and Super MZX modes 1-3). This
  2239. setting will persist in editor tests until overridden in-game;
  2240. if editor tests are left while in a different SMZX mode, it will
  2241. be reverted to the setting given here upon returning to the
  2242. editor.
  2243. Setting the screen mode is a prerequisite for editing Super MZX
  2244. palettes and character sets.
  2245. <a class="helplink" href="#SMZXMODE.HLP__095">Super MZX Modes</a>
  2246. <a class="helpanchor" name="EDITINGK.HLP__F12"><span class="fE ">F12 - Take Screenshot</span></a>
  2247. Pressing F12 will make a 640x350 screenshot (in PNG format by
  2248. default) in the working directory, using the software renderer.
  2249. The file naming starts from "screen0". This may be disabled by
  2250. changing the allow_screenshots setting in the config file.
  2251. <a class="helpanchor" name="EDITINGK.HLP__AF11"><span class="fE ">Alt+F11 - Robotic Debugger</span></a>
  2252. Alt plus F11 will launch the configuration screen for the
  2253. Robotic Debugger. For more information on the Robotic Debugger,
  2254. go to its relevant section.
  2255. <a class="helplink" href="#DBGMODE.HLP__101">Debug Modes - The Robotic Debugger</a>
  2256. <a class="helpanchor" name="EDITINGK.HLP__ShF1"><span class="fE ">Sh+F1 - Show InvisWalls</span></a>
  2257. <a class="helpanchor" name="EDITINGK.HLP__ShF2"><span class="fE ">Sh+F2 - Show Robots</span></a>
  2258. <a class="helpanchor" name="EDITINGK.HLP__ShF3"><span class="fE ">Sh+F3 - Show Fakes</span></a>
  2259. <a class="helpanchor" name="EDITINGK.HLP__ShF4"><span class="fE ">Sh+F4 - Show Spaces</span></a>
  2260. These four keys will cause the given things onscreen to flash
  2261. (as the exclamation point character, char #33). They are good
  2262. for locating "hidden" or camouflaged Robots, passages, and the
  2263. like.
  2264. <a class="helpanchor" name="EDITINGK.HLP__Ar"><span class="fE ">Arrow - Move</span></a>
  2265. The arrow keys will move the cursor. The edit window will
  2266. scroll when necessary.
  2267. <a class="helpanchor" name="EDITINGK.HLP__AltAr"><span class="fE ">Alt+Arrow - Move 10</span></a>
  2268. Alt plus the arrow keys will move the cursor ten spaces at a
  2269. time, or up to the board's edge if under ten spaces away. These
  2270. also jump numbers by 10 in dialog boxes.
  2271. <a class="helpanchor" name="EDITINGK.HLP__BkSp"><span class="fE ">BackSpace - Delete (Main Layer Only)</span></a>
  2272. <a class="helpanchor" name="EDITINGK.HLP__Del"><span class="fE ">Del - Delete</span></a>
  2273. The Del key will delete everything under the cursor, while
  2274. BackSpace will delete the object on the main layer and move any
  2275. object on the under layer to the main layer. The current thing
  2276. is not affected.
  2277. <a class="helpanchor" name="EDITINGK.HLP__End"><span class="fE ">End - L/R Corner</span></a>
  2278. End will jump the cursor to the lower-right corner of the
  2279. entire board.
  2280. <a class="helpanchor" name="EDITINGK.HLP__En"><span class="fE ">Enter - Modify+Grab [Board Mode]</span></a>
  2281. Enter will modify the settings of the thing under the cursor,
  2282. if applicable, then select that thing as the current thing. It
  2283. is just like pressing Alt+M and then Ins.
  2284. <a class="helpanchor" name="EDITINGK.HLP__Enter2"><span class="fE ">Enter - Character [Overlay Mode]</span></a>
  2285. Enter during Overlay editing mode will change the current
  2286. character. Select it from a menu and then press Enter to
  2287. confirm your choice.
  2288. <a class="helpanchor" name="EDITINGK.HLP__ESC"><span class="fE ">ESC - Exit/Cancel Mode</span></a>
  2289. ESC will exit the editor, asking for confirmation if your world
  2290. has not been saved. If you are in block, overlay, text, or
  2291. draw mode, ESC will instead cancel the current mode and return
  2292. to normal editing.
  2293. <a class="helpanchor" name="EDITINGK.HLP__Home"><span class="fE ">Home - U/L Corner</span></a>
  2294. Home will jump the cursor to the upper-left corner of the
  2295. entire board.
  2296. <a class="helpanchor" name="EDITINGK.HLP__Ins"><span class="fE ">Ins - Grab</span></a>
  2297. Ins will select the thing under the cursor as the current
  2298. thing. The thing under the cursor is not affected.
  2299. <a class="helpanchor" name="EDITINGK.HLP__Sp"><span class="fE ">Spacebar - Place</span></a>
  2300. Spacebar will copy the current thing to the location under the
  2301. cursor. Trying to place something over a similar thing will
  2302. instead replace the object under the cursor by default. (Robots
  2303. and Pushable Robots are the exception; they will never be
  2304. replaced.) Placing something over a floor type will actually
  2305. place it OVER the floor, not replace the floor. Other things
  2306. will be deleted if they are in the way.
  2307. Spacebar can also replace similar objects under the cursor with
  2308. a space; this can be set in the configuration file.
  2309. <a class="helplink" href="#CONFGINI.HLP__1st">The Config File</a>
  2310. <a class="helpanchor" name="EDITINGK.HLP__Tab"><span class="fE ">Tab - Draw</span></a>
  2311. Tab will toggle the current draw mode. When drawing is on, you
  2312. will place a copy of the current object in the buffer every
  2313. time you move the cursor.
  2314. <a class="helpanchor" name="EDITINGK.HLP__PgDn"><span class="fE ">PageDown - Next Menu</span></a>
  2315. <a class="helpanchor" name="EDITINGK.HLP__PgUp"><span class="fE ">PageUp - Previous Menu</span></a>
  2316. These two keys will cycle through the pages of the editor menu.
  2317. The menu bar can wrap around. You do not have to be viewing the
  2318. page listing a specific option before you can use that option -
  2319. the menus are purely for reference.
  2320. These keys also jump numbers by 100 in dialog boxes.
  2321. <a class="helplink" href="#THEWORLD.HLP__1st">The World Editor</a>
  2322. <a class="helplink" href="#GENERALE.HLP__1st">General Editing Tips</a>
  2323. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  2324. <hr /></div>
  2325. <div class="helpfile" id="CHAREDIT.HLP">
  2326. <a class="helpanchor" name="CHAREDIT.HLP__079"> </a>
  2327. <p class="helpcentered"><span class="f9 ">The Character Editor</span></p>
  2328. The character editor is an important part of MegaZeux. With
  2329. it, you can change the appearance of the character set. For
  2330. example, one can make bricks, rockets, stones, and demons;
  2331. using multiple characters, one can make much grander things.
  2332. The default pixel resolution is fair - 8x14 per character for a
  2333. total of 640x350 for the entire screen. Other modes (known as
  2334. Super MZX modes) increase colors at a cost of effectively
  2335. halving horizontal resolution, but the intricacies of character
  2336. editing in those modes are best covered in that mode's section.
  2337. To use the character editor, press Alt+C in the editor. You
  2338. will be shown a zoomed version of the current character, a list
  2339. of keyboard shortcuts, and a row of characters.
  2340. The current character(s) being edited are displayed on the left
  2341. edge of the character bar, and also highlighted and shown in
  2342. relative position in the middle of the bar. To edit the
  2343. character(s), move the cursor with the keys and use Spacebar to
  2344. toggle pixels on and off (or left-click and right-click,
  2345. respectively). Use + and - to move one character (or character
  2346. block) up or down through the character set.
  2347. Use Enter to select the current character (or block) from the
  2348. entire set. When selecting from the entire set, one can move by
  2349. one character using the arrows, or by one block using the -/+
  2350. keys.
  2351. Use Del to clear the character. Use N to make a "negative", or
  2352. inverse, of the character, turning all on pixels off and all
  2353. off pixels on. Use Alt with the arrow keys to shift the entire
  2354. character to one direction. Pixels shifted off of one edge
  2355. wrap around to the other edge.
  2356. Use M to mirror the character, flipping it left to right. Use
  2357. F to flip the character top to bottom.
  2358. Hold Shift to select multiple pixels at a time. The selection
  2359. box will vanish once Shift is released. Alt+B will also create
  2360. a similar selection box, but will not vanish until the Escape
  2361. key is pressed.
  2362. F2 will copy the current character to an internal buffer, while
  2363. F3 will paste the buffer contents to the current character
  2364. space. The buffer can contain a selection of pixels instead of a
  2365. character by pressing F2 when selecting a group of pixels. When
  2366. copying a single character and pasting to another single
  2367. character, the new content simply replaces the old; in other
  2368. circumstances, the new content is placed starting with the
  2369. cursor position as its upper-left corner with no wraparound. The
  2370. buffer is retained between uses of the character editor.
  2371. Ctrl+Z will undo actions done in the editor (up to the limit
  2372. defined in the config file). Keep in mind that the current
  2373. frame is counted in the amount of undo actions.
  2374. Ctrl+Y will redo any undone actions.
  2375. C will allow selection of colors used in the char editor. This
  2376. can be helpful in crafting characters for a specific palette.
  2377. Use Alt+C to switch colors back to the default.
  2378. Alt+F will flood fill any highlighted area.
  2379. Tab will toggle mode (set) on and off. (set) mode will turn all
  2380. pixels crossed to ON.
  2381. Shift+Tab will turn toggle (clear) mode. (clear) mode will turn
  2382. all pixels crossed OFF.
  2383. F4 will revert the current character to its EGA ASCII (code page
  2384. 437) appearance; F5 will revert the current character to its
  2385. default MZX appearance.
  2386. Multiple characters can be edited at one time. To select a
  2387. group of characters, press Enter in the character editor, hold
  2388. Shift on the upper-left corner of your desired block of
  2389. characters to edit, and finally highlight your block of
  2390. characters, release Shift, and press Enter. If more than one
  2391. viable character space can be made from the selected characters,
  2392. the user can choose the desired space size (e.g. six characters
  2393. can be a 3x2, a 2x3 or a 6x1 space). The largest character space
  2394. one can use for editing is 18 characters large (6x3, the max
  2395. allowed sizes for the respective dimensions).
  2396. The extra character sets accessible by unbound sprites can also
  2397. be edited in the character editor. Press PgUp and PgDown to
  2398. switch character sets, either on the main character edit screen
  2399. or on the character selection menu.
  2400. Alt+I will import character sets while in the character editor;
  2401. Alt+X will export. This can be done with one full set or series
  2402. of partials. For a full set, simply select the desired set and
  2403. click OK. For saving a series of partials, insert a hash sign
  2404. in the set name then choose the Offset (starting character).
  2405. Then choose the First number of the series (e.g. char#.chr with
  2406. a First value of 5 would start from char5.chr). Then choose the
  2407. Count value to indicate how many sets will be saved. Loading is
  2408. simpler; simply choose the starting character set, the Offset
  2409. value and the Count value. If multiple characters are being
  2410. worked on at once, importing and exporting partials can be set
  2411. to tile (which will base export and import positions on the
  2412. current character grouping) or linear (which will be based on
  2413. sequential places in the char set).
  2414. The character editor is a key element in creating decent games
  2415. with MegaZeux. If you can't seem to draw well with it, that's
  2416. okay, since it has some limitations. You can keep practicing
  2417. at it, or you can get an MZXer friend to draw characters for
  2418. you.
  2419. The character editor changes somewhat in Super MZX modes - go
  2420. to the Super MZX Modes section for more information on this.
  2421. <a class="helplink" href="#SMZXMODE.HLP__095">Super MZX Modes</a>
  2422. <a class="helplink" href="#EDITINGK.HLP__080">Editing Keys and Options Reference</a>
  2423. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  2424. <hr /></div>
  2425. <div class="helpfile" id="PALEEDIT.HLP">
  2426. <a class="helpanchor" name="PALEEDIT.HLP__093"> </a>
  2427. <p class="helpcentered"><span class="f9 ">The Palette Editor</span></p>
  2428. MegaZeux is not limited to the colors it sets as default. The
  2429. built-in palette editor can modify colors, which is very helpful
  2430. in designing a game. It allows you to change the appearance of
  2431. the currently-available colors, and is more user-friendly than
  2432. having to change values through code. MegaZeux worlds can only
  2433. have one active palette at a time, but can load different
  2434. palettes as frequently as desired, so MegaZeux designers can
  2435. create different palettes that fit different parts of their
  2436. game.
  2437. To use the palette editor, press Alt+E while in the MegaZeux
  2438. editor. The palette editing screen will appear. The current
  2439. palette will be shown to the left, with the current color
  2440. marked. By default, the RGB values of the current color and the
  2441. current color creation mode are shown to the right of the
  2442. visible palette, and the menu is shown below.
  2443. Some color theory is in order. Computer monitors display colors
  2444. by projecting various amounts of Red, Green, and Blue light.
  2445. Combined, these three colors can produce almost any shade and
  2446. hue of color. This is one way colors are represented in MegaZeux
  2447. as well. In the RGB color model (the default), each color has a
  2448. Red, Green, and Blue value, each ranging from 0 to 63. 0 is
  2449. "off" while 63 is "full intensity".
  2450. To make colors other than red, green, and blue, you must mix
  2451. them. Purple is red plus blue, cyan is green plus blue, and
  2452. yellow is red plus green. (Really.) Whites and grays are made
  2453. from equal amounts of all three. For example, Red at 42, Blue at
  2454. 42 and Green at 0 would be a deep purple, and all as 20 would be
  2455. a dark gray. Orange is made with full red, green set to 31 and
  2456. blue zeroed out. To brighten a color, raise all the numbers, or
  2457. lower them to darken it.
  2458. For the RGB color model, use the arrow keys to select the
  2459. current color. R, G, B, and A will respectively increase Red,
  2460. Green, Blue, and All, while Alt+R, Alt+G,Alt+B and Alt+A will
  2461. respectively decrease the values.
  2462. Several functions are consistent across all color models. Alt+D
  2463. will reset the palette to its default colors (you will NOT be
  2464. asked for confirmation). 0 will blacken the current color. Alt+H
  2465. will toggle the shortcut display. The PgUp and PgDn keys select
  2466. the current color model. Finally, F2 will store the current
  2467. color to an internal buffer, while F3 will paste the buffered
  2468. color to the current color.
  2469. In addition to the keyboard shortcuts listed in the below menu,
  2470. users can click colors in the palette to select them. Users can
  2471. also use the mouse to change color values by clicking on the
  2472. relevant areas, and hold down the mouse button to act as a
  2473. slider. Color values can also be clicked on and then typed in
  2474. directly.
  2475. If one is more familiar with other color models, MegaZeux can
  2476. create colors with two alternate models: HSL and CIELAB.
  2477. HSL creates colors by setting hue (base color), saturation
  2478. (color strength) and lightness (brightness relative to white).
  2479. Hue can take values of 0-360; saturation and lightness take
  2480. values of 0-100. The keyboard shortcuts in this mode are C, S
  2481. and V for increasing Hue, Saturation, and Luminance,
  2482. respectively, while alt key combinations of these keys reduce
  2483. these values.
  2484. CIELAB creates colors through a combination of lightness (L*)
  2485. and color values represented by the opponent pair colors of
  2486. red-green (a*) and yellow-blue (b*). L* values range from 0-100,
  2487. and opponent color values can range from -128 (fully one color
  2488. of the pair) to +128 (fully the other color). The keyboard
  2489. shortcuts in this mode are V, A and B for increasing L*, a* and
  2490. b*, respectively, while alt key combinations of these keys
  2491. reduce these values.
  2492. <p class="helpcentered"><span class="f9 ">The Palette Editor in Super MZX Modes</span></p>
  2493. Super MZX Modes allow 256 colors at once, and have their own
  2494. quirks; therefore, the palette editor changes considerably to
  2495. accommodate them. The palette editor for each SMZX mode is noted
  2496. below.
  2497. <p class="helpcentered">Super MZX Mode 1 Palette Editor</p>
  2498. Super MZX Mode 1 does not require any changes, since it merely
  2499. interpolates colors. Therefore, palette editing in this mode
  2500. acts the exact same as it does in normal MZX mode.
  2501. <p class="helpcentered">Super MZX Mode 2 Palette Editor</p>
  2502. Super MZX Mode 2's color selection is shown as a 16x16 set of
  2503. colors. Each color also represents the four-color palette (also
  2504. known as a subpalette) used when an item is assigned that color.
  2505. The palette number, as well as its hex number and the four
  2506. colors that comprise it, are shown in the upper-left corner. By
  2507. default, the color selector shows the current color/palette
  2508. highlighted by a white box, with red boxes showing the other
  2509. colors of the palette.
  2510. The base values of the current color and the current color
  2511. creation mode are shown in the upper-right, and the help menu
  2512. is shown below.
  2513. On top of the functions allowed in the normal palette editor,
  2514. SMZX Mode 2 adds this hotkey:
  2515. <span class="fE ">Spacebar / Middle Click</span><span class="fF ">: Toggle Subpalette Index Cursors.</span>
  2516. Turns the display of the red boxes highlighting the other
  2517. component colors of the given palette on or off.
  2518. <p class="helpcentered">Super MZX Mode 3 Palette Editor</p>
  2519. Super MZX Mode 3's color selection is shown as a 16x16 set of
  2520. colors. The palette number, as well as its hex number and the
  2521. four colors that comprise it, are shown in the upper-left
  2522. corner.
  2523. The base values of the current color and the current color
  2524. creation mode are shown in the upper-right, and the help menu
  2525. is shown below.
  2526. In this mode, the highlighted color only corresponds to a color,
  2527. NOT to a subpalette; therefore, one can be editing a different
  2528. color and subpalette at the same time, and changing highlighted
  2529. color will NOT change the current subpalette.
  2530. To change the current subpalette, press Space or click the
  2531. middle mouse button, and then choose the subpallete to edit.
  2532. Each color can be assigned to a color slot in the current
  2533. subpalette; to place a color in a subpalette slot, press 1-4 to
  2534. put the current color in the corresponding slot (for example,
  2535. pressing 2 while on color #120 would make the second color of
  2536. the current subpalette color #120).
  2537. With the exception of hiding the help, all functions available
  2538. to the palette editor in normal MZX mode are available in the
  2539. SMZX mode 3 editor.
  2540. <a class="helplink" href="#EDITINGK.HLP__080">Editing Keys and Options Reference</a>
  2541. <a class="helplink" href="#SMZXMODE.HLP__095">Super MZX Modes</a>
  2542. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  2543. <hr /></div>
  2544. <div class="helpfile" id="GLOBALIN.HLP">
  2545. <a class="helpanchor" name="GLOBALIN.HLP__086"> </a>
  2546. <p class="helpcentered"><span class="f9 ">Global Info Options</span></p>
  2547. To edit the Global Info options, press G within the editor.
  2548. Here you can edit options that affect the entire world. The
  2549. first dialog you see has the following options:
  2550. <p class="helpcentered">First Board</p>
  2551. Here is where you select which board will be the starting board
  2552. for the game. The player will start on this board. This
  2553. defaults to the second board in the list, or to the title screen
  2554. if a second board was not made when creating a new world.
  2555. <p class="helpcentered">Edging Color</p>
  2556. This is the color of the area outside of the viewport. It
  2557. defaults to dark gray on black (c08).
  2558. <p class="helpcentered">Starting/Maximum Lives</p>
  2559. This is where you set the number of lives the player starts
  2560. with, and how many lives the player can have at any one time.
  2561. <p class="helpcentered">Starting/Maximum Health</p>
  2562. Same as above, but for health points.
  2563. <p class="helpcentered">Enemies' Bullets Hurt Other Enemies</p>
  2564. If this is on, then bullets shot by enemies, such as tigers,
  2565. will destroy other enemies that they hit. It basically turns
  2566. all Enemy bullets fired into Neutral bullets (including ones
  2567. shot by Robots).
  2568. <p class="helpcentered">Clear Messages and Projectiles on Exit</p>
  2569. If this is on, the current message and all projectiles (stars,
  2570. bullets, missiles, shooting fire) are cleared whenever the
  2571. player leaves the screen.
  2572. <p class="helpcentered">Can Only Play World from a 'SWAP WORLD'</p>
  2573. If this is on, then the current world is unplayable in a normal
  2574. fashion. The only way to play it is to swap to it from another
  2575. world, using the Robotic command SWAP WORLD.
  2576. <p class="helpcentered">More</p>
  2577. This button leads to another screen of settings.
  2578. <p class="helpcentered">Edit Chars</p>
  2579. <a class="helpanchor" name="GLOBALIN.HLP__089">This button leads to a series of dialogs where you can edit the</a>
  2580. characters and colors used to represent various internal things.
  2581. <p class="helpcentered">Edit Dmg</p>
  2582. <a class="helpanchor" name="GLOBALIN.HLP__090">This button leads to a dialog where you can edit the amount of</a>
  2583. damage done by various internal things. Valid numbers range from
  2584. 0 to 255.
  2585. <p class="helpcentered">Edit Global Robot</p>
  2586. This button allows you to edit the global Robot, which is a
  2587. very special Robot that is present at all times, although it is
  2588. not physically on every board. It is a very important part of
  2589. MegaZeux. See the section on The Global for more information.
  2590. <a class="helplink" href="#THEGLOBL.HLP__gbl">The Global</a>
  2591. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  2592. <a class="helpanchor" name="GLOBALIN.HLP__088">The More page of settings for global info has the following</a>
  2593. options:
  2594. <p class="helpcentered">Death Board/Death X/Death Y/Mode</p>
  2595. This tells MegaZeux what happens when the player dies. If the
  2596. mode is Same Position, then the player will simply lose a life.
  2597. If it is Restart Board, then the player will also teleport to
  2598. the location on the board where the player entered. If it is
  2599. Teleport, the player will instead teleport to the board and
  2600. x,y coordinates stated in the above three settings.
  2601. <p class="helpcentered">Endgame Board/Endgame X/Endgame Y/Mode</p>
  2602. This tells MegaZeux what happens when the player runs out of
  2603. lives. If the mode is Game Over, then the game will simply end.
  2604. If it is Teleport, the player will be given one life and one
  2605. health, and then will be teleported to the board and x,y
  2606. coordinates stated in the above three settings. This will
  2607. continue to happen every time the player runs out of lives or
  2608. when a Robot calls the ENDGAME command.
  2609. <p class="helpcentered">Play Game Over SFX</p>
  2610. If this option is on, the game over sound effect will be looped
  2611. when the game has ended and the Game Over message will flash
  2612. along the bottom of the screen. The Game Over SFX will not play
  2613. when the endgame teleport option is chosen.
  2614. <p class="helpcentered">Previous</p>
  2615. This will go to the previous global settings dialog.
  2616. The character editing dialogs (eight pages in total) are screens
  2617. of characters and colors used to represent internal things.
  2618. Select one to change the color or character used. Use Next and
  2619. Previous to move between the screens, and Done when you are
  2620. finished. Lit Bomb Anim 1 is special; setting it will set the
  2621. other 6 frames of Lit Bomb Animation to the succeeding
  2622. characters.
  2623. The damage editing dialog allows you to change the amount of
  2624. damage dealt by various things within the game. Select one and
  2625. use the usual dialog keys to change the values, which can range
  2626. from 0 to 255. 0 will leave the player invincible versus that
  2627. thing.
  2628. Editing the global Robot is covered in the Robot tutorials, as
  2629. it is (mostly) the same as editing any other Robot. The actual
  2630. use of a global Robot is covered in its own section.
  2631. <a class="helplink" href="#THEGLOBL.HLP__gbl">The Global</a>
  2632. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  2633. <a class="helplink" href="#EDITINGK.HLP__080">Editing Keys and Options Reference</a>
  2634. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  2635. <hr /></div>
  2636. <div class="helpfile" id="BOARDINF.HLP">
  2637. <a class="helpanchor" name="BOARDINF.HLP__085"> </a>
  2638. <p class="helpcentered"><span class="f9 ">Board Info Options</span></p>
  2639. To edit Board options, press I within the editor. This will
  2640. bring up a dialog where you can edit options pertaining to the
  2641. current board. The options are as follows:
  2642. <p class="helpcentered">Board Name</p>
  2643. This is the name of the board. It is mainly for internal
  2644. reference; however, the name of the first board (the title
  2645. screen) is also used to represent the entire world on a file
  2646. listing, and its value can be accessed through the BOARD_NAME
  2647. string counter in Robotic. The special color codes ~ and @
  2648. can apply here, allowing colored text in board names.
  2649. <p class="helpcentered">Can Shoot/Bomb</p>
  2650. These options determine whether or not the player can shoot or
  2651. bomb normally. If off, then the player cannot perform the
  2652. noted action. (Other ways of doing these actions in Robotic may
  2653. replace the default ways of shooting/bombing and are unimpeded
  2654. by this setting.)
  2655. <p class="helpcentered">Fire Burns Space/Fakes/Trees/Brown</p>
  2656. These options determine what fire will and will not burn
  2657. through. Space is empty space, NOT floors; Fakes include fakes,
  2658. floors, carpets, and tiles. Trees is self-explanatory. Brown is
  2659. anything other than the player or a Robot/sign/Scroll that is
  2660. colored brown (that is, anything with a color of cX6).
  2661. <p class="helpcentered">Forest to Floor</p>
  2662. If on, when the player moves through forest, it will become
  2663. Floor. If off, the forest will simply be replaced by a space.
  2664. <p class="helpcentered">Collect Bombs</p>
  2665. If on, the player will collect bombs normally. If off, bombs
  2666. will be instantly lit when touched instead.
  2667. <p class="helpcentered">Fire Burns Forever</p>
  2668. If on, fire will never burn out. If off, fire will eventually
  2669. turn into ash, which is actually a dark gray (c08) Floor. Of
  2670. course, if fire is set to burn fakes, the ash will probably
  2671. re-light immediately.
  2672. <p class="helpcentered">Restart if Hurt</p>
  2673. When on, the player will be teleported to the place on the
  2674. current board that it originally entered every time health is
  2675. lost.
  2676. <p class="helpcentered">Reset Board on Entry</p>When on, every time the board is entered, it will reset the
  2677. board, acting as if the player is entering the board for the
  2678. first time.
  2679. <p class="helpcentered">Player Locked N/S</p>
  2680. When on, the player cannot directly move north or south until
  2681. unlocked with the UNLOCKPLAYER command. (Other ways of moving
  2682. the player in those directions, such as Robotic or the player
  2683. being pushed, are unimpeded by this setting.)
  2684. <p class="helpcentered">Player Locked E/W</p>
  2685. When on, the player cannot directly move east or west until
  2686. unlocked with the UNLOCKPLAYER command. (Other ways of moving
  2687. the player in those directions, such as Robotic or the player
  2688. being pushed, are unimpeded by this setting.)
  2689. <p class="helpcentered">Player Attack Locked</p>
  2690. When on, the player cannot shoot bullets or lay bombs until
  2691. unlocked with the UNLOCKPLAYER command. (Other ways of doing
  2692. these actions, in Robotic, are unimpeded by this setting.)
  2693. <p class="helpcentered">Time Limit</p>
  2694. If greater than zero, the player has the noted amount of time
  2695. to complete the board. The current time is shown in the lower
  2696. left corner during gameplay. If time runs out, the player loses
  2697. ten health and the time limit is reset. This option is most
  2698. useful with the "Restart if Hurt" option. The time is in units
  2699. considerably faster than seconds; test the board to get a feel
  2700. for the amount of time needed. The current time is reset if the
  2701. player exits and re-enters the board.
  2702. <p class="helpcentered">Explosions to Space/Ash/Fire</p>
  2703. This determines what explosions will leave in their wake: Empty
  2704. space, ash (dark gray floors - in other words, floors colored
  2705. c08), or burning fire.
  2706. <p class="helpcentered">Can Save/Can't Save/Can Save on Sensors</p>
  2707. This determines when the player can save his game. The first
  2708. two options are self-explanatory. Can save on Sensors allows
  2709. the player to only save if it is standing directly over a
  2710. Sensor. Sensors are explained in another section. This only
  2711. prevents or limits saving using the built-in save functions;
  2712. saving done with Robotic is unaffected.
  2713. <a class="helplink" href="#SENSORSW.HLP__094">Sensors - What They Are and How to Use Them</a>
  2714. <p class="helpcentered">No/Normal/Static/Transparent Overlay</p>
  2715. This sets the type of overlay for the current board. No Overlay
  2716. means just that - overlay mode is completely off. Normal
  2717. Overlay is an overlay that scrolls with the board. Static
  2718. Overlay is an overlay that remains in a fixed position even when
  2719. the board scrolls. A Transparent Overlay is similar to no
  2720. overlay in that none is shown, but it allows you to edit it so
  2721. that it may appear later. Overlays are discussed in full in
  2722. another section.
  2723. <a class="helplink" href="#TOVERLAY.HLP__081">Editing and Using the Overlay</a>
  2724. <p class="helpcentered">Load Charset on Entry</p>This can be set to load a specific charset every time the board
  2725. is entered, or set to do nothing.
  2726. <p class="helpcentered">Load Palette on Entry</p>This can be set to load a specific palette every time the board
  2727. is entered, or set to do nothing.
  2728. One can set the current board's settings as the default
  2729. settings for all new boards made for this world file. Select
  2730. the "Set as defaults" button at the bottom and click or press
  2731. Space/Enter. This will save a .cnf file for the current world.
  2732. There will be no confirmation. Since the .cnf is named after the
  2733. current world, the current world must have been saved first.
  2734. <a class="helplink" href="#EDITINGK.HLP__080">Editing Keys and Options Reference</a>
  2735. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  2736. <hr /></div>
  2737. <div class="helpfile" id="SOUNDEFX.HLP">
  2738. <a class="helpanchor" name="SOUNDEFX.HLP__1st"> </a>
  2739. <p class="helpcentered"><span class="f9 ">MegaZeux's Sound System</span></p>
  2740. MegaZeux has two types of sound: Digitized sound, played
  2741. through a sound card, and sound effects, which are emulated PC
  2742. Speaker effects.
  2743. MegaZeux's many sound options can be accessed through the
  2744. config.txt file. Please see this section for details.
  2745. <a class="helplink" href="#CONFGINI.HLP__1st">The Config File</a>
  2746. <p class="helpcentered">Music Files</p>
  2747. Music files, referred to as MODULES, can be any one of the
  2748. following formats:
  2749. * OGG
  2750. * MOD (or NST/WOW/OCT)
  2751. * S3M
  2752. * XM
  2753. * IT
  2754. * GDM
  2755. * WAV
  2756. * Other formats {STM, MTM, 669, ULT, FAR, MED, DSM, OKT, AMF}
  2757. * Several other formats are in ModPlug or XMP, but are not
  2758. supported in MZX.
  2759. The default module engine is XMP. It is still possible to build
  2760. using ModPlug, and possible to build using MikMod to support
  2761. platforms that cannot handle anything else. OGGs and WAVs are
  2762. handled outside of the module engines, while GDMs load natively
  2763. in XMP/MikMod, but not in ModPlug. When a GDM is loaded with
  2764. ModPlug as the music engine, it is converted to an S3M file. The
  2765. S3M file is then loaded in all future incidences.
  2766. Formats common to all engines are MOD, S3M, XM, IT, STM, MTM,
  2767. 669, ULT, FAR, MED, DSM, OKT and AMF. All other formats
  2768. (excluding WAV/OGG/SAM/GDM) are locked out of MZX by default.
  2769. MED support is the most inconsistent between module engines,
  2770. due to its multiple subversions and the engines' varying
  2771. accuracy on dealing with them, so use of this format is not
  2772. generally advised.
  2773. MZX supports loop markers for WAVE and OGG files. WAVE formats
  2774. with the "smpl" marker will be recognized, and forward loop
  2775. only; OGG loops are supported with the LOOPSTART and LOOPLENGTH
  2776. tags.
  2777. <p class="helpcentered">Using Sound and Music in Your Own Games</p>
  2778. There are three ways to utilize sound and music in your own
  2779. games:
  2780. 1- Select the default modules for each board (or mod *).
  2781. 2- Edit the built-in speaker sfx tables.
  2782. 3- Use Robots to play modules, SAMs/WAVs/OGGs, and speaker
  2783. sfx.
  2784. <p class="helpcentered">Selecting Default Modules for Each Board</p>
  2785. This is perhaps the easiest method to get music in your games.
  2786. Simply make sure that the proper module files are in the
  2787. current directory, or in a subdirectory of the current
  2788. directory, and use Alt+N to select music for a board. Press
  2789. Alt+N to turn it back off again. To set it to play the same
  2790. music as the last board (mod *), press Shift+8 or the numpad's
  2791. asterisk key.
  2792. <a class="helplink" href="#EDITINGK.HLP__AltN">Details on Alt+N</a>
  2793. <p class="helpcentered">Editing the Built-in Speaker SFX</p>
  2794. To edit the built-in speaker sound effect tables, use Alt+F.
  2795. The format for them is discussed later in this section.
  2796. <a class="helplink" href="#EDITINGK.HLP__097">Details on Alt+F</a>
  2797. <p class="helpcentered">Using Robots</p>
  2798. Robotic has a large number of commands for playing modules,
  2799. SAMs/WAVs/OGGs, and speaker sfx. A knowledge of Robotic basics
  2800. is required, so see the following sections to learn about
  2801. Robots.
  2802. <a class="helplink" href="#ROBOTSWH.HLP__1st">Robots - What They Are and How to Use Them</a>
  2803. <a class="helplink" href="#ROBOTICT.HLP__1st">Robotic Tutorial</a>
  2804. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  2805. The following sections discuss individual commands relating to
  2806. sound and music.
  2807. <a class="helplink" href="#COMMAND2.HLP___c6"><span class="fA ">CHANGE SFX # "string"</span></a>
  2808. <a class="helplink" href="#COMMANDR.HLP___e2"><span class="fA ">END MOD</span></a>
  2809. <a class="helplink" href="#COMMANDR.HLP___e4"><span class="fA ">END SAM</span></a>
  2810. <a class="helplink" href="#COMMANDR.HLP___e3"><span class="fA ">END PLAY</span></a>
  2811. <a class="helplink" href="#COMMAND2.HLP___j1"><span class="fA ">JUMP MOD ORDER #</span></a>
  2812. <a class="helplink" href="#COMMANDR.HLP___m3"><span class="fA ">MOD "file"</span></a>
  2813. <a class="helplink" href="#COMMAND2.HLP___m5"><span class="fA ">MOD FADE IN "file"</span></a>
  2814. <a class="helplink" href="#COMMAND2.HLP___m6"><span class="fA ">MOD FADE OUT</span></a>
  2815. <a class="helplink" href="#COMMAND2.HLP___m4"><span class="fA ">MOD FADE # #</span></a>
  2816. <a class="helplink" href="#COMMAND2.HLP___m7"><span class="fA ">MOD SAM # #</span></a>
  2817. <a class="helplink" href="#COMMANDR.HLP___p2"><span class="fA ">PLAY "string"</span></a>
  2818. <a class="helplink" href="#COMMANDR.HLP___p3"><span class="fA ">PLAY SFX "string"</span></a>
  2819. <a class="helplink" href="#COMMANDR.HLP___s1"><span class="fA ">SAM # "file"</span></a>
  2820. <a class="helplink" href="#COMMANDR.HLP___sO"><span class="fA ">SFX #</span></a>
  2821. <a class="helplink" href="#COMMAND2.HLP___v3"><span class="fA ">VOLUME #</span></a>
  2822. <a class="helplink" href="#COMMAND2.HLP___w2"><span class="fA ">WAIT MOD FADE</span></a>
  2823. <a class="helplink" href="#COMMAND2.HLP___w3"><span class="fA ">WAIT PLAY</span></a>
  2824. <a class="helplink" href="#COMMANDR.HLP___w4"><span class="fA ">WAIT PLAY "string"</span></a>
  2825. <p class="helpcentered">SAM Files in the Port</p>
  2826. SAM files, formerly the only format for playing sounds in MZX,
  2827. are directly supported. However, using OGGs or WAVs as the
  2828. original source, if possible, is preferred as SAMs are low
  2829. quality (~8KHz mono) compared to typical WAV and OGG quality
  2830. settings. SAM support is mostly kept in for supporting older
  2831. games, not for usage in designing games.
  2832. <p class="helpcentered">Format for Sound Effects</p>
  2833. The sound effects editor and Robotic PLAY commands all use the
  2834. same format for playing sound effects. The format consists of
  2835. a single string of characters, each character representing one
  2836. note or command. Spaces are ignored, and capitalization is not
  2837. important. Some knowledge of music is required to use the
  2838. format effectively. The commands are:
  2839. <span class="fA "> A B C D E F G</span>
  2840. Plays the note stated, at the current octave and duration.
  2841. The scale starts at C and continues DEFGAB before going up
  2842. an octave. Use # and $ for sharps and flats, placing them
  2843. after the note.
  2844. <span class="fA "> # $</span>
  2845. Sharps (#) or flats ($) the previous note. This does not
  2846. affect any note other than the note directly before the sharp
  2847. or flat. Constructs such as B# are allowed.
  2848. <span class="fA "> 0 1 2 3 4 5 6</span>
  2849. Sets the current octave. Octave 4 starts at middle C. The
  2850. lower the number, the lower the notes.
  2851. <span class="fA "> + -</span>
  2852. Raises or lowers the current octave by 1, but only if
  2853. possible. You cannot go below octave 0 or above octave 6.
  2854. <span class="fA "> X</span>
  2855. Plays a rest of the current duration. A rest is a period of
  2856. silence.
  2857. <span class="fA "> Z T S I Q H W</span>
  2858. These letters change the current duration of notes and rests,
  2859. I.E. the length of time each subsequent note is played. Each
  2860. one is twice as long as the previous one, with Z being the
  2861. fastest and W the slowest. Duration defaults to T. The
  2862. counterparts to the durations follow:
  2863. Z = sixty-fourth note
  2864. T = <span class="fA ">T</span><span class="fF ">hirty-second note</span>
  2865. S = <span class="fA ">S</span><span class="fF ">ixteenth note</span>
  2866. I = e<span class="fA ">I</span><span class="fF ">ghth note</span>
  2867. Q = <span class="fA ">Q</span><span class="fF ">uarter note</span>
  2868. H = <span class="fA ">H</span><span class="fF ">alf note</span>
  2869. W = <span class="fA ">W</span><span class="fF ">hole note</span>
  2870. Duration (and octave) does not carry over from one string to
  2871. the next.
  2872. <span class="fA "> .</span>
  2873. A dot will change the current duration to 150% that of usual.
  2874. This is a permanent duration change and will only affect
  2875. subsequent notes. Its use is similar to that of a dot in
  2876. regular music, except that this dot affects multiple notes.
  2877. <span class="fA "> !</span>
  2878. An exclamation point will change the current duration to 33%
  2879. that of usual. This is a permanent duration change and will
  2880. only affect subsequent notes. Its use is similar to that of
  2881. triplets in regular music, except it affects ALL subsequent
  2882. notes.
  2883. <span class="fA "> &</span>
  2884. & is a very special command. It is used to play SAM/WAV/OGG
  2885. files (digitized sounds) within an sfx string. It allows
  2886. digitized sounds within the sound effects editor. The general
  2887. format for & is as follows:
  2888. <p class="helpcentered">"&FILENAME.WAV&4C"</p>
  2889. This will play middle C using FILENAME.WAV. Duration is
  2890. irrelevant. If nothing follows the last &, the effect will
  2891. play at natural frequency. Multiple filenames can be used in
  2892. the same PLAY command, but only the last one can have nothing
  2893. following its last &.
  2894. <span class="fA "> _</span>
  2895. An underscore is usually used in conjunction with &. It
  2896. turns off digitized sounds for the rest of the string, and
  2897. ignores the rest of the string ONLY IF digitized music/sound
  2898. is on. For example:
  2899. <p class="helpcentered">"&SHOT.WAV&6F#_+C-C"</p>
  2900. The above will play SHOT.WAV at 4.8KHz (F-sharp, 6th octave)
  2901. if digitized sound is on, OTHERWISE it will play the normal
  2902. shooting sound of "+C-C".
  2903. <p class="helpcentered">Sound Effect Numbers</p>
  2904. The PLAY SFX command in Robotic plays one of the built-in sound
  2905. effects. The numerical values corresponding to these sound
  2906. effects are listed below.
  2907. 0 - Gem
  2908. 1 - Magic Gem
  2909. 2 - Health
  2910. 3 - Ammo
  2911. 4 - Coin
  2912. 5 - Life
  2913. 6 - Lo Bomb
  2914. 7 - Hi Bomb
  2915. 8 - Key
  2916. 9 - Full Keys
  2917. 10 - Unlock
  2918. 11 - Can't Unlock
  2919. 12 - Invis. Wall
  2920. 13 - Forest
  2921. 14 - Gate Locked
  2922. 15 - Open Gate
  2923. 16 - Invinco Start
  2924. 17 - Invinco Beat
  2925. 18 - Invinco End
  2926. 19 - Door Locked
  2927. 20 - Open Door
  2928. 21 - Hurt
  2929. 22 - Hurt (Lava)
  2930. 23 - Death
  2931. 24 - Game Over
  2932. 25 - Gate Closing
  2933. 26 - Push
  2934. 27 - Transport
  2935. 28 - Shoot
  2936. 29 - Break
  2937. 30 - Out of Ammo
  2938. 31 - Ricochet
  2939. 32 - Out of Bombs
  2940. 33 - Place Bomb (Lo)
  2941. 34 - Place Bomb (Hi)
  2942. 35 - Switch Bomb Type
  2943. 36 - Explosion
  2944. 37 - Entrance
  2945. 38 - Pouch
  2946. 39 - Ring/Potion
  2947. 40 - Empty Chest
  2948. 41 - Chest
  2949. 42 - Out of Time
  2950. 43 - Fire Ouch
  2951. 44 - Stolen Gem
  2952. 45 - Enemy HP Down
  2953. 46 - Dragon Fire
  2954. 47 - Scroll/Sign
  2955. 48 - Goop
  2956. 49 - Unused
  2957. <a class="helpanchor" name="SOUNDEFX.HLP__frq"> </a>
  2958. <p class="helpcentered">SAM, OGG, MOD and WAV Frequencies</p>
  2959. Sounds played using the SAM command in Robotic play at its
  2960. "natural" frequency at value 0; if one wants to play the sound
  2961. at a different pitch, a frequency value is needed. Frequencies
  2962. corresponding to MOD file notes follow:
  2963. &#xE0DA;--------&#xE0C2;---&#xE0C2;---&#xE0C2;---&#xE0C2;---&#xE0C2;---&#xE0C2;---&#xE0C2;---&#xE0C2;---&#xE0C2;---&#xE0C2;---&#xE0C2;---&#xE0C2;---&#xE0BF;
  2964. | | C | C#| D | D#| E | F | F#| G | G#| A | A#| B |
  2965. &#xE0C3;--------&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0B4;
  2966. |Octave 1|856|808|762|720|678|640|604|570|538|508|480|453|
  2967. &#xE0C3;--------&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C3;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0B4;
  2968. |Octave 2|428|404|381|360|339|320|302|285|269|254|240|226|
  2969. &#xE0C3;--------&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C3;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0B4;
  2970. |Octave 3|214|202|190|180|170|160|151|143|135|127|120|113|
  2971. &#xE0C3;--------&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C3;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0B4;
  2972. |Octave 4|107|101| 95| 90| 85| 80| 75| 71| 67| 63| 60| 56|
  2973. &#xE0C3;--------&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0C3;---&#xE0C5;---&#xE0C5;---&#xE0C5;---&#xE0B4;
  2974. |Octave 5| 53| 50| 47| 45| 42| 40| 37| 35| 33| 31| 30| 28|
  2975. &#xE0C0;--------&#xE0C1;---&#xE0C1;---&#xE0C1;---&#xE0C1;---&#xE0C1;---&#xE0C1;---&#xE0C1;---&#xE0C1;---&#xE0C1;---&#xE0C1;---&#xE0C1;---&#xE0C1;---&#xE0D9;
  2976. The following table lists frequencies corresponding to PLAY
  2977. statement notes:
  2978. &#xE0DA;-&#xE0C2;----&#xE0C2;----&#xE0C2;----&#xE0C2;----&#xE0C2;----&#xE0C2;----&#xE0C2;----&#xE0C2;----&#xE0C5;----&#xE0C2;----&#xE0C2;----&#xE0C2;----&#xE0BF;
  2979. |O|C |C# |D |D# |E |F |F# |G |G# |A |A# |B |
  2980. &#xE0C3;-&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0B4;
  2981. |0|3424|3232|3948|2880|2712|2560|2416|2280|2152|2032|1920|1812|
  2982. &#xE0C3;-&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0B4;
  2983. |1|1712|1616|1524|1440|1356|1280|1208|1140|1076|1016| 960| 906|
  2984. &#xE0C3;-&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0B4;
  2985. |2| 856| 808| 762| 720| 678| 640| 604| 570| 538| 508| 480| 453|
  2986. &#xE0C3;-&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0B4;
  2987. |3| 428| 404| 381| 360| 339| 320| 302| 285| 269| 254| 240| 226|
  2988. &#xE0C3;-&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0B4;
  2989. |4| 214| 202| 190| 180| 170| 160| 151| 143| 135| 127| 120| 113|
  2990. &#xE0C3;-&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0B4;
  2991. |5| 107| 101| 95| 90| 85| 80| 75| 71| 67| 63| 60| 56|
  2992. &#xE0C3;-&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0C5;----&#xE0B4;
  2993. |6| 53| 50| 47| 45| 42| 40| 37| 35| 33| 31| 30| 28|
  2994. &#xE0C0;-&#xE0C1;----&#xE0C1;----&#xE0C1;----&#xE0C1;----&#xE0C1;----&#xE0C1;----&#xE0C1;----&#xE0C1;----&#xE0C1;----&#xE0C1;----&#xE0C1;----&#xE0C1;----&#xE0D9;
  2995. The following tables list how to play a Wave or OGG at its
  2996. normal sound with PLAY statements:
  2997. 48000Hz Wave/OGG --> 37
  2998. 44100Hz Wave/OGG --> 41
  2999. 32000Hz Wave/OGG --> 56
  3000. 24000Hz Wave/OGG --> 75
  3001. 22050Hz Wave/OGG --> 81
  3002. 16000Hz Wave/OGG --> 112
  3003. 12000Hz Wave/OGG --> 149
  3004. 11025Hz Wave/OGG --> 162
  3005. 08000Hz Wave/OGG --> 224
  3006. To convert frequencies from MZX to real, use these formulae:
  3007. Actual frequency = 1789682 / MZX frequency
  3008. MZX frequency = 1789682 / actual frequency
  3009. SAMs and WAVs converted from SAMs by older versions of MZX play
  3010. at a natural frequency of 8363Hz.
  3011. Finally, tracked modules have a normal frequency of 44100 Hz;
  3012. other types such as OGG and WAV have normal frequencies at
  3013. their recording rate (for example, a WAV encoded at 22050 Hz
  3014. will play normally at the 22050 Hz setting). The frequency of a
  3015. module can be controlled with the "mod_frequency" counter;
  3016. changing the frequency mid-song can create a popping sound,
  3017. especially while lowering frequency. The lowest allowed setting
  3018. of mod_frequency is 16 Hz.
  3019. <p class="helpcentered">Where to Get Module and Sound Files</p>
  3020. These questions are answered in the Frequently Asked Questions
  3021. section of help.
  3022. <a class="helplink" href="#FAQ.HLP__1st">Frequently Asked Questions</a>
  3023. <a class="helplink" href="#CONFGINI.HLP__1st">The Config File</a>
  3024. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  3025. <hr /></div>
  3026. <div class="helpfile" id="TOVERLAY.HLP">
  3027. <a class="helpanchor" name="TOVERLAY.HLP__081"> </a>
  3028. <p class="helpcentered"><span class="f9 ">Editing and Using the Overlay</span></p>
  3029. The overlay is a simple but useful part of a board. If one
  3030. looks at Floors and Fakes as a floor layer, and Walls as a
  3031. central layer, the overlay is a ceiling layer. Basically, the
  3032. overlay, when on, appears OVER anything on the board. The
  3033. player, enemies, Robots, etc. all move underneath it; the only
  3034. exceptions are sprites specifically set to go over it. The
  3035. overlay is purely for show and graphical effects. For example,
  3036. you could create archways that the player moves under, or have
  3037. a score and lives display that is overlaid over the view at all
  3038. times (by using Robotic). However, character 32 (empty space
  3039. 99.99% of the time) is never part of the overlay. To emulate a
  3040. space, use the wall character or make your own space character.
  3041. This is very important to remember when putting text onto the
  3042. overlay.
  3043. The overlay is set on "Normal Overlay" mode by default. The
  3044. editor will prevent you from editing the overlay if it is Off,
  3045. since it will not be saved if it is. These are the available
  3046. overlay modes:
  3047. Off - No overlay is saved, none is shown.
  3048. Normal - The overlay is shown normally, scrolling along with
  3049. the rest of the board. Default for boards.
  3050. Static - The overlay is shown, but it does not scroll with the
  3051. board. It always shows the top left position.
  3052. Transparent - The overlay is saved and can hold info, but is
  3053. currently not shown.
  3054. If the overlay is on, press Alt+O in the editor to edit it.
  3055. This brings you to the overlay editor. The menu at the bottom
  3056. of the screen will change, and you will have access to the
  3057. following keys and options:
  3058. <a class="helpanchor" name="TOVERLAY.HLP__074"><span class="fE ">Alt+B - Block</span></a>
  3059. Press Alt+B to start block mode, then move the cursor to the
  3060. opposite corner of a rectangular block and press Alt+B again.
  3061. You can then select an action to perform upon the block. In all
  3062. copy/move operations, the cursor marks the new UPPER LEFT
  3063. corner.
  3064. Copy block will allow you to duplicate the block by moving the
  3065. cursor to a destination and pressing Enter.
  3066. Copy block (repeated) is the same as Copy block but can allow
  3067. copying of the same block to multiple places.
  3068. Move block will allow you to move the block to a new location.
  3069. Clear block will erase the contents of the block.
  3070. Flip block will flip the block upside down.
  3071. Mirror block will flip the block left to right.
  3072. Paint block will change the entire block to the current color.
  3073. Copy to board will copy the block to the given spot of the
  3074. board. You can choose to place it as either Custom Block, Custom
  3075. Floor, or Text.
  3076. Copy to vlayer will copy the block to the given spot of the
  3077. vlayer.
  3078. Save as MZM will save the block as a layer-type MZM file.
  3079. Destinations for Move and Copy can overlap the original block
  3080. safely. Ctrl+Dir is especially helpful when doing a repeated
  3081. copy block; it moves the cursor the width or height of the
  3082. block, ensuring no overlap when pasting.
  3083. Like normal Block functions, one can copy between boards by
  3084. selecting the board when the editor prompts the user for the
  3085. block's destination. Use the B key to select the destination
  3086. board.
  3087. <a class="helpanchor" name="TOVERLAY.HLP___C"><span class="fE ">C - Color</span></a>
  3088. Press C to select a new current color from a menu. The thing
  3089. under the cursor is not affected. One can jump to a color by
  3090. typing its hex code in the color menu; for example, typing "0D"
  3091. would jump to color 013 (background color 0, foreground color
  3092. D).
  3093. <a class="helpanchor" name="TOVERLAY.HLP___F"><span class="fE ">F - Fill</span></a>
  3094. Press F to fill in an enclosed area with the current character
  3095. and color. The area must be completely surrounded by characters
  3096. other than the character beneath the cursor. For example, you
  3097. can fill over a solid square of As with something else. The
  3098. current fill command may not work right for very large and
  3099. complex areas- In this case, you must move to the unfilled areas
  3100. and press F to continue filling. However, this happens very
  3101. rarely.
  3102. <a class="helpanchor" name="TOVERLAY.HLP__AltO"><span class="fE ">Alt+O - Edit Overlay</span></a>
  3103. Alt+O will exit overlay mode and return to editing the main
  3104. board.
  3105. <a class="helpanchor" name="TOVERLAY.HLP__AltS2"><span class="fE ">Alt+S - Show Level</span></a>
  3106. Alt+S will toggle whether the level beneath the overlay is
  3107. shown. Without the level, only the overlay is shown, and no
  3108. board bits are seen through the holes in the overlay. However,
  3109. it can be a good idea to show the level to see how it looks
  3110. beneath the overlay.
  3111. <a class="helpanchor" name="TOVERLAY.HLP__F1"><span class="fE ">F1 - Help</span></a>
  3112. F1 will bring up context-relevant help. You can press F1 at
  3113. almost any time.
  3114. <a class="helpanchor" name="TOVERLAY.HLP__F2"><span class="fE ">F2 - Text</span></a>
  3115. F2 will toggle text mode on and off. When text mode is on, Enter
  3116. will go to the next line, and Backspace will delete going
  3117. backwards. All printable characters will type in as text.
  3118. <a class="helpanchor" name="TOVERLAY.HLP__Ar"><span class="fE ">Arrow - Move</span></a>
  3119. The arrow keys will move the cursor. The edit window will scroll
  3120. when necessary.
  3121. <a class="helpanchor" name="TOVERLAY.HLP__AltAr"><span class="fE ">Alt+Arrow - Move 10</span></a>
  3122. Alt with the arrow keys will move the cursor ten spaces at a
  3123. time (or to the edge if under 10 spaces away in that direction).
  3124. <a class="helpanchor" name="TOVERLAY.HLP__BkSp"><span class="fE ">Backspace - Delete</span></a>
  3125. <a class="helpanchor" name="TOVERLAY.HLP__Del"><span class="fE ">Del - Delete</span></a>
  3126. These two keys will delete any overlay under the cursor. The
  3127. current character is not affected.
  3128. <a class="helpanchor" name="TOVERLAY.HLP__End"><span class="fE ">End - L/R Corner</span></a>
  3129. End will jump the cursor to the lower-right corner of the entire
  3130. overlay.
  3131. <a class="helpanchor" name="TOVERLAY.HLP__Enter2"><span class="fE ">Enter - Character</span></a>
  3132. Enter will alter the current character on the overlay. Select it
  3133. from a menu and then press Enter to confirm your choice.
  3134. <a class="helpanchor" name="TOVERLAY.HLP__ESC"><span class="fE ">ESC - Exit/Cancel Mode</span></a>
  3135. ESC will exit overlay mode. If you are in block, text, or draw
  3136. mode, ESC will instead cancel the current mode and return to
  3137. normal overlay editing.
  3138. <a class="helpanchor" name="TOVERLAY.HLP__Home"><span class="fE ">Home - U/L Corner</span></a>
  3139. Home will jump the cursor to the upper-left corner of the
  3140. entire overlay.
  3141. <a class="helpanchor" name="TOVERLAY.HLP__Ins"><span class="fE ">Ins - Grab</span></a>
  3142. Ins will select the character and color under the cursor
  3143. as the current. The actual character is not affected.
  3144. <a class="helpanchor" name="TOVERLAY.HLP__Sp"><span class="fE ">Spacebar - Place</span></a>
  3145. Spacebar will copy the current character and color to the
  3146. location under the cursor. Other overlay will be deleted if it
  3147. is under the cursor.
  3148. <a class="helpanchor" name="TOVERLAY.HLP__Tab"><span class="fE ">Tab - Draw</span></a>
  3149. Tab will toggle the current draw mode. When drawing is on, you
  3150. will place a copy of the current character every time you move
  3151. the cursor.
  3152. <span class="fE ">P - Change Buffer Character</span>
  3153. P will act much like Enter, but only change the character in the
  3154. buffer; no character on the overlay is changed with this action.
  3155. <a class="helpanchor" name="TOVERLAY.HLP__CtrZ"><span class="fE ">Ctrl+Z - Undo</span></a>
  3156. <a class="helpanchor" name="TOVERLAY.HLP__CtrY"><span class="fE ">Ctrl+Y - Redo</span></a>
  3157. Ctrl+Z will undo an action; Ctrl+Y will redo any previously
  3158. undone action. Action depth is determined by config file
  3159. settings, with 100 as default.
  3160. The basic method of editing the overlay is to use C and Enter to
  3161. select characters and colors, and use Space, arrows, and Tab to
  3162. draw with them. Do not switch overlay mode to Off once you have
  3163. drawn your overlay, or it may be permanently erased.
  3164. The overlay and overlay mode can also be changed using Robotic;
  3165. with Robotic, not only can one powerfully manipulate the
  3166. overlay, but change the overlay's type, and also copy directly
  3167. to the board or vlayer from the overlay (and vice versa). A
  3168. knowledge of Robotic basics is required, so see the following
  3169. sections to learn about Robots.
  3170. <a class="helplink" href="#ROBOTSWH.HLP__1st">Robots- What They Are and How to Use Them</a>
  3171. <a class="helplink" href="#ROBOTICT.HLP__1st">Robotic Tutorial</a>
  3172. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  3173. The following sections discuss individual commands relating to
  3174. overlays.
  3175. <a class="helplink" href="#COMMAND2.HLP___c4">CHANGE OVERLAY [color] [char] [color] [char]</a>
  3176. <a class="helplink" href="#COMMAND2.HLP___c5">CHANGE OVERLAY [color] [color]</a>
  3177. <a class="helplink" href="#COMMAND2.HLP___cJ">COPY BLOCK # # # # # #</a>
  3178. <a class="helplink" href="#COMMAND2.HLP___cL">COPY OVERLAY BLOCK # # # # # #</a>
  3179. <a class="helplink" href="#COMMAND2.HLP___cR">COPY OVERLAY BLOCK # # # # "@filename" #</a>
  3180. <a class="helplink" href="#COMMAND2.HLP___cS">COPY OVERLAY BLOCK "#x" "#y" # # "@filename" #</a>
  3181. <a class="helplink" href="#COMMAND2.HLP___cU">COPY OVERLAY BLOCK # # # # "$string" #</a>
  3182. <a class="helplink" href="#COMMAND2.HLP___cV">COPY OVERLAY BLOCK "#x" "#y" # # "$string" #</a>
  3183. <a class="helplink" href="#COMMAND2.HLP___cX">COPY OVERLAY BLOCK # # # # "#x" "#y"</a>
  3184. <a class="helplink" href="#COMMAND2.HLP___cZ">COPY OVERLAY BLOCK "#x" "#y" # # # #</a>
  3185. <a class="helplink" href="#COMMAND2.HLP___cAA">COPY OVERLAY BLOCK "#x1" "#y1" # # "#x2" "#y2"</a>
  3186. <a class="helplink" href="#COMMAND2.HLP___o2">OVERLAY ON</a>
  3187. <a class="helplink" href="#COMMAND2.HLP___o3">OVERLAY STATIC</a>
  3188. <a class="helplink" href="#COMMAND2.HLP___o4">OVERLAY TRANSPARENT</a>
  3189. <a class="helplink" href="#COMMAND2.HLP___pE">PUT [color] [char] OVERLAY # #</a>
  3190. <a class="helplink" href="#COMMAND2.HLP___w7">WRITE OVERLAY [color] "string" # #</a>
  3191. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  3192. <hr /></div>
  3193. <div class="helpfile" id="SCROLLSS.HLP">
  3194. <a class="helpanchor" name="SCROLLSS.HLP__1st"> </a>
  3195. <p class="helpcentered"><span class="f9 ">Signs and Scrolls in the Editor</span></p>
  3196. Signs and scrolls are a simple way to get messages across in
  3197. the game. Signs can be read multiple times; scrolls can be read
  3198. once, then disappear. To place them in the editor, press F10 and
  3199. select Sign or Scroll from the list. You must then edit the text
  3200. of the sign or scroll.
  3201. The Scroll editor is very simple. You can move the cursor among
  3202. the different lines and characters. Type to insert text
  3203. anywhere. Press Ins to toggle between insert mode (default)
  3204. and overwrite mode, where typed characters will overwrite any
  3205. characters already there. Backspace and delete work as normal,
  3206. as do PageDown, PageUp, End, and Home. Finally, use Enter to
  3207. start or insert new lines.
  3208. Press ESC when you are done editing your sign or scroll. It will
  3209. be placed at the current cursor position and will become the
  3210. current object in the buffer. Note that although you can now
  3211. copy the scroll freely, there is a limit of 255 scrolls and
  3212. signs per board, but this limit shouldn't ever be a problem.
  3213. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  3214. <hr /></div>
  3215. <div class="helpfile" id="DBGMODE.HLP">
  3216. <a class="helpanchor" name="DBGMODE.HLP__dbg"> </a>
  3217. <p class="helpcentered"><span class="f9 ">Debug Modes</span></p>
  3218. The debug modes are powerful tools. MegaZeux contains two types
  3219. of debug modes: the Counter Debug Mode and the Robotic
  3220. Debugger.
  3221. <p class="helpcentered">Counter Debug Mode</p><a class="helpanchor" name="DBGMODE.HLP__100"> </a>
  3222. The counter debug mode - accessed by pressing F11 while running
  3223. a world during playtesting in the editor - not only can pause
  3224. all current MZX world action and display all of the counters
  3225. and strings the world has set, but also can manipulate these
  3226. values and even add new ones.
  3227. The left side of the counter debug mode shows the current
  3228. selection of counters/strings. Built-in counters ending with an
  3229. asterisk (*) are read-only. Highlighting a counter/string and
  3230. either clicking it or pressing Enter/Space while on it will
  3231. bring up a box, allowing the value of the counter/string to be
  3232. changed. Type in the desired new value, and press Enter to set
  3233. the counter/string to the new value. Press Escape to cancel
  3234. setting a new value.
  3235. (PLEASE NOTE: Strings can only show and set its first 68
  3236. characters when attempting to set a new value. If a string
  3237. originally contained over 68 characters, none of the characters
  3238. past the 68th will show in the value setting box, even when any
  3239. of the first 68 characters are deleted. Simply choosing to set
  3240. a value, while not doing anything else, will truncate the
  3241. string down to its first 68 characters.)
  3242. These counters and strings are organized into various lists,
  3243. shown in the upper-right. Selecting one of these lists will
  3244. display its contents in the left-side box. If a list has a plus
  3245. sign next to it, it is a tree, and clicking on it or pressing
  3246. Space or Enter will expand it to show any of that tree's
  3247. sub-lists (if they exist). Click again to hide the sub-lists.
  3248. The lists are as follows:
  3249. <span class="fA ">Counters</span><span class="fF ">: Lists all user-defined counters, as well as status</span>
  3250. counters (things like AMMO, HEALTH, etc) and menu counters,
  3251. followed by their values. Expanding this tree will allow
  3252. selection of lists sorted by starting character - individual A
  3253. through Z lists contain only counters starting with their
  3254. respective characters, and # does the same for everything else.
  3255. Only the first 45 characters of a counter name will be shown.
  3256. <span class="fA ">Strings</span><span class="fF ">: Lists all user-defined strings, followed by their</span>
  3257. values. Expanding this tree will allow selection of lists
  3258. sorted by starting character - individual A through Z lists for
  3259. the respective characters, and # for everything else. Only the
  3260. first 16 characters of a string name (including the $) and the
  3261. first 40 characters of a string value will be shown.
  3262. <span class="fA ">Sprites</span><span class="fF ">: Lists the global sprite counters and their values.</span>
  3263. Expanding this list will allow selection of lists sorted by
  3264. relevant sprite - "spr1","spr2", and so on. Each spr# list
  3265. shows all of each sprite's relevant counters.
  3266. <span class="fA ">Universal</span><span class="fF ">: Lists counters which persist throughout an entire</span>
  3267. session of MegaZeux, as well as their values.
  3268. <span class="fA ">World</span><span class="fF ">: Lists built-in world counters/strings and their values.</span>
  3269. <span class="fA ">Board</span><span class="fF ">: Lists built-in board counters/strings and their values.</span>
  3270. Also can expand to show lists of scrolls/signs (both under
  3271. "Scrolls") and sensors, if any of these items exist on that
  3272. board. For scrolls/signs, each list shows a "Scroll text" entry;
  3273. if clicked or Enter is pressed while highlighted, it views that
  3274. scroll's/sign's text as it would be if encountered in-game (i.e.
  3275. in the currently-loaded charset, not the protected charset). For
  3276. sensors, each list shows the sensor name and the Robot it
  3277. messages.
  3278. <span class="fA ">Robots</span><span class="fF ">: If directly highlighted, this option lists nothing.</span>
  3279. However, expanding this tree will allow selection of lists
  3280. sorted by the robot_id of the current board's Robots - starting
  3281. with "0: <name>" for the Global, and continuing on for each
  3282. Robot on the board. Each list displays that Robot's local
  3283. counters and their values (as well as their robot_name
  3284. strings).
  3285. In addition, certain special values can be accessed in this
  3286. menu.
  3287. -The number of commands that the given Robot has processed is
  3288. listed under its commands_total value.
  3289. -The number of commands that the given Robot has executed in
  3290. the current cycle is listed under its commands_cycle value.
  3291. This value is read-only.
  3292. -Whether the given Robot is locked or unlocked is denoted by
  3293. the value of lockself (0 for unlocked, 1 for locked).
  3294. Outside of directly displaying and setting values of counters
  3295. and strings, the counter debug mode has several other tools at
  3296. its disposal. They are given buttons in the lower-right corner,
  3297. and are as follows:
  3298. <span class="fA ">Search</span><span class="fF ">: Locates names and values in any of the counters/strings</span>
  3299. listed in the counter debug mode. Type the desired search
  3300. string and select from the given options, then press Enter. The
  3301. search begins from the last highlighted line. This menu can be
  3302. directly accessed with Ctrl+F, and an instant repeat of the
  3303. last search can be done with Ctrl+R. Options:
  3304. -Search names: Searches counter and string names.
  3305. -Search values: Searches counter and string values.
  3306. -Case sensitive: Returns results only if case matches.
  3307. -Exact: Returns results only if the entire string or counter
  3308. value matches (as opposed to if part of the string or counter
  3309. value matches).
  3310. -Reverse: Searches from bottom to top (as opposed to the
  3311. default top to bottom).
  3312. -Wrap search: If no results are found, starts from the opposite
  3313. end and searches until a result is found or the original search
  3314. location is reached.
  3315. -Current list only: Only searches the current list. Child lists
  3316. of the current list will not be searched.
  3317. <span class="fA ">New</span><span class="fF ">: Creates a new counter or string with the given name. Its</span>
  3318. value will be 0 for a new counter, and blank for a new string.
  3319. If any counter or string already exists with the given name,
  3320. this will be ignored and the original counter/string will keep
  3321. its original value. You will not be notified of any such
  3322. conflicts. This menu can be directly accessed with Alt+N.
  3323. <span class="fA ">Toggle Empties</span><span class="fF ">: Sets whether counters with values of 0 and</span>
  3324. blank strings are shown in the display lists. Defaults to Show
  3325. (i.e. counters and strings with these values will be shown).
  3326. Searching forces this setting to Show. This menu can be
  3327. directly accessed with Alt+H.
  3328. <span class="fA ">Export</span><span class="fF ">: Exports a text file list of SET commands that would set</span>
  3329. the current user-defined counters and strings, and the built-in
  3330. counters in the Counters parent list, to their current values.
  3331. If overwriting a current file is chosen, MZX will ask for
  3332. confirmation.
  3333. In addition to its own considerable power, accessing the counter
  3334. debug mode can allow access to the character editor (via Alt+C)
  3335. or the palette editor (via Alt+E) for further manipulation and
  3336. testing.
  3337. <p class="helpcentered">The Robotic Debugger</p><a class="helpanchor" name="DBGMODE.HLP__101"> </a>
  3338. Ever have problems with a Robot choking your game to a crawl?
  3339. Can't figure out how someone else's code works from a simple
  3340. lookthrough? Are your Robots just not interacting the way you'd
  3341. planned? The Robotic Debugger might help. The Robotic Debugger
  3342. can enable controlled line-by-line execution of Robots, or even
  3343. halt Robot execution altogether.
  3344. <a class="helpanchor" name="DBGMODE.HLP__102"> </a>
  3345. Since stepping through code line-by-line can be very, very
  3346. tedious if unneeded, the debugger only starts allowing such
  3347. control after meeting given conditions. The conditions that
  3348. tell the debugger when to begin stepping through lines are
  3349. called breakpoints.
  3350. MegaZeux does not provide default breakpoints (with one notable
  3351. exception explained later), so suitable breakpoints must be
  3352. created. Pressing Alt+F11 while in the editor or during an
  3353. editor testplay will load the config screen for the Robotic
  3354. Debugger.
  3355. Breakpoints can be added by using Alt+N or Alt+A, or by clicking
  3356. the "(new)" text. Breakpoints will activate stepping when
  3357. characters in a line of code match a given string, preventing
  3358. the line triggering the breakpoint from executing. Additionally,
  3359. the breakpoint can be set to trigger only for Robots whose names
  3360. contain the characters in another given string, or only when the
  3361. condition is met on a given line number.
  3362. A blank string can be set as a breakpoint. In this case, all
  3363. lines running in Robots matching the given Robot name string
  3364. will trigger the debugger, and all line numbers matching a given
  3365. line number will likewise always trigger. However, leaving all
  3366. string fields blank and line number at 0 will have no notable
  3367. effect.
  3368. String matches for breakpoints, like MegaZeux string comparisons
  3369. in general, do not have to match case. Also, as implied, the
  3370. string comparisons are not for the whole line or Robot name; the
  3371. lines or names must merely contain the given strings.
  3372. Similar to breakpoints are watchpoints. Watchpoints activate
  3373. stepping as well, but are based off of the values of counters
  3374. and strings, and only activate stepping after a relevant value
  3375. is changed, not right when one is seen. Unlike with breakpoints,
  3376. the watchpoint string has to exactly match (although case
  3377. insensitive). Local counters can be watched as well as global
  3378. counters; to watch local counters, check for rN.<counter>, where
  3379. N is the robot_id, and <counter> is the relevant local counter
  3380. name (without the angle brackets).
  3381. Editing breakpoints/watchpoints is done by pressing Space.
  3382. Deleting breakpoints/watchpoints is done by pressing Alt+D.
  3383. The Robotic debugger defaults to off. Clicking the Enable
  3384. Robotic Debugger button, or adding a breakpoint or watchpoint,
  3385. activates the debugger from that point on. Once done editing
  3386. breakpoints and watchpoints, click the Done button.
  3387. In addition to user-defined breakpoints and watchpoints,
  3388. MegaZeux also activates stepping through the debugger when Robot
  3389. processing reaches very high amounts; if the debugger was
  3390. currently off, hitting this condition forces it on. By default,
  3391. this happens when a Robot executes over 2,000,000 commands in a
  3392. single cycle, but this can be changed by changing the value of
  3393. the COMMANDS_STOP counter.
  3394. Once a breakpoint or watchpoint is hit, MegaZeux halts execution
  3395. of all actions and opens up a menu. Actions, and the keys that
  3396. activate them, are as follows:
  3397. <span class="fA ">Continue</span><span class="fF ">: Stops stepping through code until the next</span>
  3398. breakpoint/watchpoint is hit. (C or Escape)
  3399. <span class="fA ">Step</span><span class="fF ">: Steps through the current line, executing it, and</span>
  3400. prompts the user for further action at the next line. (S)
  3401. <span class="fA ">Goto</span><span class="fF ">: Opens up a menu to send Robots to a given label. (G)</span>
  3402. All Robots that match the given Name string (or all Robots for
  3403. blank) will be sent to the given label. The Goto option will
  3404. send the relevant Robots to the given label regardless of locked
  3405. status; the Send option will act as a normal label send; the
  3406. Send All option will act as a normal label send to all Robots.
  3407. Select the "Send/send all ignores locked status?" option to have
  3408. these ignore locked states as well.
  3409. The strings given here do not have to be constants; expression
  3410. outputs and interpolated strings will evaluate correctly for
  3411. these values.
  3412. <span class="fA ">Halt</span><span class="fF ">: Makes the Robot running the current line immediately</span>
  3413. stop processing commands. Note that this does not permanently
  3414. stop the Robot from processing commands in the future (e.g. due
  3415. to being sent to a label); it merely prevents it from running
  3416. its currently planned commands. (H)
  3417. <span class="fA ">Halt All</span><span class="fF ">: Immediately makes ALL Robots stop processing</span>
  3418. commands. (Alt+H)
  3419. <span class="fA ">Counters</span><span class="fF ">: Opens up the Counter Debug Mode. (F11)</span>
  3420. <span class="fA ">Breakpoints</span><span class="fF ">: Opens up the Robotic Debugger config. (Alt+F11)</span>
  3421. The PgUp and PgDn keys can shift the debugger window to the top
  3422. or bottom of the screen, respectively.
  3423. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  3424. <hr /></div>
  3425. <div class="helpfile" id="ERRORMES.HLP">
  3426. <a class="helpanchor" name="ERRORMES.HLP__1st"> </a>
  3427. <p class="helpcentered"><span class="f9 ">Error Messages</span></p>
  3428. The following is a list of error messages in alphabetical
  3429. order, which links to descriptions of the error and possible
  3430. remedies. MegaZeux silently ignores many other possible errors.
  3431. MegaZeux General Errors:
  3432. <a class="helplink" href="#ERRORMES.HLP__era">Cannot decrypt write-protected world; check permissions</a>
  3433. <a class="helplink" href="#ERRORMES.HLP__erb">Cannot overwrite the player- move it first</a>
  3434. <a class="helplink" href="#ERRORMES.HLP__erc">Current renderer lacks advanced graphical features; features</a>
  3435. <span class="fF ">disabled</span>
  3436. <a class="helplink" href="#ERRORMES.HLP__erd">Directory rename failed.</a>
  3437. <a class="helplink" href="#ERRORMES.HLP__ere">Error saving; file/directory may be write protected</a>
  3438. <a class="helplink" href="#ERRORMES.HLP__erf">Error swapping to next world</a>
  3439. <a class="helplink" href="#ERRORMES.HLP__erg">(Filename) already exists.</a>
  3440. <a class="helplink" href="#ERRORMES.HLP__erh">File rename failed.</a>
  3441. <a class="helplink" href="#ERRORMES.HLP__eri">Overlay mode is not on (see Board Info)</a>
  3442. <a class="helplink" href="#ERRORMES.HLP__erj">Save would overwrite older world. Aborted.</a>
  3443. <a class="helplink" href="#ERRORMES.HLP__erk">Windowing code bug</a>
  3444. <a class="helplink" href="#ERRORMES.HLP__erl">You can only play this game via a swap from another game</a>
  3445. MegaZeux Validation Errors:
  3446. <a class="helplink" href="#ERRORMES.HLP__eva">Any extra scrolls/signs/robots were replaced</a>
  3447. <a class="helplink" href="#ERRORMES.HLP__evb">Board @ (hex location) could not be found</a>
  3448. <a class="helplink" href="#ERRORMES.HLP__evc">Board @ (hex location): found (#) robots; expected (#)</a>
  3449. <a class="helplink" href="#ERRORMES.HLP__evd">Board @ (hex location): found (#) scrolls/signs; expected (#)</a>
  3450. <a class="helplink" href="#ERRORMES.HLP__eve">Board @ (hex location): found (#) sensors; expected (#)</a>
  3451. <a class="helplink" href="#ERRORMES.HLP__evf">Board @ (hex location) is irrecoverably truncated or corrupt</a>
  3452. <a class="helplink" href="#ERRORMES.HLP__evg">Board @ (hex location) is truncated, but could be partially</a>
  3453. <span class="fF ">recovered</span>
  3454. <a class="helplink" href="#ERRORMES.HLP__evh">Board file is from a future version (version)</a>
  3455. <a class="helplink" href="#ERRORMES.HLP__evi">Bytecode file (filename) failed validation check</a>
  3456. <a class="helplink" href="#ERRORMES.HLP__evj">Cannot load password protected world</a>
  3457. <a class="helplink" href="#ERRORMES.HLP__evk">File doesn't exist</a>
  3458. <a class="helplink" href="#ERRORMES.HLP__evl">File is not a board file or is corrupt</a>
  3459. <a class="helplink" href="#ERRORMES.HLP__evm">File is not an MZM or is corrupt</a>
  3460. <a class="helplink" href="#ERRORMES.HLP__evn">File is not a valid .SAV file or is corrupt</a>
  3461. <a class="helplink" href="#ERRORMES.HLP__evo">File is not a valid world file or is corrupt</a>
  3462. <a class="helplink" href="#ERRORMES.HLP__evp">MZM contains runtime robots; dummying out</a>
  3463. <a class="helplink" href="#ERRORMES.HLP__evq">MZM doesn't exist</a>
  3464. <a class="helplink" href="#ERRORMES.HLP__evr">MZM from more recent version (version); dummying out robots</a>
  3465. <a class="helplink" href="#ERRORMES.HLP__evs">MZM is missing robots or contains corrupt robot</a>
  3466. <a class="helplink" href="#ERRORMES.HLP__evt">Post validation IO error occurred</a>
  3467. <a class="helplink" href="#ERRORMES.HLP__evu">Robot @ (hex location) could not be found</a>
  3468. <a class="helplink" href="#ERRORMES.HLP__evv">Robot @ (hex location) is truncated or corrupt</a>
  3469. <a class="helplink" href="#ERRORMES.HLP__evw">.SAV files from newer versions of MZX (version) are not</a>
  3470. <span class="fF ">supported</span>
  3471. <a class="helplink" href="#ERRORMES.HLP__evx">.SAV files from older versions of MZX (version) are not</a>
  3472. <span class="fF ">supported</span>
  3473. <a class="helplink" href="#ERRORMES.HLP__evy">Scroll @ (hex location) is truncated or corrupt</a>
  3474. <a class="helplink" href="#ERRORMES.HLP__evz">Sensor @ (hex location) is truncated or corrupt</a>
  3475. <a class="helplink" href="#ERRORMES.HLP__ev1">This world may be password protected. Decrypt it?</a>
  3476. <a class="helplink" href="#ERRORMES.HLP__ev2">Unknown error reading from file</a>
  3477. <a class="helplink" href="#ERRORMES.HLP__ev3">Unknown error writing to file</a>
  3478. <a class="helplink" href="#ERRORMES.HLP__ev4">World is from a more recent version (version)</a>
  3479. <a class="helplink" href="#ERRORMES.HLP__ev5">World is from old version (version); use converter</a>
  3480. MegaZeux Validation Errors (ZIP World Format):
  3481. <a class="helplink" href="#ERRORMES.HLP__eza">Board # (number) is corrupt</a>
  3482. <a class="helplink" href="#ERRORMES.HLP__ezb">Board # (number) is missing data:</a>
  3483. <a class="helplink" href="#ERRORMES.HLP__ezc">Robot # (number) contains duplicates on board # (number)</a>
  3484. <a class="helplink" href="#ERRORMES.HLP__ezd">Robot # (number) does not exist on board # (number)</a>
  3485. <a class="helplink" href="#ERRORMES.HLP__eze">Robot # (number) exists on board # (number), but was not found</a>
  3486. <a class="helplink" href="#ERRORMES.HLP__ezf">Robot # (number) on board # (number) is corrupt</a>
  3487. <a class="helplink" href="#ERRORMES.HLP__ezg">Scroll # (number) on board # (number) is corrupt</a>
  3488. <a class="helplink" href="#ERRORMES.HLP__ezh">Sensor # (number) on board # (number) is corrupt</a>
  3489. MegaZeux Updater Errors:
  3490. <a class="helplink" href="#ERRORMES.HLP__eua">Attempt to invoke self failed!</a>
  3491. <a class="helplink" href="#ERRORMES.HLP__eub">Failed to back up manifest. Check permissions.</a>
  3492. <a class="helplink" href="#ERRORMES.HLP__euc">Failed to change back to user directory.</a>
  3493. <a class="helplink" href="#ERRORMES.HLP__eud">Failed to change into install directory.</a>
  3494. <a class="helplink" href="#ERRORMES.HLP__eue">Failed to compute update manifests</a>
  3495. <a class="helplink" href="#ERRORMES.HLP__euf">Failed to create (filename). Check permissions.</a>
  3496. <a class="helplink" href="#ERRORMES.HLP__eug">Failed to create directories (path too long)</a>
  3497. <a class="helplink" href="#ERRORMES.HLP__euh">Failed to create TCP client socket.</a>
  3498. <a class="helplink" href="#ERRORMES.HLP__eui">Failed to identify applicable update version.</a>
  3499. <a class="helplink" href="#ERRORMES.HLP__euj">Failed to initialize network layer.</a>
  3500. <a class="helplink" href="#ERRORMES.HLP__euk">Failed to remove (filename). Check permissions.</a>
  3501. <a class="helplink" href="#ERRORMES.HLP__eul">Failed to roll back manifest. Check permissions.</a>
  3502. <a class="helplink" href="#ERRORMES.HLP__eum">Failed to prune directories (path too long)</a>
  3503. <a class="helplink" href="#ERRORMES.HLP__eun">Transferred more than expected uncompressed size.</a>
  3504. <a class="helplink" href="#ERRORMES.HLP__euo">Unknown stat() error occurred</a>
  3505. <span class="f9 ">MZX General Errors</span>
  3506. <a class="helpanchor" name="ERRORMES.HLP__era"><span class="fA ">Cannot decrypt write-protected world; check permissions</span></a>
  3507. This can be caused by file errors or a hard disk space
  3508. shortage. It can also result from an attempt to overwrite a
  3509. read-only file.
  3510. <a class="helpanchor" name="ERRORMES.HLP__erb"><span class="fA ">Cannot overwrite the player- move it first</span></a>
  3511. The user attempted to place an object over the player. The
  3512. player must be moved from its current location if something
  3513. else is desired at that location.
  3514. <a class="helpanchor" name="ERRORMES.HLP__erc"><span class="fA ">Current renderer lacks advanced graphical features; features</span></a>
  3515. <span class="fA ">disabled</span>
  3516. Certain graphics renderers (at present, the overlay2 renderer)
  3517. are unable to utilize some newer features. Try running MegaZeux
  3518. under a different renderer.
  3519. <a class="helpanchor" name="ERRORMES.HLP__erd"><span class="fA ">Directory rename failed.</span></a>
  3520. <a class="helpanchor" name="ERRORMES.HLP__erh"><span class="fA ">File rename failed.</span></a>
  3521. The user attempted to rename a directory or file, respectively,
  3522. but failed. This could be due to trying to change a read-only
  3523. file, trying to change a locked file, or due to some other
  3524. error.
  3525. <a class="helpanchor" name="ERRORMES.HLP__ere"><span class="fA ">Error saving; file/directory may be write protected</span></a>
  3526. This can be caused by file errors or a hard disk space
  3527. shortage. It can also result from an attempt to overwrite a
  3528. read-only file or write to a directory without write
  3529. permissions.
  3530. <a class="helpanchor" name="ERRORMES.HLP__erf"><span class="fA ">Error swapping to next world</span></a>
  3531. A Robotic command, SWAP to WORLD, was issued, but the stated
  3532. world could not be found or otherwise could not be swapped to,
  3533. due to version conflicts, file errors, etc.
  3534. <a class="helpanchor" name="ERRORMES.HLP__erg"><span class="fA ">(Filename) already exists.</span></a>
  3535. The user attempted to create a new file, but a file with that
  3536. name already exists.
  3537. <a class="helpanchor" name="ERRORMES.HLP__eri"><span class="fA ">Overlay mode is not on (see Board Info)</span></a>
  3538. You cannot edit or copy to the Overlay if it is Off; go to
  3539. Board Info and turn it to Normal, Static, or Transparent.
  3540. <a class="helpanchor" name="ERRORMES.HLP__erj"><span class="fA ">Save would overwrite older world. Aborted.</span></a>
  3541. A save was attempted in the debytecode version of MegaZeux that
  3542. would overwrite a non-debytecode world file. Due to the present
  3543. instability of debytecode, this is forcibly prevented.
  3544. <a class="helpanchor" name="ERRORMES.HLP__erk"><span class="fA ">Windowing code bug</span></a>
  3545. This is an internal error. Try to isolate the reason for the
  3546. problem and notify the maintainer(s), as this error signifies a
  3547. severe bug in MegaZeux.
  3548. <a class="helpanchor" name="ERRORMES.HLP__erl"><span class="fA ">You can only play this game via a swap from another game</span></a>
  3549. This error occurs when the user tries to play a game that has
  3550. the option set to disallow normal gameplay. The world can only
  3551. be played as a swap from another game. For example, this may be
  3552. the second half of another game, or a separate world for
  3553. showing the introduction.
  3554. <span class="f9 ">MZX Validation Errors</span>
  3555. <a class="helpanchor" name="ERRORMES.HLP__evc"><span class="fA ">Board @ (hex location): found (#) robots; expected (#)</span></a>
  3556. <a class="helpanchor" name="ERRORMES.HLP__evd"><span class="fA ">Board @ (hex location): found (#) scrolls/signs; expected (#)</span></a>
  3557. <a class="helpanchor" name="ERRORMES.HLP__eve"><span class="fA ">Board @ (hex location): found (#) sensors; expected (#)</span></a>
  3558. <a class="helpanchor" name="ERRORMES.HLP__eva"><span class="fA ">Any extra robots/scrolls/signs were replaced</span></a>
  3559. MegaZeux found more instances of the given object than the
  3560. world file indicated it had. All instances past the expected
  3561. amount are tossed out.
  3562. <a class="helpanchor" name="ERRORMES.HLP__evb"><span class="fA ">Board @ (hex location) could not be found</span></a>
  3563. The MegaZeux world is indicating that there should be a board
  3564. at the given location, but it is not actually in the world
  3565. file.
  3566. <a class="helpanchor" name="ERRORMES.HLP__evf"><span class="fA ">Board @ (hex location) is irrecoverably truncated or corrupt</span></a>
  3567. The board at the given location is corrupt beyond repair and
  3568. will be replaced with a blank board.
  3569. <a class="helpanchor" name="ERRORMES.HLP__evg"><span class="fA ">Board @ (hex location) is truncated, but could be partially</span></a>
  3570. <span class="fA ">recovered</span>
  3571. Only part of the board was found, but what board info remained
  3572. is placed at that location.
  3573. <a class="helpanchor" name="ERRORMES.HLP__evh"><span class="fA ">Board file is from a future version (version)</span></a>
  3574. Load of a board file from a more recent version of MegaZeux was
  3575. attempted. You must use the version of MegaZeux listed or higher
  3576. in order to import this board file.
  3577. <a class="helpanchor" name="ERRORMES.HLP__evi"><span class="fA ">Bytecode file failed validation check</span></a>
  3578. An attempt to load a bytecode file has failed validation checks
  3579. and will not be loaded.
  3580. <a class="helpanchor" name="ERRORMES.HLP__evj"><span class="fA ">Cannot load password protected world</span></a>
  3581. Since MegaZeux 2.80, worlds that are password protected have to
  3582. be stripped of the password to run. This error is seen when the
  3583. user refuses to decrypt the password-protected file.
  3584. <a class="helpanchor" name="ERRORMES.HLP__evk"><span class="fA ">File doesn't exist</span></a>
  3585. An import of a file was attempted, but the file does not exist.
  3586. <a class="helpanchor" name="ERRORMES.HLP__evl"><span class="fA ">File is not a board file or is corrupt</span></a>
  3587. <a class="helpanchor" name="ERRORMES.HLP__evm"><span class="fA ">File is not an MZM or is corrupt</span></a>
  3588. <a class="helpanchor" name="ERRORMES.HLP__evn"><span class="fA ">File is not a valid .SAV file or is corrupt</span></a>
  3589. <a class="helpanchor" name="ERRORMES.HLP__evo"><span class="fA ">File is not a valid world file or is corrupt</span></a>
  3590. An import of the given type was halted due to being unrecognized
  3591. as a valid file, or due to corruption.
  3592. <a class="helpanchor" name="ERRORMES.HLP__evp"><span class="fA ">MZM contains runtime robots; dummying out</span></a>
  3593. Load of an MZM containing Robots and saved during a running
  3594. game was attempted. The Robots will be replaced with
  3595. CustomBlock facsimiles, as if the file were loaded as a
  3596. layer-type MZM.
  3597. <a class="helpanchor" name="ERRORMES.HLP__evq"><span class="fA ">MZM doesn't exist</span></a>
  3598. Loading an MZM file was attempted, but the given file does not
  3599. exist.
  3600. <a class="helpanchor" name="ERRORMES.HLP__evr"><span class="fA ">MZM from more recent version (version); dummying out robots</span></a>
  3601. Load of an MZM file with Robots from a more recent version of
  3602. MZX was attempted. The Robots will be replaced with CustomBlock
  3603. facsimiles, as if the file were loaded as a layer-type MZM.
  3604. <a class="helpanchor" name="ERRORMES.HLP__evs"><span class="fA ">MZM is missing robots or contains corrupt robot</span></a>
  3605. The loaded MZM file indicates that a Robot should be at a
  3606. certain location of the MZM, but found either no code or
  3607. corrupt code.
  3608. <a class="helpanchor" name="ERRORMES.HLP__evt"><span class="fA ">Post validation IO error occurred</span></a>
  3609. The given file passed validation, but some other problem is
  3610. preventing it from loading.
  3611. <a class="helpanchor" name="ERRORMES.HLP__evu"><span class="fA ">Robot @ (hex location) could not be found</span></a>
  3612. The board file indicates a Robot should be present at the given
  3613. location, but no Robot exists there.
  3614. <a class="helpanchor" name="ERRORMES.HLP__evv"><span class="fA ">Robot @ (hex location) is truncated or corrupt</span></a>
  3615. The Robot at the given location is unrecoverable, and will be
  3616. replaced with an empty Robot at that location.
  3617. <a class="helpanchor" name="ERRORMES.HLP__evw"><span class="fA ">.SAV files from newer versions of MZX (version) are not</span></a>
  3618. <span class="fA ">supported</span>
  3619. <a class="helpanchor" name="ERRORMES.HLP__evx"><span class="fA ">.SAV files from older versions of MZX (version) are not</span></a>
  3620. <span class="fA ">supported</span>
  3621. The .SAV file the user attempted to load is a different format
  3622. than the current version's .SAV and cannot be loaded.
  3623. <a class="helpanchor" name="ERRORMES.HLP__evy"><span class="fA ">Scroll @ (hex location) is truncated or corrupt</span></a>
  3624. The Scroll at the given location is unrecoverable, and will be
  3625. replaced with an empty Scroll at that location.
  3626. <a class="helpanchor" name="ERRORMES.HLP__evz"><span class="fA ">Sensor @ (hex location) is truncated or corrupt</span></a>
  3627. The Sensor at the given location is unrecoverable, and will be
  3628. replaced with a Sensor with default attributes at that location.
  3629. <a class="helpanchor" name="ERRORMES.HLP__ev1"><span class="fA ">This world may be password protected. Decrypt it?</span></a>
  3630. Worlds saved with password protection (some worlds made before
  3631. MZX2.51s3.2) cannot natively run in MegaZeux. This prompt asks
  3632. the user if they want to convert the world to a readable format.
  3633. If Yes is chosen, the world is permanently decrypted and
  3634. converted to a world file (with a world version unique to
  3635. decrypted worlds). If No is chosen, the world is left alone and
  3636. MZX keeps any currently-running world as its active world.
  3637. <a class="helpanchor" name="ERRORMES.HLP__ev2"><span class="fA ">Unknown error reading from file</span></a>
  3638. A file read was attempted, but MZX failed for some undetermined
  3639. reason.
  3640. <a class="helpanchor" name="ERRORMES.HLP__ev3"><span class="fA ">Unknown error writing to file</span></a>
  3641. MZX attempted to write to a file, but failed for some
  3642. undertermined reason.
  3643. <a class="helpanchor" name="ERRORMES.HLP__ev4"><span class="fA ">World is from a more recent version (version)</span></a>
  3644. The .MZX file you tried to load or import is from a more
  3645. current version of MegaZeux. You must upgrade MegaZeux to the
  3646. given version or higher to play this worldfile.
  3647. <a class="helpanchor" name="ERRORMES.HLP__ev5"><span class="fA ">World is from old version (version); use converter</span></a>
  3648. The user tried to load a .MZX file from version 1.00g, 1.01,
  3649. 1.02, or 1.03 of MegaZeux. In order to use these worlds, they
  3650. must first be converted to 2.51 format using the included
  3651. VER1TO2 program. Run VER1TO2 without any command line arguments
  3652. for further instructions.
  3653. <span class="f9 ">MegaZeux Validation Errors (ZIP World Format):</span>
  3654. <a class="helpanchor" name="ERRORMES.HLP__eza"><span class="fA ">Board # (number) is corrupt</span></a>
  3655. The board with the given number is corrupt beyond repair.
  3656. <a class="helpanchor" name="ERRORMES.HLP__ezb"><span class="fA ">Board # (number) is missing data:</span></a>
  3657. The given board lacks data that its structure indicates it
  3658. should have.
  3659. <a class="helpanchor" name="ERRORMES.HLP__ezc"><span class="fA ">Robot # (number) contains duplicates on board # (number)</span></a>
  3660. A Robot is found in multiple places in the given board's data.
  3661. <a class="helpanchor" name="ERRORMES.HLP__ezd"><span class="fA ">Robot # (number) does not exist on board # (number)</span></a>
  3662. A Robot should exist on the given board, according to the board
  3663. data, but does not.
  3664. <a class="helpanchor" name="ERRORMES.HLP__eze"><span class="fA ">Robot # (number) exists on board # (number), but was not found</span></a>
  3665. A Robot exists on the given board, but the board data for that
  3666. Robot is absent.
  3667. <a class="helpanchor" name="ERRORMES.HLP__ezf"><span class="fA ">Robot # (number) on board # (number) is corrupt</span></a>
  3668. The Robot on the board with the given number is corrupt beyond
  3669. repair.
  3670. <a class="helpanchor" name="ERRORMES.HLP__ezg"><span class="fA ">Scroll # (number) on board # (number) is corrupt</span></a>
  3671. The Scroll on the board with the given number is corrupt beyond
  3672. repair.
  3673. <a class="helpanchor" name="ERRORMES.HLP__ezh"><span class="fA ">Sensor # (number) on board # (number) is corrupt</span></a>
  3674. The Sensor on the board with the given number is corrupt beyond
  3675. repair.
  3676. <span class="f9 ">MZX Updater Errors</span>
  3677. <a class="helpanchor" name="ERRORMES.HLP__eua"><span class="fA ">Attempt to invoke self failed!</span></a>
  3678. This error occurs when MZX fails to reload itself after an
  3679. update. This signifies a major bug in MegaZeux; please contact
  3680. the maintainer(s).
  3681. <a class="helpanchor" name="ERRORMES.HLP__eub"><span class="fA ">Failed to back up manifest. Check permissions.</span></a>
  3682. <a class="helpanchor" name="ERRORMES.HLP__euf"><span class="fA ">Failed to create (filename). Check permissions.</span></a>
  3683. <a class="helpanchor" name="ERRORMES.HLP__euk"><span class="fA ">Failed to remove (filename). Check permissions.</span></a>
  3684. <a class="helpanchor" name="ERRORMES.HLP__eul"><span class="fA ">Failed to roll back manifest. Check permissions.</span></a>
  3685. MZX tried to write/delete a file from the working directory,
  3686. but could not, likely due to the user's MZX working directory
  3687. disallowing write access.
  3688. <a class="helpanchor" name="ERRORMES.HLP__euc"><span class="fA ">Failed to change back to user directory.</span></a>
  3689. <a class="helpanchor" name="ERRORMES.HLP__eud"><span class="fA ">Failed to change into install directory.</span></a>
  3690. These errors occur when MZX fails to change active directories
  3691. during the updating process.
  3692. <a class="helpanchor" name="ERRORMES.HLP__eue"><span class="fA ">Failed to compute update manifests</span></a>
  3693. This error occurs when the hash check in a manifest file fails.
  3694. This error can also appear if the download of the manifest file
  3695. times out.
  3696. <a class="helpanchor" name="ERRORMES.HLP__eug"><span class="fA ">Failed to create directories (path too long)</span></a>
  3697. <a class="helpanchor" name="ERRORMES.HLP__eum"><span class="fA ">Failed to prune directories (path too long)</span></a>
  3698. This error occurs when the pathnames of the subdirectories
  3699. included in or deleted by the selected update are too long.
  3700. <a class="helpanchor" name="ERRORMES.HLP__euh"><span class="fA ">Failed to create TCP client socket.</span></a>
  3701. MZX failed to create a socket. This may be because the last one
  3702. created is still in use. This can signify a major bug in
  3703. MegaZeux; please contact the maintainer(s).
  3704. <a class="helpanchor" name="ERRORMES.HLP__eui"><span class="fA ">Failed to identify applicable update version.</span></a>
  3705. MZX could not find an update in the branch the user selected.
  3706. Please check the update_branch_pin and update_host options in
  3707. config.txt and make sure they are correct.
  3708. <a class="helpanchor" name="ERRORMES.HLP__euj"><span class="fA ">Failed to initialize network layer.</span></a>
  3709. MZX's networking code is unable to load. This signifies a major
  3710. bug in MegaZeux; please contact the maintainer(s).
  3711. <a class="helpanchor" name="ERRORMES.HLP__eun"><span class="fA ">Transferred more than expected uncompressed size.</span></a>
  3712. The updater has sent the user more data than needed. The update
  3713. may be corrupt.
  3714. <a class="helpanchor" name="ERRORMES.HLP__euo"><span class="fA ">Unknown stat() error occurred</span></a>
  3715. A fatal error outside of the ones mentioned occurred. Please
  3716. contact the developer(s) if you see this error.
  3717. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  3718. <hr /></div>
  3719. <div class="helpfile" id="SENSORSW.HLP">
  3720. <a class="helpanchor" name="SENSORSW.HLP__094"> </a>
  3721. <p class="helpcentered"><span class="f9 ">Sensors - What They Are and How to Use Them</span></p>
  3722. Sensors have two real purposes. The first is to act as save
  3723. points. The second is to interact with Robots as a hybrid of
  3724. floor and object. The first use is simple - just set the board
  3725. to "Save only on Sensors", and then the player can only save
  3726. when standing on a sensor.
  3727. The second use is more complex, and requires knowledge of
  3728. Robotic. Sensors are like controllable CustomFloors (albeit
  3729. CustomFloors that can be pushed by non-player objects). When
  3730. creating one, give it a name and a character, then enter the
  3731. name of a Robot with which it will interact. This use of sensors
  3732. is easily replicable through Robotic now, so this use of sensors
  3733. is deprecated. However, if one wants to use sensors, this
  3734. information will easily help.
  3735. Sensors interact with Robots using labels (messages) and SEND
  3736. commands, just like Robots interact with each other. Any Robot
  3737. can SEND a message to a sensor, but the sensor will only SEND
  3738. messages to the Robot stated in its settings. If you entered a
  3739. Robot of ALL, then it will SEND messages to all Robots. Unlike
  3740. Robots, sensors cannot send to a dynamic name; for instance, it
  3741. cannot be set to send to "&fest&ive" (whereas a Robot would
  3742. properly send to "1ive" when "fest" is 1 and to "5ive" when
  3743. "fest" is 5).
  3744. <p class="helpcentered">Messages TO Sensors</p>
  3745. The following messages can be sent to a sensor. A sensor can
  3746. receive messages even when it is beneath the player.
  3747. <span class="fE ">DIE</span>
  3748. This will cause the sensor to disappear forever.
  3749. <span class="fE ">CHAR'X'</span>
  3750. This will cause the sensor to change its character to X.
  3751. <span class="fE ">CHAR###</span>
  3752. This will cause the sensor to change its character to that
  3753. represented by the number ###, from 0 to 255.
  3754. <span class="fE ">COLORxx</span>
  3755. This will cause the sensor to change its color to the color
  3756. represented by the code xx, a hexadecimal number from 00 to
  3757. FF. The color coding is the same as used for Robotic commands,
  3758. except without the "c" character. ?s are not allowed.
  3759. <span class="fE ">N</span>
  3760. <span class="fE ">S</span>
  3761. <span class="fE ">E</span>
  3762. <span class="fE ">W</span>
  3763. This will cause the sensor to move north, south, east, or west,
  3764. respectively. If the player is on top of the sensor, the player
  3765. will move along with it. If the sensor tries to move towards
  3766. the player, it will instead move beneath. If something pushable
  3767. is in the direction of movement, the sensor will push it while
  3768. moving if there is room.
  3769. <p class="helpcentered">Messages FROM Sensors</p>
  3770. Sensors will send Robots the following messages.
  3771. <span class="fE ">SENSORON</span>
  3772. This is sent when the player steps onto the sensor, when the
  3773. sensor is told to move and it ends up beneath the player, or
  3774. when something pushes the player onto the sensor.
  3775. <span class="fE ">SENSORTHUD</span>
  3776. This is sent when the sensor is told to move, but it is blocked.
  3777. <span class="fE ">SENSORPUSHED</span>
  3778. This is sent when something pushes the sensor.
  3779. <p class="helpcentered">Notes on Sensors</p>
  3780. Only the player can step onto a sensor; other things will push
  3781. it. The sensor, when moving, will move UNDER the player if in
  3782. the way, or will take the player with it if the player is on
  3783. the sensor. Laying a bomb while on a sensor will destroy the
  3784. sensor.
  3785. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  3786. <hr /></div>
  3787. <div class="helpfile" id="ROBOTICR.HLP">
  3788. <a class="helpanchor" name="ROBOTICR.HLP__087"> </a>
  3789. <p class="helpcentered"><span class="f9 ">Robotic Reference Manual</span></p>
  3790. Use the following help links to see your desired topic(s).
  3791. <a class="helplink" href="#COMMANDS.HLP__1st">Command Syntax</a>
  3792. <a class="helplink" href="#COMMANDR.HLP__1st">Command Reference</a>
  3793. <a class="helplink" href="#USINGTHE.HLP__1st">Using the Editor</a>
  3794. <a class="helplink" href="#THEGLOBL.HLP__gbl">The Global</a>
  3795. <a class="helplink" href="#SENSORSW.HLP__094">Sensors</a>
  3796. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  3797. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  3798. <a class="helplink" href="#BUILTINL.HLP__1st">Built-in Labels</a>
  3799. <a class="helplink" href="#COUNTERS.HLP__1st">Counters, Built-in Counters and Local Counters</a>
  3800. <a class="helplink" href="#COMMAND2.HLP__pre">Prefixes</a>
  3801. <a class="helplink" href="#STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  3802. <a class="helplink" href="#COMMANDS.HLP__con">Conditions</a>
  3803. <a class="helplink" href="#SOUNDEFX.HLP__1st">Sound and Music</a>
  3804. <a class="helplink" href="#SMZXMODE.HLP__095">Super MZX Modes</a>
  3805. <a class="helplink" href="#SUBROUTE.HLP__sub">Subroutines</a>
  3806. <a class="helplink" href="#EXPRESS.HLP__exp">Expressions</a>
  3807. <a class="helplink" href="#FILEACSS.HLP__fil">File Access</a>
  3808. <a class="helplink" href="#SPRITES.HLP__spr">Sprites</a>
  3809. <a class="helplink" href="#VLAYER.HLP__vla">The Vlayer</a>
  3810. <a class="helplink" href="#MZM.HLP__mzm">Using MZMs</a>
  3811. <a class="helplink" href="#TRIG.HLP__tri">Trigonometric Functions</a>
  3812. <a class="helplink" href="#PROCESS.HLP__prc">Cycles and Board Scans - How MZX Processes Robots</a>
  3813. <a class="helplink" href="#PARTIAL.HLP__par">Partial Character Sets</a>
  3814. <a class="helplink" href="#BULLETTY.HLP__1st">Bullet Types</a>
  3815. <a class="helplink" href="#CHANGECH.HLP__1st">CHANGE CHAR ID - The CHAR ID Table</a>
  3816. <a class="helplink" href="#ROBOTSWH.HLP__1st">Robots - What They Are and How to Use Them</a>
  3817. <a class="helplink" href="#ROBOTICT.HLP__1st">Robotic Tutorial</a>
  3818. <a class="helplink" href="#BADPRACT.HLP__bad">Robotic Usages That Should be Avoided</a>
  3819. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  3820. <hr /></div>
  3821. <div class="helpfile" id="COMMANDS.HLP">
  3822. <a class="helpanchor" name="COMMANDS.HLP__1st"> </a>
  3823. <p class="helpcentered"><span class="f9 ">Command Syntax</span></p>
  3824. Commands in Robotic must conform to a certain syntax:
  3825. COMMAND [param] [param] ...
  3826. COMMAND is the words or symbol that specifies exactly which
  3827. command you are using. Params are the values used to supplement
  3828. the command's function.
  3829. <span class="fE ">"string" or "counter" or "label" or "Robot" or "file"</span>
  3830. Strings are a series of characters surrounded by quotes.
  3831. Counters are strings representing the name of a counter. Labels
  3832. are strings representing the name of a label, a point within a
  3833. Robot. Robots are strings representing the name of a Robot.
  3834. Files are strings representing a file or folder on disk, always
  3835. including the extension in the case of files. (Some string
  3836. examples: "Hi", "Gems", "Label5", "*1230 +725", "robott.txt",
  3837. etc.)
  3838. The quotes can be left off if the string contains no spaces and
  3839. if the string is not the same as any word found in any command
  3840. or parameter, i.e. is a word that the editor could not mistake
  3841. for a part of a command. MegaZeux will add the quotes for you if
  3842. the string meets these criteria. For example, "fifty" and "HONK"
  3843. will be auto-completed by MZX, but "Ammo", "N", "Goto", and "You
  3844. died" have to have the quotes typed in manually.
  3845. <span class="fE ">#</span>
  3846. Numbers are allowed to be integers within the range of
  3847. -2147483648 to 2147484647. Numbers can be replaced with a string
  3848. representing the name of a counter at any time. Examples of
  3849. legal numbers: 3200, -79k, .$FA9, "Ammo". They can also be
  3850. represented in hexadecimal, using $xxxx format. In this case,
  3851. xxxx can be any number from 0 to FFFF.
  3852. Numbers can not directly be allowed to go past the 16-bit
  3853. limits (-32768 to 32767) in Robotic commands, but this can be
  3854. easily circumvented by using constant expressions. Constant
  3855. expressions also allow larger hexadecimal numbers and octal
  3856. numbers; please view the expressions section for more detail.
  3857. Certain commands will limit numbers to the range of 0 to 255.
  3858. <a class="helplink" href="#EXPRESS.HLP__exp">Expressions</a>
  3859. <a class="helpanchor" name="COMMANDS.HLP__col"><span class="fE ">[color]</span></a>
  3860. The format for colors is cXX, where X is 0-9, A-F, or ?. The
  3861. first X represents the background color; the second X represents
  3862. the foreground color. The numbers and symbols represent the
  3863. following colors, by default:
  3864. 0 Black <span class="f0 ">(color #0)</span>
  3865. 1 Blue <span class="f1 ">(color #1)</span>
  3866. 2 Green <span class="f2 ">(color #2)</span>
  3867. 3 Cyan <span class="f3 ">(color #3)</span>
  3868. 4 Red <span class="f4 ">(color #4)</span>
  3869. 5 Purple <span class="f5 ">(color #5)</span>
  3870. 6 Brown <span class="f6 ">(color #6)</span>
  3871. 7 Lt. Gray <span class="f7 ">(color #7)</span>
  3872. 8 Dk. Gray <span class="f8 bF ">(color #8)</span>
  3873. 9 Lt. Blue <span class="f9 ">(color #9)</span>
  3874. 10 Lt. Green <span class="fA ">(color #10)</span>
  3875. 11 Lt. Cyan <span class="fB ">(color #11)</span>
  3876. 12 Lt. Red <span class="fC ">(color #12)</span>
  3877. 13 Lt. Purple <span class="fD ">(color #13)</span>
  3878. 14 Yellow <span class="fE ">(color #14)</span>
  3879. 15 White <span class="fF ">(color #15)</span>
  3880. ? Any color/No change in color
  3881. The UI uses its own set of protected colors, to prevent general
  3882. color edits from harming usability.
  3883. The use of ? is not always a logical option for some commands.
  3884. When used, it signifies to replace it with the current color or
  3885. ignore that part of the color for that command (or if used in
  3886. IF statements, signifies to accept any value in that field).
  3887. Colors may be selected from a menu within the Robot editor
  3888. using F2. Colors can also be replaced with the name of a
  3889. counter at any time. In this case, the value of the counter is
  3890. BK*16+FG, where BK and FG are 0-15. To use ?, use the following
  3891. values:
  3892. 256+FG = c?X
  3893. 272+BK = cX?
  3894. 288 = c??
  3895. A color of c?? will be inserted into commands when you do not
  3896. put down anything for the color. Examples of legal colors: cF9,
  3897. c02, c?5, c??, "Color".
  3898. While detecting colors of ?? is generally an accepted practice,
  3899. it's extremely discouraged to put colors of ?? or change to
  3900. them, with the exception of Sprites.
  3901. <a class="helplink" href="#BADPRACT.HLP__bad">Robotic Usages That Should be Avoided</a>
  3902. <span class="fE ">[char]</span>
  3903. Characters are a single character surrounded by apostrophes,
  3904. e.g. 'X'. X can be any character except #0. A character can be
  3905. selected from a menu in the Robot editor using F3. Numbers and
  3906. counters can be used to represent characters as well, with
  3907. values from 0 to 255 (other values will wrap around to be
  3908. 0-255). Examples of legal characters - 'a', '&#xE0B1;', 20, "Count".
  3909. Characters can also represent numbers, so typing in commands
  3910. like INC "health" '5' will most likely yield _much_ different
  3911. results than what was likely intended. However, for some usages
  3912. this use of chars is vastly superior to any other method (such
  3913. as when reading from the overlay onto strings).
  3914. Certain characters must be inputted in specific ways to avoid
  3915. problems with Robotic:
  3916. \0 for character 0
  3917. \t for tab (character 9)
  3918. \n for newline (character 10)
  3919. \r for carriage return (character 13)
  3920. \" for quotation mark
  3921. \\ for slash
  3922. MZX handles these conversions for you when using F3.
  3923. <a class="helpanchor" name="COMMANDS.HLP__dir"><span class="fE ">[dir]</span></a>
  3924. Directions are used to denote a direction on the board. A
  3925. direction is one of the following:
  3926. NORTH (or N or UP)
  3927. SOUTH (or S or DOWN)
  3928. EAST (or E or RIGHT)
  3929. WEST (or W or LEFT)
  3930. IDLE
  3931. NODIR
  3932. ANYDIR
  3933. RANDNS
  3934. RANDEW
  3935. RANDNE
  3936. RANDNB
  3937. RANDB
  3938. SEEK
  3939. FLOW
  3940. RANDANY
  3941. UNDER (or BENEATH)
  3942. The four cardinal directions (N, S, E, W) are self-explanatory.
  3943. Below are descriptions of the other directions.
  3944. <span class="fB ">IDLE</span>
  3945. No direction, as in the absence of any direction. Used with:
  3946. <a class="helpanchor" name="COMMANDS.HLP___w5"><span class="fA ">WALK [dir]</span></a>
  3947. <a class="helplink" href="#COMMANDS.HLP__con">Conditions</a>
  3948. <span class="fB ">NODIR</span>
  3949. No directions satisfy the condition. Used with:
  3950. <a class="helplink" href="#COMMANDS.HLP__con">Conditions</a>
  3951. <span class="fB ">ANYDIR</span>
  3952. Any direction satisfies the condition. Used with:
  3953. <a class="helplink" href="#COMMANDS.HLP__con">Conditions</a>
  3954. <span class="fB ">RANDNS</span>
  3955. Randomly either NORTH or SOUTH.
  3956. <span class="fB ">RANDEW</span>
  3957. Randomly either EAST or WEST.
  3958. <span class="fB ">RANDNE</span>
  3959. Randomly either NORTH or EAST.
  3960. <span class="fB ">RANDNB</span>
  3961. Randomly any direction where the Robot is not blocked by
  3962. something.
  3963. <span class="fB ">RANDB</span>
  3964. Randomly any direction where the Robot is blocked.
  3965. <span class="fB ">SEEK</span>
  3966. The direction closest to the player. If the player is on a
  3967. diagonal and is equally far away from the Robot vertically and
  3968. horizontally, the direction will randomly be one of the two
  3969. directions comprising the diagonal.
  3970. <span class="fB ">FLOW</span>
  3971. The direction that the Robot is currently walking.
  3972. <span class="fB ">RANDANY</span>
  3973. Randomly one of NORTH, SOUTH, EAST, or WEST.
  3974. <span class="fB ">UNDER</span>
  3975. The direction signifying whatever is BENEATH something, such
  3976. as floors. Often used with:
  3977. <a class="helpanchor" name="COMMANDS.HLP___l1"><span class="fA ">LAYBOMB [dir]</span></a>
  3978. <a class="helpanchor" name="COMMANDS.HLP___l2"><span class="fA ">LAYBOMB HIGH [dir]</span></a>
  3979. <a class="helplink" href="#COMMANDS.HLP__con">Conditions</a>
  3980. Most directions can be used with the following modifying
  3981. prefixes:
  3982. <span class="fB ">OPP</span>
  3983. The opposite direction. NORTH becomes SOUTH, etc.
  3984. <span class="fB ">CW</span>
  3985. The direction clockwise of the named direction. NORTH becomes
  3986. EAST, etc.
  3987. <span class="fB ">RANDP</span>
  3988. Randomly a direction perpendicular to the named direction.
  3989. NORTH becomes EAST or WEST, etc.
  3990. <span class="fB ">RANDNOT</span>
  3991. Randomly any direction OTHER than the given direction.
  3992. <span class="fE ">[thing]</span>
  3993. The name of any object from the editor, other than the player.
  3994. Use the name from the object list, minus any punctuation or
  3995. spaces. In addition to the things on the lists, you can use
  3996. Lazer for any lazer walls shot by lazer guns or Robots, and
  3997. OpenGate for a gate that has been opened. Examples of legal
  3998. things: Gem, CustomFloor, LitBomb, Robot.
  3999. <span class="fE ">[param]</span>
  4000. A code representing the settings for a thing. (see above) The
  4001. format is p# or p??. # is a hexadecimal code from 0 to FF. ??
  4002. represents settings that you don't care about or shouldn't
  4003. change. To enter parameter codes easily, use F4 in the Robot
  4004. editor after you have typed in an object name. p?? will be
  4005. inserted automatically any time you have a thing without a
  4006. parameter. Counters can also be used as parameters, as can
  4007. decimal numbers; to insert decimal numbers, place the number
  4008. in the proper location, but without the "p" before it.
  4009. p?? in an IF command will allow that command to accept all
  4010. params.
  4011. <span class="fE ">[item]</span>
  4012. One of the following: TIME, SCORE, GEMS, AMMOS, LIVES, LOBOMBS,
  4013. HIBOMBS, COINS, HEALTHS. Note the plural format; this
  4014. distinguishes items from things.
  4015. <span class="fE ">!<>=</span>
  4016. A conditional for comparing two numbers, counters or strings:
  4017. = or == Equal to
  4018. < Less than
  4019. > Greater than
  4020. <= or =< Less than or equal to
  4021. >= or => Greater than or equal to
  4022. != or <> or >< Not equal to
  4023. <a class="helpanchor" name="COMMANDS.HLP__con"><span class="fE ">[condition]</span></a>
  4024. A word, sometimes followed by a direction, signifying a certain
  4025. condition. Use in IF [condition] and IF NOT [condition] commands
  4026. to test whether a condition is currently present.
  4027. <span class="fB ">WALKING [dir]</span>
  4028. Tests whether the Robot is currently walking in a given
  4029. direction. IDLE, NODIR, and ANYDIR are allowed here.
  4030. <span class="fB ">SWIMMING</span>
  4031. Tests whether the Robot is currently in water.
  4032. <span class="fB ">FIREWALKING</span>
  4033. Tests whether the Robot is currently in either lava or fire.
  4034. <span class="fB ">TOUCHING [dir]</span>
  4035. Tests whether the player is next to the Robot in the given
  4036. direction. NODIR and ANYDIR are allowed here.
  4037. <span class="fB ">BLOCKED [dir]</span>
  4038. Tests whether the Robot is blocked by something in the given
  4039. direction. NODIR and ANYDIR are allowed here. This condition
  4040. has a special mode: if the IF command has a REL PLAYER prefix
  4041. before it, it will instead check next to the PLAYER for being
  4042. blocked. If the IF command has a REL COUNTERS prefix before
  4043. it, it will instead check next to the position pointed to by
  4044. the counters XPOS and YPOS.
  4045. <a class="helplink" href="#COMMAND2.HLP__pre">REL COUNTERS</a>
  4046. <a class="helplink" href="#COMMAND2.HLP___r2">REL PLAYER</a>
  4047. <span class="fB ">ALIGNED</span>
  4048. Tests whether the player is aligned with the Robot either
  4049. horizontally or vertically.
  4050. <span class="fB ">ALIGNEDNS</span>
  4051. <span class="fB ">ALIGNEDEW</span>
  4052. Tests whether the player is aligned with the Robot, but only
  4053. tests on the horizontal (EW) or vertical (NS) axis, not both
  4054. at once.
  4055. <span class="fB ">LASTSHOT [dir]</span>
  4056. Tests whether the last direction the Robot was shot in was
  4057. the given direction. For example, if the Robot had just been
  4058. shot on the north side, then LASTSHOT NORTH would be true.
  4059. <span class="fB ">LASTTOUCH [dir]</span>
  4060. Similar to the above; tests whether the last direction the
  4061. Robot was touched by the player is the given direction.
  4062. <span class="fB ">RIGHTPRESSED</span>
  4063. <span class="fB ">LEFTPRESSED</span>
  4064. <span class="fB ">UPPRESSED</span>
  4065. <span class="fB ">DOWNPRESSED</span>
  4066. <span class="fB ">SPACEPRESSED</span>
  4067. <span class="fB ">DELPRESSED</span>
  4068. Tests whether the indicated key is currently being held down.
  4069. <span class="fB ">MUSICON</span>
  4070. Tests whether digitized music and sound effects are currently
  4071. on.
  4072. <span class="fB ">PCSFXON</span>
  4073. Tests whether PC speaker sound effects are currently on.
  4074. <span class="fE ">Miscellaneous</span>
  4075. When typing in a command, the following symbols and words, as
  4076. well as spaces, can be used freely. They have no effect on the
  4077. final command and are only used to clarify its meaning.
  4078. , (comma)
  4079. ; (semicolon)
  4080. A
  4081. AN
  4082. AND
  4083. AS
  4084. AT
  4085. BY
  4086. ELSE
  4087. FOR
  4088. FROM
  4089. INTO
  4090. IS
  4091. OF
  4092. THE
  4093. THEN
  4094. THERE
  4095. THROUGH
  4096. THRU
  4097. TO
  4098. WITH
  4099. These will disappear from the line if "disassemble_extras" is
  4100. set to 0 in the config file. See the config file for further
  4101. details.
  4102. <a class="helplink" href="#CONFGINI.HLP__1st">The Config File</a>
  4103. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  4104. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  4105. <hr /></div>
  4106. <div class="helpfile" id="STRINGS.HLP">
  4107. <a class="helpanchor" name="STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  4108. <p class="helpcentered">Simple Strings</p>
  4109. Generally, a string is a series of symbols within quotes, such
  4110. as: "BUG", "Hi there!", and even "&#xE0C5;&#xE081;EA9 _&#xE00F;&#xE0B1;&#xE0C7;" or "". There are
  4111. two special aspects or features of strings that may be useful:
  4112. color coding, and counter interpolation.
  4113. <p class="helpcentered">Color</p>
  4114. Used in Robotic commands *, %, ?, and &, strings can contain
  4115. color codes. There are two color symbols: ~ for changing
  4116. foreground, and @ for changing background. These should be
  4117. followed by one of these characters:
  4118. 0 Black (color 0) 8 Dk. Gray (color 8)
  4119. 1 Blue (color 1) 9 Lt. Blue (color 9)
  4120. 2 Green (color 2) A Lt. Green (color 10)
  4121. 3 Cyan (color 3) B Lt. Cyan (color 11)
  4122. 4 Red (color 4) C Lt. Red (color 12)
  4123. 5 Purple (color 5) D Lt. Purple (color 13)
  4124. 6 Brown (color 6) E Yellow (color 14)
  4125. 7 Lt. Gray (color 7) F White (color 15)
  4126. To show a ~, use ~~. To show a @, use @@.
  4127. <p class="helpcentered">Counters</p>
  4128. Strings can show the values of counters, using the counter name
  4129. surrounded with &s. For example, if the player has 55 gems,
  4130. "You have &GEMS& gems." will become "You have 55 gems." If you
  4131. use &INPUT&, then the last inputted string will be shown. Use &&
  4132. to show a true '&'. The above features are available in nearly
  4133. ALL Robotic commands that use strings, including in the name of
  4134. OTHER counters. (The sole exception is in label names.) This
  4135. can be used to simulate array-like constructs.
  4136. <p class="helpcentered">Robotic Usage of Strings</p>
  4137. In Robotic, strings can be incredibly powerful. They can act
  4138. like counters, but hold text information as well as numbers
  4139. (however, counters are by far better-suited for number use).
  4140. A Robotic string is any counter prefixed by a $ sign (e.g.
  4141. "$string").
  4142. Certain characters must be inputted in specific ways to avoid
  4143. problems with Robotic:
  4144. \0 for character 0 (this won't be parsed correctly in strings)
  4145. \t for tab (character 9)
  4146. \n for newline (character 10)
  4147. \r for carriage return (character 13)
  4148. \" for quotation mark
  4149. \\ for slash
  4150. <p class="helpcentered">Robotic Usage - Setting Strings</p>
  4151. <span class="fB ">SET "$string" to "text"</span>
  4152. Sets the given string to the given line of text.
  4153. <span class="fB ">SET "$string" to "$string2"</span>
  4154. Sets the given string to the contents of another string.
  4155. <span class="fB ">SET "$string" to #</span>
  4156. Sets the string to an integer value. Notice that DEC commands
  4157. and other similar commands will not work arithmetically with
  4158. strings but instead clip and append to the string.
  4159. <p class="helpcentered">Robotic Usage - Outputting Strings</p>
  4160. Anywhere you can output a counter, you can output a string.
  4161. Simply encase the string name in ampersands. E.G.:
  4162. <span class="fE ">SET "$woohoo" to "My favorite song!"</span>
  4163. <span class="fE ">* "&$woohoo&"</span>
  4164. Would output "My favorite song!" in the message row.
  4165. There are several special things you can set strings to for
  4166. certain functions. These are listed in the Counters section.
  4167. <a class="helplink" href="#COUNTERS.HLP__stc">String Counters</a>
  4168. <p class="helpcentered">Robotic Usage - Comparing Strings</p>
  4169. String comparisons are case-insensitive unless stated otherwise.
  4170. Allowed comparisons are to a line of text, to another string and
  4171. to a number. However, the string is required to be the first
  4172. item, and string counters such as "MOD_NAME", "BOARD_SCAN", etc.
  4173. are not valid comparisons.
  4174. Strings can be compared through these commands:
  4175. <span class="fB ">IF "$string" = "value" then "label" (equality)</span>
  4176. <span class="fB ">IF "$string" != "value" then "label" (inequality)</span>
  4177. <span class="fB ">IF "$string" > "value" "label" (greater than)</span>
  4178. <span class="fB ">IF "$string" < "value" "label" (less than)</span>
  4179. <span class="fB ">IF "$string" >= "value" "label" (greater than or equal to)</span>
  4180. <span class="fB ">IF "$string" <= "value" "label" (less than or equal to)</span>
  4181. <span class="fB ">IF "$string" === "value" then "label" (case-sensitive equality)</span>
  4182. Strings can also be compared using wildcards. There are two
  4183. special wildcard characters: the ? character in the value being
  4184. compared against matches any one character, while the %
  4185. character matches any number of any characters (including zero).
  4186. The wildcard commands are:
  4187. <span class="fB ">IF "$string" ?= "value" then "label"</span>
  4188. <span class="fB ">IF "$string" ?== "value" then "label" (case-sensitive)</span>
  4189. Due to their use as a token, actual ? and % characters must be
  4190. escaped to be checked for in wildcard comparisons. Use \\? and
  4191. \\% to have values that check for literal use of these
  4192. characters.
  4193. <p class="helpcentered">Robotic Usage - Manipulating Strings</p>
  4194. Firstly, strings can be offset and limited ("spliced").
  4195. <span class="fB ">$strname#X</span><span class="fF "> will cap the string to X characters in length.</span>
  4196. <span class="fB ">$strname+X</span><span class="fF "> will offset the start of the string by X</span>
  4197. characters. Using a negative number will offset the start of
  4198. the string backwards from the end of the string by X characters,
  4199. with -1 as the end character.
  4200. <span class="fB ">$strname+X#Y</span><span class="fF "> will offset the string by X characters and limit</span>
  4201. the string to Y characters in length.
  4202. Normally string splicing is used to read a given selection of a
  4203. string; however, it can also be used for writing to parts of
  4204. strings. When you set an offset when setting a string, the
  4205. length of the string will not decrease, so you'll only
  4206. manipulate a portion of the string. For instance:
  4207. <span class="fB ">set "$str" "hello"</span>
  4208. <span class="fB ">set "$str+1" "LOL"</span>
  4209. Will cause $str to have the value "hLOLo".
  4210. Writing to parts of strings with an offset also changes how the
  4211. string limit works; any length cap will limit how much of the
  4212. spliced-in material is inserted instead of limiting the string
  4213. length in total. For instance:
  4214. <span class="fB "> set "$str" "Baby steps."</span>
  4215. <span class="fB "> set "$str+0#4" "Long journey."</span>
  4216. Will cause $str to have the value "Long steps."
  4217. <span class="fB ">$strname.X</span><span class="fF "> will manipulate the Xth character in a string</span>
  4218. (starting from 0). When used for output, it will give the
  4219. character value of the given character in a string. Any invalid
  4220. numbers (past the terminator) are given a value of 0. This
  4221. command works well with char immediates:
  4222. E.G. SET "$string.0" 'S' . When setting the character in a
  4223. string it will make the string length one larger than X, so be
  4224. careful when using very large values.
  4225. Using negative numbers will manipulate using the end of the
  4226. string as its basis: -X will manipulate the Xth character from
  4227. the end of the string, with -1 being the end character.
  4228. <span class="fB ">$strname.X#Y</span><span class="fF "> will manipulate characters in the string from the</span>
  4229. Xth character (starting from 0), up to character (X+Y-1). Y can
  4230. be a number from 1 to 4; all other values for Y are clamped to
  4231. fit this range. The string given or output acts as a number 8*Y
  4232. bits in length.
  4233. <span class="fB ">$str.length</span><span class="fF "> will give the length of the given string.</span>
  4234. Secondly, strings can be clipped, appended or written to from
  4235. the board or overlay.
  4236. <span class="fB ">INC "$string" "$string2"</span>
  4237. <span class="fB ">INC "$string" "text"</span>
  4238. These two commands append another string's contents or text,
  4239. respectively, to the end of a given string.
  4240. <span class="fB ">DEC "$string" #</span>
  4241. This command clips the given number of characters from the end
  4242. of a string. # is treated as unsigned so using negative numbers
  4243. will probably cause the length to go down to zero.
  4244. <span class="fB ">COPY BLOCK x y w h "$string" t</span>
  4245. <span class="fB ">COPY OVERLAY BLOCK x y w h "$string" t</span>
  4246. These commands copy information from the board or overlay,
  4247. respectively, to a given string. X and Y are the coordinates
  4248. of the upper-left corner of the block; W and H are its width
  4249. and height; T is the terminating character. For T, one can put
  4250. in a counter with the param value of the desired terminator
  4251. character or a char immediate in the form 'c' (not just the
  4252. character itself). If "t" is 0 there will be no terminator.
  4253. The letters are added from left to right and up to down until
  4254. the terminator character is reached, or until the end of the
  4255. given block is reached. If x and y begin with a pound sign (#),
  4256. the string will instead be read from the vlayer.
  4257. Please use this method of scanning strings instead of
  4258. BOARD_SCAN.
  4259. <p class="helpcentered">Robotic Usage - File Access</p>
  4260. Finally, strings can be used for loading and saving several MZX
  4261. file formats. The following formats can be loaded from a string:
  4262. -Palettes with <span class="fB ">LOAD PALETTE "$string"</span>
  4263. -Charsets with <span class="fB ">LOAD CHAR SET "$string"</span>
  4264. -Robots with <span class="fB ">SET "$string" "LOAD_ROBOT"</span>
  4265. -MZMs with <span class="fB ">PUT "@$string" image_file pNN x y</span>
  4266. MZMs can be saved into a string via these methods:
  4267. <span class="fB ">COPY BLOCK x y w h "@$string" p</span>
  4268. <span class="fB ">COPY OVERLAY BLOCK x y w h "@$string" p</span>
  4269. <span class="fB ">COPY (OVERLAY) BLOCK "#x" "#y" w h "@$string" m</span>
  4270. String splicing is valid for string file operations.
  4271. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  4272. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  4273. <hr /></div>
  4274. <div class="helpfile" id="COMMANDR.HLP">
  4275. <a class="helpanchor" name="COMMANDR.HLP__1st"> </a>
  4276. <p class="helpcentered"><span class="f9 ">Command Reference</span></p>
  4277. The following table is a list of all Robotic commands in
  4278. MegaZeux. They are listed as help links, in alphabetical order.
  4279. After the table are the actual command descriptions, in order
  4280. of importance/difficulty. Note that because of its size, the
  4281. command reference is split into two parts.
  4282. <a class="helplink" href="#COMMANDR.HLP____1">% "string"</a>
  4283. <a class="helplink" href="#COMMANDR.HLP____2">& "string"</a>
  4284. <a class="helplink" href="#COMMANDR.HLP____3">* "string"</a>
  4285. <a class="helplink" href="#COMMANDR.HLP____4">. "string"</a>
  4286. <a class="helplink" href="#COMMANDR.HLP___4b">. "@string"</a>
  4287. <a class="helplink" href="#COMMANDR.HLP____5">/ "string"</a>
  4288. <a class="helplink" href="#COMMANDR.HLP____6">: "label"</a>
  4289. <a class="helplink" href="#COMMANDR.HLP____7">? "counter" "label" "string"</a>
  4290. <a class="helplink" href="#COMMANDR.HLP____8">? "label" "string"</a>
  4291. <a class="helplink" href="#COMMANDR.HLP____9">[ "string"</a>
  4292. <a class="helplink" href="#COMMAND2.HLP____0">| "label"</a>
  4293. <a class="helplink" href="#COMMANDR.HLP___a1">ABORT LOOP</a>
  4294. <a class="helplink" href="#COMMAND2.HLP___a2">ASK "string"</a>
  4295. <a class="helplink" href="#COMMAND2.HLP___a3">AVALANCHE</a>
  4296. <a class="helplink" href="#COMMANDR.HLP___b1">BECOME [color] [thing] [param]</a>
  4297. <a class="helplink" href="#COMMAND2.HLP___b2">BECOME NONLAVAWALKER</a>
  4298. <a class="helplink" href="#COMMAND2.HLP___b3">BECOME NONPUSHABLE</a>
  4299. <a class="helplink" href="#COMMAND2.HLP___b4">BECOME LAVAWALKER</a>
  4300. <a class="helplink" href="#COMMAND2.HLP___b5">BECOME PUSHABLE</a>
  4301. <a class="helplink" href="#COMMAND2.HLP___b6">BLIND #</a>
  4302. <a class="helplink" href="#COMMAND2.HLP___b7">BOARD [dir] "string"</a>
  4303. <a class="helplink" href="#COMMAND2.HLP___b8">BOARD [dir] NONE</a>
  4304. <a class="helplink" href="#COMMAND2.HLP___b9">BULLETCOLOR [color]</a>
  4305. <a class="helplink" href="#COMMAND2.HLP___b0">BULLETE [char]</a>
  4306. <a class="helplink" href="#COMMAND2.HLP___bA">BULLETN [char]</a>
  4307. <a class="helplink" href="#COMMAND2.HLP___bB">BULLETS [char]</a>
  4308. <a class="helplink" href="#COMMAND2.HLP___bC">BULLETW [char]</a>
  4309. <a class="helplink" href="#COMMAND2.HLP___c1">CENTER MESG</a>
  4310. <a class="helplink" href="#COMMANDR.HLP___c2">CHANGE [color] [thing] [param] [color] [thing] [param]</a>
  4311. <a class="helplink" href="#COMMAND2.HLP___c3">CHANGE CHAR ID # [char]</a>
  4312. <a class="helplink" href="#COMMAND2.HLP___c4">CHANGE OVERLAY [color] [char] [color] [char]</a>
  4313. <a class="helplink" href="#COMMAND2.HLP___c5">CHANGE OVERLAY [color] [color]</a>
  4314. <a class="helplink" href="#COMMAND2.HLP___c6">CHANGE SFX # "string"</a>
  4315. <a class="helplink" href="#COMMAND2.HLP___c7">CHANGE THICK ARROW CHAR [dir] [char]</a>
  4316. <a class="helplink" href="#COMMAND2.HLP___c8">CHANGE THIN ARROW CHAR [dir] [char]</a>
  4317. <a class="helplink" href="#COMMANDR.HLP___c9">CHAR [char]</a>
  4318. <a class="helplink" href="#COMMAND2.HLP___c0">CHAR EDIT [char] # # # # # # # # # # # # # #</a>
  4319. <a class="helplink" href="#COMMAND2.HLP___cA">CLEAR MESG</a>
  4320. <a class="helplink" href="#COMMAND2.HLP___cB">CLIP INPUT</a>
  4321. <a class="helplink" href="#COMMANDR.HLP___cC">COLOR [color]</a>
  4322. <a class="helplink" href="#COMMANDR.HLP___cD">COLOR FADE OUT</a>
  4323. <a class="helplink" href="#COMMANDR.HLP___cE">COLOR FADE IN</a>
  4324. <a class="helplink" href="#COMMAND2.HLP___cF">COLOR INTENSITY # PERCENT</a>
  4325. <a class="helplink" href="#COMMAND2.HLP___cG">COLOR INTENSITY # # PERCENT</a>
  4326. <a class="helplink" href="#COMMAND2.HLP___cH">COPY # # # #</a>
  4327. <a class="helplink" href="#COMMAND2.HLP___cI">COPY [dir] [dir]</a>
  4328. <a class="helplink" href="#COMMAND2.HLP___cJ">COPY BLOCK # # # # # #</a>
  4329. <a class="helplink" href="#COMMAND2.HLP___cK">COPY CHAR [char] [char]</a>
  4330. <a class="helplink" href="#COMMAND2.HLP___cL">COPY OVERLAY BLOCK # # # # # #</a>
  4331. <a class="helplink" href="#COMMAND2.HLP___cQ">COPY BLOCK # # # # "@filename" #</a>
  4332. <a class="helplink" href="#COMMAND2.HLP___cR">COPY OVERLAY BLOCK # # # # "@filename" #</a>
  4333. <a class="helplink" href="#COMMAND2.HLP___cS">COPY (OVERLAY) BLOCK "#x" "#y" # # "@filename" #</a>
  4334. <a class="helplink" href="#COMMAND2.HLP___cT">COPY BLOCK # # # # "$string" #</a>
  4335. <a class="helplink" href="#COMMAND2.HLP___cU">COPY OVERLAY BLOCK # # # # "$string" #</a>
  4336. <a class="helplink" href="#COMMAND2.HLP___cV">COPY (OVERLAY) BLOCK "#x" "#y" # # "$string" #</a>
  4337. <a class="helplink" href="#COMMAND2.HLP___cW">COPY BLOCK # # # # "#x" "#y"</a>
  4338. <a class="helplink" href="#COMMAND2.HLP___cX">COPY OVERLAY BLOCK # # # # "#x" "#y"</a>
  4339. <a class="helplink" href="#COMMAND2.HLP___cY">COPY BLOCK "#x" "#y" # # # #</a>
  4340. <a class="helplink" href="#COMMAND2.HLP___cZ">COPY OVERLAY BLOCK "#x" "#y" # # # #</a>
  4341. <a class="helplink" href="#COMMAND2.HLP___cAA">COPY (OVERLAY) BLOCK "#x1" "#y1" # # "#x2" "#y2"</a>
  4342. <a class="helplink" href="#COMMANDR.HLP___cM">COPYROBOT "Robot"</a>
  4343. <a class="helplink" href="#COMMANDR.HLP___cN">COPYROBOT # #</a>
  4344. <a class="helplink" href="#COMMANDR.HLP___cO">COPYROBOT [dir]</a>
  4345. <a class="helplink" href="#COMMANDR.HLP___cP">CYCLE #</a>
  4346. <a class="helplink" href="#COMMANDR.HLP___d1">DEC "counter" #</a>
  4347. <a class="helplink" href="#COMMANDR.HLP___d2">DEC "counter" RANDOM # #</a>
  4348. <a class="helplink" href="#COMMAND2.HLP___dA">DEC "$string" #</a>
  4349. <a class="helplink" href="#COMMANDR.HLP___d3">DIE</a>
  4350. <a class="helplink" href="#COMMANDR.HLP___d4">DIE ITEM</a>
  4351. <a class="helplink" href="#COMMAND2.HLP___d5">DISABLE MESG EDGE</a>
  4352. <a class="helplink" href="#COMMAND2.HLP___d6">DISABLE SAVING</a>
  4353. <a class="helplink" href="#COMMANDR.HLP___d7">DIVIDE "counter" #</a>
  4354. <a class="helplink" href="#COMMANDR.HLP___d8">DOUBLE "counter"</a>
  4355. <a class="helplink" href="#COMMANDR.HLP___d9">DUPLICATE SELF # #</a>
  4356. <a class="helplink" href="#COMMANDR.HLP___d0">DUPLICATE SELF [dir]</a>
  4357. <a class="helplink" href="#COMMANDR.HLP___e1">END</a>
  4358. <a class="helplink" href="#COMMANDR.HLP___e2">END MOD</a>
  4359. <a class="helplink" href="#COMMANDR.HLP___e3">END PLAY</a>
  4360. <a class="helplink" href="#COMMANDR.HLP___e4">END SAM</a>
  4361. <a class="helplink" href="#COMMANDR.HLP___e5">ENDGAME</a>
  4362. <a class="helplink" href="#COMMANDR.HLP___e6">ENDLIFE</a>
  4363. <a class="helplink" href="#COMMAND2.HLP___e7">ENABLE MESG EDGE</a>
  4364. <a class="helplink" href="#COMMAND2.HLP___e8">ENABLE SAVING</a>
  4365. <a class="helplink" href="#COMMAND2.HLP___e9">ENABLE SENSORONLY SAVING</a>
  4366. <a class="helplink" href="#COMMAND2.HLP___e0">ENEMY BULLETCOLOR [color]</a>
  4367. <a class="helplink" href="#COMMAND2.HLP___eA">ENEMY BULLETE [char]</a>
  4368. <a class="helplink" href="#COMMAND2.HLP___eB">ENEMY BULLETN [char]</a>
  4369. <a class="helplink" href="#COMMAND2.HLP___eC">ENEMY BULLETS [char]</a>
  4370. <a class="helplink" href="#COMMAND2.HLP___eD">ENEMY BULLETW [char]</a>
  4371. <a class="helplink" href="#COMMAND2.HLP___eE">EXCHANGE PLAYER POSITION</a>
  4372. <a class="helplink" href="#COMMAND2.HLP___eF">EXCHANGE PLAYER POSITION #</a>
  4373. <a class="helplink" href="#COMMAND2.HLP___eG">EXCHANGE PLAYER POSITION # DUPLICATE SELF</a>
  4374. <a class="helplink" href="#COMMANDR.HLP___eH">EXPLODE #</a>
  4375. <a class="helplink" href="#COMMAND2.HLP___f1">FIREWALKER #</a>
  4376. <a class="helplink" href="#COMMAND2.HLP___f2">FILLHEALTH</a>
  4377. <a class="helplink" href="#COMMAND2.HLP___f3">FLIP CHAR [char] [dir]</a>
  4378. <a class="helplink" href="#COMMAND2.HLP___f4">FREEZETIME #</a>
  4379. <a class="helplink" href="#COMMAND2.HLP___g1">GIVE # [item]</a>
  4380. <a class="helplink" href="#COMMAND2.HLP___g2">GIVEKEY [color]</a>
  4381. <a class="helplink" href="#COMMAND2.HLP___g3">GIVEKEY [color] "label"</a>
  4382. <a class="helplink" href="#COMMANDR.HLP___g4">GO [dir] #</a>
  4383. <a class="helplink" href="#COMMANDR.HLP___g5">GOTO "label"</a>
  4384. <a class="helplink" href="#COMMANDR.HLP___g6">GOTO "#return"</a>
  4385. <a class="helplink" href="#COMMANDR.HLP___g7">GOTO "#top"</a>
  4386. <a class="helplink" href="#COMMANDR.HLP___g8">GOTOXY # #</a>
  4387. <a class="helplink" href="#COMMANDR.HLP___h1">HALF "counter"</a>
  4388. <a class="helplink" href="#COMMANDR.HLP___i1">IF "counter" !<>= # "label"</a>
  4389. <a class="helplink" href="#COMMAND2.HLP___i2">IF [condition] "label"</a>
  4390. <a class="helplink" href="#COMMAND2.HLP___i3">IF # # "label"</a>
  4391. <a class="helplink" href="#COMMAND2.HLP___i4">IF [dir] PLAYER [color] [thing] [param] "label"</a>
  4392. <a class="helplink" href="#COMMAND2.HLP___i5">IF [color] [thing] [param] # # "label"</a>
  4393. <a class="helplink" href="#COMMAND2.HLP___i6">IF [color] [thing] [param] [dir] "label"</a>
  4394. <a class="helplink" href="#COMMAND2.HLP___i7">IF ALIGNEDROBOT "Robot" "label"</a>
  4395. <a class="helplink" href="#COMMAND2.HLP___i8">IF ANY [color] [thing] [param] "label"</a>
  4396. <a class="helplink" href="#COMMAND2.HLP___i9">IF FIRST STRING "string" "label"</a>
  4397. <a class="helplink" href="#COMMAND2.HLP___i0">IF NO [color] [thing] [param] "label"</a>
  4398. <a class="helplink" href="#COMMAND2.HLP___iA">IF NOT [color] [thing] [param] [dir] "label"</a>
  4399. <a class="helplink" href="#COMMAND2.HLP___iB">IF NOT [condition] "label"</a>
  4400. <a class="helplink" href="#COMMAND2.HLP___iC">IF PLAYER # # "label"</a>
  4401. <a class="helplink" href="#COMMAND2.HLP___iD">IF STRING "string" "label"</a>
  4402. <a class="helplink" href="#COMMAND2.HLP___iE">IF STRING MATCHES "string" "label"</a>
  4403. <a class="helplink" href="#COMMAND2.HLP___iF">IF STRING NOT "string" "label"</a>
  4404. <a class="helplink" href="#COMMAND2.HLP___iO">IF "$string" (equality) # "label"</a>
  4405. <a class="helplink" href="#COMMAND2.HLP___iK">IF "$string" (equality) "text" "label"</a>
  4406. <a class="helplink" href="#COMMAND2.HLP___iL">IF "$string" (equality) "$string2" "label"</a>
  4407. <a class="helplink" href="#COMMAND2.HLP___iG">IF c?? Sprite_Colliding pNN # # "label"</a>
  4408. <a class="helplink" href="#COMMAND2.HLP___iH">IF c?? Sprite p?? # # "label"</a>
  4409. <a class="helplink" href="#COMMAND2.HLP___iM">INC "$string" "text"</a>
  4410. <a class="helplink" href="#COMMAND2.HLP___iN">INC "$string" "$string2"</a>
  4411. <a class="helplink" href="#COMMANDR.HLP___iI">INC "counter" #</a>
  4412. <a class="helplink" href="#COMMANDR.HLP___iJ">INC "counter" RANDOM # #</a>
  4413. <a class="helplink" href="#COMMAND2.HLP___iP">INPUT STRING "string"</a>
  4414. <a class="helplink" href="#COMMAND2.HLP___j1">JUMP MOD ORDER #</a>
  4415. <a class="helplink" href="#COMMAND2.HLP___l1">LAYBOMB [dir]</a>
  4416. <a class="helplink" href="#COMMAND2.HLP___l2">LAYBOMB HIGH [dir]</a>
  4417. <a class="helplink" href="#COMMAND2.HLP___l3">LAZERWALL [dir] #</a>
  4418. <a class="helplink" href="#COMMAND2.HLP___l4">LOAD CHAR SET "file"</a>
  4419. <a class="helplink" href="#COMMAND2.HLP___l5">LOAD PALETTE "file"</a>
  4420. <a class="helplink" href="#COMMAND2.HLP___l6">LOCKPLAYER</a>
  4421. <a class="helplink" href="#COMMAND2.HLP___l7">LOCKPLAYER ATTACK</a>
  4422. <a class="helplink" href="#COMMAND2.HLP___l8">LOCKPLAYER EW</a>
  4423. <a class="helplink" href="#COMMAND2.HLP___l9">LOCKPLAYER NS</a>
  4424. <a class="helplink" href="#COMMAND2.HLP___l0">LOCKSCROLL</a>
  4425. <a class="helplink" href="#COMMANDR.HLP___lA">LOCKSELF</a>
  4426. <a class="helplink" href="#COMMANDR.HLP___lB">LOOP #</a>
  4427. <a class="helplink" href="#COMMANDR.HLP___lC">LOOP START</a>
  4428. <a class="helplink" href="#COMMAND2.HLP___m1">MESSAGE ROW #</a>
  4429. <a class="helplink" href="#COMMAND2.HLP___m2">MISSILECOLOR [color]</a>
  4430. <a class="helplink" href="#COMMANDR.HLP___m3">MOD "file"</a>
  4431. <a class="helplink" href="#COMMAND2.HLP___m4">MOD FADE # #</a>
  4432. <a class="helplink" href="#COMMAND2.HLP___m5">MOD FADE IN "file"</a>
  4433. <a class="helplink" href="#COMMAND2.HLP___m6">MOD FADE OUT</a>
  4434. <a class="helplink" href="#COMMAND2.HLP___m7">MOD SAM # #</a>
  4435. <a class="helplink" href="#COMMANDR.HLP___m8">MOD "*"</a>
  4436. <a class="helplink" href="#COMMANDR.HLP___m9">MODULO "counter" #</a>
  4437. <a class="helplink" href="#COMMAND2.HLP___m0">MOVE ALL [color] [thing] [param] [dir]</a>
  4438. <a class="helplink" href="#COMMANDR.HLP___mA">MOVE PLAYER [dir]</a>
  4439. <a class="helplink" href="#COMMANDR.HLP___mB">MOVE PLAYER [dir] "label"</a>
  4440. <a class="helplink" href="#COMMANDR.HLP___mC">MULTIPLY "counter" #</a>
  4441. <a class="helplink" href="#COMMAND2.HLP___n1">NEUTRAL BULLETCOLOR [color]</a>
  4442. <a class="helplink" href="#COMMAND2.HLP___n2">NEUTRAL BULLETE [char]</a>
  4443. <a class="helplink" href="#COMMAND2.HLP___n3">NEUTRAL BULLETN [char]</a>
  4444. <a class="helplink" href="#COMMAND2.HLP___n4">NEUTRAL BULLETS [char]</a>
  4445. <a class="helplink" href="#COMMAND2.HLP___n5">NEUTRAL BULLETW [char]</a>
  4446. <a class="helplink" href="#COMMAND2.HLP___o1">OPEN [dir]</a>
  4447. <a class="helplink" href="#COMMAND2.HLP___o2">OVERLAY ON</a>
  4448. <a class="helplink" href="#COMMAND2.HLP___o3">OVERLAY STATIC</a>
  4449. <a class="helplink" href="#COMMAND2.HLP___o4">OVERLAY TRANSPARENT</a>
  4450. <a class="helplink" href="#COMMANDR.HLP___p1">PERSISTENT GO "string"</a>
  4451. <a class="helplink" href="#COMMANDR.HLP___p2">PLAY "string"</a>
  4452. <a class="helplink" href="#COMMANDR.HLP___p3">PLAY SFX "string"</a>
  4453. <a class="helplink" href="#COMMAND2.HLP___p4">PLAYER BULLETCOLOR [color]</a>
  4454. <a class="helplink" href="#COMMAND2.HLP___p5">PLAYER BULLETE [char]</a>
  4455. <a class="helplink" href="#COMMAND2.HLP___p6">PLAYER BULLETN [char]</a>
  4456. <a class="helplink" href="#COMMAND2.HLP___p7">PLAYER BULLETS [char]</a>
  4457. <a class="helplink" href="#COMMAND2.HLP___p8">PLAYER BULLETW [char]</a>
  4458. <a class="helplink" href="#COMMANDR.HLP___p9">PLAYER CHAR [dir] [char]</a>
  4459. <a class="helplink" href="#COMMANDR.HLP___p0">PLAYER CHAR [char]</a>
  4460. <a class="helplink" href="#COMMANDR.HLP___pA">PLAYERCOLOR [color]</a>
  4461. <a class="helplink" href="#COMMAND2.HLP___pB">PUSH [dir]</a>
  4462. <a class="helplink" href="#COMMANDR.HLP___pC">PUT [color] [thing] [param] # #</a>
  4463. <a class="helplink" href="#COMMANDR.HLP___pD">PUT [color] [thing] [param] [dir]</a>
  4464. <a class="helplink" href="#COMMAND2.HLP___pE">PUT [color] [char] OVERLAY # #</a>
  4465. <a class="helplink" href="#COMMANDR.HLP___pF">PUT [color] [thing] [param] [dir] PLAYER</a>
  4466. <a class="helplink" href="#COMMANDR.HLP___pG">PUT PLAYER # #</a>
  4467. <a class="helplink" href="#COMMANDR.HLP___pH">PUT PLAYER [dir]</a>
  4468. <a class="helplink" href="#COMMANDR.HLP___pI">PUT "@FILENAME.XXX" Image_File [param] # #</a>
  4469. <a class="helplink" href="#COMMANDR.HLP___pJ">PUT [color] Sprite [param] # #</a>
  4470. <a class="helplink" href="#COMMAND2.HLP__pre">REL COUNTERS</a>
  4471. <a class="helplink" href="#COMMAND2.HLP___r2">REL PLAYER</a>
  4472. <a class="helplink" href="#COMMAND2.HLP___r3">REL SELF</a>
  4473. <a class="helplink" href="#COMMAND2.HLP___r4">REL COUNTERS FIRST</a>
  4474. <a class="helplink" href="#COMMAND2.HLP___r5">REL PLAYER FIRST</a>
  4475. <a class="helplink" href="#COMMAND2.HLP___r6">REL SELF FIRST</a>
  4476. <a class="helplink" href="#COMMAND2.HLP___r7">REL COUNTERS LAST</a>
  4477. <a class="helplink" href="#COMMAND2.HLP___r8">REL PLAYER LAST</a>
  4478. <a class="helplink" href="#COMMAND2.HLP___r9">REL SELF LAST</a>
  4479. <a class="helplink" href="#COMMAND2.HLP___r0">RESETVIEW</a>
  4480. <a class="helplink" href="#COMMAND2.HLP___rA">RESTORE "label" #</a>
  4481. <a class="helplink" href="#COMMAND2.HLP___rB">RESTORE PLAYER POSITION</a>
  4482. <a class="helplink" href="#COMMAND2.HLP___rC">RESTORE PLAYER POSITION #</a>
  4483. <a class="helplink" href="#COMMAND2.HLP___rD">RESTORE PLAYER POSITION # DUPLICATE SELF</a>
  4484. <a class="helplink" href="#COMMAND2.HLP___rE">ROTATECW</a>
  4485. <a class="helplink" href="#COMMAND2.HLP___rF">ROTATECCW</a>
  4486. <a class="helplink" href="#COMMANDR.HLP___s1">SAM # "file"</a>
  4487. <a class="helplink" href="#COMMAND2.HLP___s2">SAVE PLAYER POSITION</a>
  4488. <a class="helplink" href="#COMMAND2.HLP___s3">SAVE PLAYER POSITION #</a>
  4489. <a class="helplink" href="#COMMAND2.HLP___s4">SCROLL CHAR [char] [dir]</a>
  4490. <a class="helplink" href="#COMMAND2.HLP___s5">SCROLLARROW COLOR [color]</a>
  4491. <a class="helplink" href="#COMMAND2.HLP___s6">SCROLLBASE COLOR [color]</a>
  4492. <a class="helplink" href="#COMMAND2.HLP___s7">SCROLLCORNER COLOR [color]</a>
  4493. <a class="helplink" href="#COMMAND2.HLP___s8">SCROLLPOINTER COLOR [color]</a>
  4494. <a class="helplink" href="#COMMAND2.HLP___s9">SCROLLTITLE COLOR [color]</a>
  4495. <a class="helplink" href="#COMMAND2.HLP___s0">SCROLLVIEW [dir] #</a>
  4496. <a class="helplink" href="#COMMAND2.HLP___sA">SCROLLVIEW POSITION # #</a>
  4497. <a class="helplink" href="#COMMANDR.HLP___sB">SEND # # "label"</a>
  4498. <a class="helplink" href="#COMMANDR.HLP___sC">SEND "Robot" "label"</a>
  4499. <a class="helplink" href="#COMMANDR.HLP___sD">SEND [dir] "label"</a>
  4500. <a class="helplink" href="#COMMANDR.HLP___sE">SEND [dir] PLAYER "label"</a>
  4501. <a class="helplink" href="#COMMANDR.HLP___sF">SET "counter" #</a>
  4502. <a class="helplink" href="#COMMANDR.HLP___sG">SET "counter" RANDOM # #</a>
  4503. <a class="helplink" href="#COMMANDR.HLP___sH">SET "$string" "text"</a>
  4504. <a class="helplink" href="#COMMANDR.HLP___sI">SET "$string1" "$string2"</a>
  4505. <a class="helplink" href="#COMMANDR.HLP___sJ">SET "$string" #</a>
  4506. <a class="helplink" href="#COMMAND2.HLP___sK">SET COLOR # # # #</a>
  4507. <a class="helplink" href="#COMMAND2.HLP___sL">SET EDGE COLOR [color]</a>
  4508. <a class="helplink" href="#COMMAND2.HLP___sM">SET MAXHEALTH #</a>
  4509. <a class="helplink" href="#COMMAND2.HLP___sN">SET MESG COLUMN #</a>
  4510. <a class="helplink" href="#COMMANDR.HLP___sO">SFX #</a>
  4511. <a class="helplink" href="#COMMANDR.HLP___sP">SHOOT [dir]</a>
  4512. <a class="helplink" href="#COMMANDR.HLP___sQ">SHOOTMISSILE [dir]</a>
  4513. <a class="helplink" href="#COMMANDR.HLP___sR">SHOOTSEEKER [dir]</a>
  4514. <a class="helplink" href="#COMMAND2.HLP___sS">SLOWTIME #</a>
  4515. <a class="helplink" href="#COMMANDR.HLP___sT">SPITFIRE [dir]</a>
  4516. <a class="helplink" href="#COMMAND2.HLP___sU">STATUS COUNTER # "counter"</a>
  4517. <a class="helplink" href="#COMMAND2.HLP___sV">SWAP WORLD "file"</a>
  4518. <a class="helplink" href="#COMMAND2.HLP___sW">SWITCH [dir] [dir]</a>
  4519. <a class="helplink" href="#COMMAND2.HLP___t1">TAKE # [item]</a>
  4520. <a class="helplink" href="#COMMAND2.HLP___t2">TAKE # [item] "label"</a>
  4521. <a class="helplink" href="#COMMAND2.HLP___t3">TAKEKEY [color]</a>
  4522. <a class="helplink" href="#COMMAND2.HLP___t4">TAKEKEY [color] "label"</a>
  4523. <a class="helplink" href="#COMMAND2.HLP___t5">TELEPORT PLAYER "string" # #</a>
  4524. <a class="helplink" href="#COMMAND2.HLP___t6">TRADE # [item] # [item] "label"</a>
  4525. <a class="helplink" href="#COMMANDR.HLP___t7">TRY [dir] "label"</a>
  4526. <a class="helplink" href="#COMMAND2.HLP___u1">UNLOCKPLAYER</a>
  4527. <a class="helplink" href="#COMMAND2.HLP___u2">UNLOCKSCROLL</a>
  4528. <a class="helplink" href="#COMMANDR.HLP___u3">UNLOCKSELF</a>
  4529. <a class="helplink" href="#COMMAND2.HLP___v1">VIEWPORT # #</a>
  4530. <a class="helplink" href="#COMMAND2.HLP___v2">VIEWPORT SIZE # #</a>
  4531. <a class="helplink" href="#COMMANDR.HLP___v3">VOLUME #</a>
  4532. <a class="helplink" href="#COMMANDR.HLP___w1">WAIT #</a>
  4533. <a class="helplink" href="#COMMAND2.HLP___w2">WAIT MOD FADE</a>
  4534. <a class="helplink" href="#COMMAND2.HLP___w3">WAIT PLAY</a>
  4535. <a class="helplink" href="#COMMANDR.HLP___w4">WAIT PLAY "string"</a>
  4536. <a class="helplink" href="#COMMANDR.HLP___w5">WALK [dir]</a>
  4537. <a class="helplink" href="#COMMAND2.HLP___w6">WIND #</a>
  4538. <a class="helplink" href="#COMMAND2.HLP___w7">WRITE OVERLAY [color] "string" # #</a>
  4539. <a class="helplink" href="#COMMAND2.HLP___z1">ZAP "label" #</a>
  4540. <p class="helpcentered">Command Descriptions</p>
  4541. <a class="helpanchor" name="COMMANDR.HLP____3"><span class="fA ">* "string"</span></a>
  4542. This command displays the given string as a message on the
  4543. message line, at the bottom of the screen by default. Using the
  4544. newline char (\n) in this string will cause the message line to
  4545. span another line underneath, allowing multi-line messages.
  4546. <a class="helplink" href="#STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  4547. <a class="helpanchor" name="COMMANDR.HLP____5"><span class="fA ">/ "string"</span></a>
  4548. <a class="helpanchor" name="COMMANDR.HLP___p1"><span class="fA ">PERSISTENT GO "string"</span></a>
  4549. <a class="helpanchor" name="COMMANDR.HLP___g4"><span class="fA ">GO [dir] #</span></a>
  4550. Use / followed by a string to move the Robot around the board.
  4551. The string must consist of a series of N, S, E, W, and I. NSEW
  4552. will move the Robot in that direction, and I will wait for one
  4553. cycle. One action is performed each cycle.
  4554. Use PERSISTENT GO in the same way as /. However, if the Robot
  4555. attempts to move in a given direction and it cannot, the Robot
  4556. will wait until it can before moving on to the next symbol.
  4557. Use GO to move in a single direction for a given number of
  4558. spaces (limited to 255; higher numbers and negatives wrap).
  4559. These commands can be used concurrently with <span class="fA ">WALK [dir]</span><span class="fF ">, </span>
  4560. allowing Robots to move in double-speed steps. However, this
  4561. can only happen when the commands are in the same cycle and if
  4562. the given string/number for the moving command is small.
  4563. <a class="helplink" href="#COMMANDR.HLP___w5">WALK [dir]</a>
  4564. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  4565. <a class="helpanchor" name="COMMANDR.HLP____6"><span class="fA ">:</span><span class="fA "> "label"</span></a>
  4566. A : is used to denote actual LABELS within a Robotic program.
  4567. These labels are used as points within the program to branch
  4568. to when a Robot receives a message from another Robot, goes to
  4569. a label of its own, or otherwise receives an external message.
  4570. Label names can be any length and consist of any characters.
  4571. They are not case-sensitive, and they can not take interpreted
  4572. counters (e.g. : "&label&").
  4573. A Robot can have multiple labels with the same name. In these
  4574. cases, the topmost of these labels in the Robot's code is the
  4575. one that is triggered.
  4576. There are several label names that are automatically jumped to
  4577. under certain conditions. These are detailed in the Built-in
  4578. Labels section.
  4579. Labels starting with a pound sign/hash (#) are subroutines.
  4580. See the Subroutine section for more information.
  4581. <a class="helplink" href="#SUBROUTE.HLP__sub">Subroutines</a>
  4582. <a class="helplink" href="#BUILTINL.HLP__1st">Built-in Labels</a>
  4583. <a class="helpanchor" name="COMMANDR.HLP___g5"><span class="fA ">GOTO "label"</span></a>
  4584. This will attempt to send the current Robot to the label
  4585. given; if the label does not exist, this command does nothing.
  4586. If the label begins with a # it will go to it as a subroutine.
  4587. <a class="helpanchor" name="COMMANDR.HLP___g6"><span class="fA ">GOTO "#return"</span></a>
  4588. <a class="helpanchor" name="COMMANDR.HLP___g7"><span class="fA ">GOTO "#top"</span></a>
  4589. This will send the current Robot to the line after the
  4590. next-highest subroutine call and to the line after the first
  4591. subroutine call, respectively.
  4592. <a class="helplink" href="#SUBROUTE.HLP__sub">Subroutines</a>
  4593. <a class="helpanchor" name="COMMANDR.HLP___sC"><span class="fA ">SEND "Robot" "label"</span></a>
  4594. <a class="helpanchor" name="COMMANDR.HLP___sD"><span class="fA ">SEND [dir] "label"</span></a>
  4595. <a class="helpanchor" name="COMMANDR.HLP___sE"><span class="fA ">SEND [dir] PLAYER "label"</span></a>
  4596. <a class="helpanchor" name="COMMANDR.HLP___sB"><span class="fA ">SEND # # "label"</span></a>
  4597. Use SEND to send another Robot to the label given. This is
  4598. called "messaging" a Robot, and the label given is the
  4599. "message". The target Robot can be given one of four ways,
  4600. as listed above respectively:
  4601. 1. State the target Robot's name. Use "ALL" in place of the
  4602. Robot name to message all Robots (including the Robot doing the
  4603. send). Set <span class="fA ">LOCKSELF</span><span class="fF "> beforehand to prevent sending to yourself</span>
  4604. when sending to "ALL".
  4605. 2. State the direction of the target Robot.
  4606. 3. State the direction of the target Robot, relative to the
  4607. player.
  4608. 4. State the x,y coordinates of the target Robot.
  4609. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  4610. <a class="helplink" href="#COMMANDR.HLP___lA">LOCKSELF</a>
  4611. <a class="helpanchor" name="COMMANDR.HLP____9"><span class="fA ">[ "string"</span></a>
  4612. <a class="helpanchor" name="COMMANDR.HLP____2"><span class="fA ">& "string"</span></a>
  4613. <a class="helpanchor" name="COMMANDR.HLP____1"><span class="fA ">% "string"</span></a>
  4614. <a class="helpanchor" name="COMMANDR.HLP____8"><span class="fA ">? "label" "string"</span></a>
  4615. <a class="helpanchor" name="COMMANDR.HLP____7"><span class="fA ">? "counter" "label" "string"</span></a>
  4616. Use these commands to bring up a message box during the game
  4617. containing the given text. The message box will contain all
  4618. consecutive lines using the commands [, &, %, or ?. Blank lines
  4619. and labels will be skipped over. The box message commands are
  4620. as follows:
  4621. [ will simply display the given message.
  4622. & will display the given message, centered within the box.
  4623. % will display the given message, but will parse color codes.
  4624. ? will display an option that will send the current Robot to
  4625. the given label when selected. If a counter is included, the
  4626. option will only be shown if the counter is NOT zero.
  4627. All box-message commands can use ~ and @ color codes, EXCEPT
  4628. for [. The advantage of [ is that it will be clipped to 64
  4629. characters if it is too long, thereby preventing the display
  4630. from being screwed up. The other commands are not clipped and,
  4631. if too long, can mess up the current display. (No permanent
  4632. damage is done, it just looks bad.)
  4633. NOTE: Take care when using any of these commands in a loop (and
  4634. be especially vigilant of possible unintended loops). Looping
  4635. these commands without any WAITs or similar cycle-breaking
  4636. commands (or repeatedly jumping to a label with said command)
  4637. can cause the dialogue box to re-appear as soon as it is
  4638. closed, making it very hard to resume normal action.
  4639. <a class="helplink" href="#COUNTERS.HLP__1st">Counters, Built-in Counters and Local Counters</a>
  4640. <a class="helplink" href="#STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  4641. <a class="helpanchor" name="COMMANDR.HLP____4"><span class="fA ">. "string"</span></a>
  4642. This command does nothing. It is used for comments and other
  4643. notes you may wish to make within your Robots. There is one
  4644. exception - If "string" begins with a @. (see next) You may
  4645. comment or de-comment lines of code automatically with the
  4646. Ctrl+C command (comment mark). Comments can nonetheless have an
  4647. actual effect on code speed, as they must be interpreted when
  4648. encountered.
  4649. <a class="helpanchor" name="COMMANDR.HLP___4b"><span class="fA ">. "@string"</span></a>
  4650. If a comment's string begins with a @, then the rest of the
  4651. string becomes the new name for the Robot. For example,
  4652. "@Hiya" would name the Robot "Hiya". This clips at the first
  4653. 14 characters of the string; for example, . "@Robothasanewname"
  4654. would cut off and rename the Robot "Robothasanewna".
  4655. <a class="helpanchor" name="COMMANDR.HLP___e1"><span class="fA ">END</span></a>
  4656. This command ends the Robot's program. The Robot will not run
  4657. any further commands until an external event affects it.
  4658. <a class="helpanchor" name="COMMANDR.HLP___d3"><span class="fA ">DIE</span></a>
  4659. <a class="helpanchor" name="COMMANDR.HLP___d4"><span class="fA ">DIE ITEM</span></a>
  4660. These commands destroy the Robot forever. DIE ITEM will also
  4661. put the player at the location the Robot previously occupied,
  4662. which is useful for creating Robots that simulate items.
  4663. <a class="helpanchor" name="COMMANDR.HLP___w1"><span class="fA ">WAIT #</span></a>
  4664. This command will cause the Robot to do absolutely nothing for
  4665. a given number of cycles (limited to 255; values over this will
  4666. wrap around).
  4667. <a class="helpanchor" name="COMMANDR.HLP___c9"><span class="fA ">CHAR [char]</span></a>
  4668. This command will change the Robot's character (appearance) to
  4669. the character given.
  4670. <a class="helpanchor" name="COMMANDR.HLP___cC"><span class="fA ">COLOR [color]</span></a>
  4671. This command will change the Robot's color to the color given.
  4672. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  4673. <a class="helpanchor" name="COMMANDR.HLP___sF"><span class="fA ">SET "counter" #</span></a>
  4674. <a class="helpanchor" name="COMMANDR.HLP___sG"><span class="fA ">SET "counter" RANDOM # #</span></a>
  4675. These commands set a counter to a certain value. Counters are
  4676. internal variables that can be changed through Robots. They are
  4677. usually used for custom purposes, although there are many
  4678. counters with pre-defined uses as well, such as "Gems". The
  4679. RANDOM version will set the counter to a random number within
  4680. the given range, inclusive.
  4681. <a class="helpanchor" name="COMMANDR.HLP___sH"><span class="fA ">SET "$string" "text"</span></a>
  4682. <a class="helpanchor" name="COMMANDR.HLP___sI"><span class="fA ">SET "$string" "$string2"</span></a>
  4683. <a class="helpanchor" name="COMMANDR.HLP___sJ"><span class="fA ">SET "$string" number</span></a>
  4684. These commands set strings to a certain value: a line of text,
  4685. another string or a number, respectively.
  4686. <a class="helplink" href="#COUNTERS.HLP__1st">Counters, Built-in Counters and Local Counters</a>
  4687. <a class="helpanchor" name="COMMANDR.HLP___iI"><span class="fA ">INC "counter" #</span></a>
  4688. <a class="helpanchor" name="COMMANDR.HLP___d1"><span class="fA ">DEC "counter" #</span></a>
  4689. <a class="helpanchor" name="COMMANDR.HLP___iJ"><span class="fA ">INC "counter" RANDOM # #</span></a>
  4690. <a class="helpanchor" name="COMMANDR.HLP___d2"><span class="fA ">DEC "counter" RANDOM # #</span></a>
  4691. These commands will increase or decrease a given counter or
  4692. string by a given amount. The RANDOM versions will increase or
  4693. decrease by a random number within the given range, inclusive.
  4694. <a class="helplink" href="#COUNTERS.HLP__1st">Counters, Built-in Counters and Local Counters</a>
  4695. <a class="helpanchor" name="COMMANDR.HLP___i1"><span class="fA ">IF "counter" !<>= # "label"</span></a>
  4696. This command tests to see if a given counter is equal to, less
  4697. than, etc. another counter or value. If the conditional is met,
  4698. the current Robot is sent to the given label. The following
  4699. conditionals are allowed- = Equal, < Less than, > Greater than,
  4700. <= Less than/equal, >= Greater than/equal, <> (also !=) Not
  4701. equal.
  4702. <a class="helplink" href="#COUNTERS.HLP__1st">Counters, Built-in Counters and Local Counters</a>
  4703. <a class="helpanchor" name="COMMANDR.HLP___cP"><span class="fA ">CYCLE #</span></a>
  4704. This command changes the Robot's speed to one Robot cycle for
  4705. every given number of update cycles. An update cycle is how
  4706. often everything onscreen is updated, such as most enemies.
  4707. Every time a given Robot gets to run commands is called a cycle
  4708. in terms of that Robot; most commands can run several times in
  4709. a single Robot cycle. (CYCLE # values are limited to 255;
  4710. values over this will wrap around.)
  4711. <a class="helpanchor" name="COMMANDR.HLP___e6"><span class="fA ">ENDLIFE</span></a>
  4712. <a class="helpanchor" name="COMMANDR.HLP___e5"><span class="fA ">ENDGAME</span></a>
  4713. These commands will end the player's current life or the entire
  4714. game, just as if the player died or lost all of its lives.
  4715. <a class="helpanchor" name="COMMANDR.HLP___w5"><span class="fA ">WALK [dir]</span></a>
  4716. This will cause the Robot to attempt to move one space in the
  4717. given direction every cycle. Use a direction of IDLE to turn
  4718. walking off.
  4719. This can be used concurrently with <span class="fA ">GO [dir] #</span><span class="fF "> and its</span>
  4720. relatives to make Robots move in double-speed steps.
  4721. <a class="helplink" href="#COMMANDR.HLP___g4">GO [dir] #</a>
  4722. <a class="helplink" href="#COMMANDR.HLP____5">/ "string"</a>
  4723. <a class="helplink" href="#COMMANDR.HLP___p1">PERSISTENT GO "string"</a>
  4724. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  4725. <a class="helpanchor" name="COMMANDR.HLP___sP"><span class="fA ">SHOOT [dir]</span></a>
  4726. <a class="helpanchor" name="COMMANDR.HLP___sQ"><span class="fA ">SHOOTMISSILE [dir]</span></a>
  4727. <a class="helpanchor" name="COMMANDR.HLP___sR"><span class="fA ">SHOOTSEEKER [dir]</span></a>
  4728. <a class="helpanchor" name="COMMANDR.HLP___sT"><span class="fA ">SPITFIRE [dir]</span></a>
  4729. These four commands all shoot a weapon in the given direction:
  4730. A bullet, a missile, a seeker, or shooting fire, respectively.
  4731. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  4732. <a class="helpanchor" name="COMMANDR.HLP___t7"><span class="fA ">TRY [dir] "label"</span></a>
  4733. This will have the Robot attempt to move in the given
  4734. direction. If it can, it will. If it can't, it will jump to the
  4735. given label.
  4736. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  4737. <a class="helpanchor" name="COMMANDR.HLP___b1"><span class="fA ">BECOME [color] [thing] [param]</span></a>
  4738. The Robot will end its program permanently, and instead become
  4739. a specified object with a given color and parameter.
  4740. NOTE: Becoming another Robot type will not destroy the program,
  4741. but there are far better commands for doing this: <span class="fA ">BECOME</span>
  4742. <span class="fA ">PUSHABLE</span><span class="fF "> and </span><span class="fA ">BECOME NONPUSHABLE</span><span class="fF ">.</span>
  4743. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  4744. <a class="helplink" href="#COMMAND2.HLP___b3">BECOME NONPUSHABLE</a>
  4745. <a class="helplink" href="#COMMAND2.HLP___b5">BECOME PUSHABLE</a>
  4746. <a class="helpanchor" name="COMMANDR.HLP___c2"><span class="fA ">CHANGE [color] [thing] [param] [color] [thing] [param]</span></a>
  4747. All on-board objects of the first given type will become
  4748. objects of the second given type.
  4749. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  4750. <a class="helpanchor" name="COMMANDR.HLP___pC"><span class="fA ">PUT [color] [thing] [param] # #</span></a>
  4751. <a class="helpanchor" name="COMMANDR.HLP___pD"><span class="fA ">PUT [color] [thing] [param] [dir]</span></a>
  4752. <a class="helpanchor" name="COMMANDR.HLP___pF"><span class="fA ">PUT [color] [thing] [param] [dir] PLAYER</span></a>
  4753. This will put a given object somewhere onscreen. If anything
  4754. else is in that spot and layer, it will be replaced with this
  4755. object. (The exception is if the player is in the target
  4756. location. In this case, nothing happens.) The target location
  4757. can be given in one of three ways:
  4758. 1. State the target x,y coordinates.
  4759. 2. State the direction, relative to the Robot.
  4760. 3. State the direction, relative to the player.
  4761. Note that this command is not suitable for placing Robots. For
  4762. moving a Robot, use <span class="fA ">GOTOXY # #</span><span class="fF ">; for placing a copy of a Robot,</span>
  4763. use <span class="fA ">DUPLICATE SELF # #</span><span class="fF "> or </span><span class="fA ">DUPLICATE SELF [dir]</span><span class="fF ">.</span>
  4764. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  4765. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  4766. <a class="helpanchor" name="COMMANDR.HLP___m3"><span class="fA ">MOD "file"</span></a>
  4767. This command loads the given module/OGG/WAV/SAM file as
  4768. background music. These files also can be loaded from a
  4769. subdirectory with the syntax of ""dir"\"file"" or
  4770. ""dir"/"file"" (without the inner quotes). The biggest
  4771. difference between MOD and SAM commands is that for a file
  4772. loaded with MOD one can use related commands like VOLUME and
  4773. MOD ORDER; the music loops as well.
  4774. NOTE: placing * at the end of the filename will set the current
  4775. mod to the given filename, but institute MOD "*" (see below) for
  4776. subsequent board visits.
  4777. <a class="helpanchor" name="COMMANDR.HLP___m8"><span class="fA ">MOD "*"</span></a>
  4778. Sets the board's currently running music to "wildcard". This
  4779. means that it will continue to play whatever was last playing.
  4780. This setting does not "lock" the board's music to any one song;
  4781. for instance, if 1.mod was playing on the last board, mod "*"
  4782. will continue playing 1.mod, but if the player then goes to a
  4783. board playing 2.mod and jumps back to the mod "*" board from
  4784. there, 2.mod will continue playing, and 1.mod will not start.
  4785. <a class="helplink" href="#SOUNDEFX.HLP__1st">Sound and Music</a>
  4786. <a class="helplink" href="#STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  4787. <a class="helpanchor" name="COMMANDR.HLP___s1"><span class="fA ">SAM # "file"</span></a>
  4788. Plays the given SAM/WAV/OGG/module file at a given frequency.
  4789. These files also can be loaded from a subdirectory with the
  4790. syntax of ""dir"\"file"" or ""dir"/"file"" (without the inner
  4791. quotes). 0 plays the file at natural frequency. Music loaded
  4792. with the SAM command will not loop.
  4793. <a class="helplink" href="#SOUNDEFX.HLP__1st">Sound and Music</a>
  4794. <a class="helpanchor" name="COMMANDR.HLP___e2"><span class="fA ">END MOD</span></a>
  4795. <a class="helpanchor" name="COMMANDR.HLP___e4"><span class="fA ">END SAM</span></a>
  4796. <a class="helpanchor" name="COMMANDR.HLP___e3"><span class="fA ">END PLAY</span></a>
  4797. Ends the playing of the current audio set by MOD "file",
  4798. the current audio set by SAM # "file", or the currently playing
  4799. PLAY statement (respectively).
  4800. <a class="helplink" href="#SOUNDEFX.HLP__1st">Sound and Music</a>
  4801. <a class="helpanchor" name="COMMANDR.HLP___d8"><span class="fA ">DOUBLE "counter"</span></a>
  4802. <a class="helpanchor" name="COMMANDR.HLP___h1"><span class="fA ">HALF "counter"</span></a>
  4803. Doubles or halves (rounding down) the value of the given
  4804. counter, respectively.
  4805. <a class="helplink" href="#COUNTERS.HLP__1st">Counters, Built-in Counters and Local Counters</a>
  4806. <a class="helpanchor" name="COMMANDR.HLP___mC"><span class="fA ">MULTIPLY "counter" #</span></a>
  4807. <a class="helpanchor" name="COMMANDR.HLP___d7"><span class="fA ">DIVIDE "counter" #</span></a>
  4808. <a class="helpanchor" name="COMMANDR.HLP___m9"><span class="fA ">MODULO "counter" #</span></a>
  4809. Multiplies, divides, or performs a modulo on the value of the
  4810. given counter by the given number (rounding down), and then sets
  4811. the counter to the result.
  4812. To modulo is to set to the remainder when dividing. Example: 7
  4813. modulo 3 is equal to 1, since 7 divided by 3 gives a remainder
  4814. of 1.
  4815. NOTE: The modulo command may output different numbers compared
  4816. to the modulo expression function; they may act differently
  4817. when negative numbers are involved. For the modulo command, the
  4818. output will give results similar to when both numbers are
  4819. positive, but will simply have the sign of the dividend (i.e. a
  4820. truncated modulo).
  4821. <a class="helplink" href="#COUNTERS.HLP__1st">Counters, Built-in Counters and Local Counters</a>
  4822. <a class="helpanchor" name="COMMANDR.HLP___p2"><span class="fA ">PLAY "string"</span></a>
  4823. <a class="helpanchor" name="COMMANDR.HLP___p3"><span class="fA ">PLAY SFX "string"</span></a>
  4824. <a class="helpanchor" name="COMMANDR.HLP___w4"><span class="fA ">WAIT PLAY "string"</span></a>
  4825. These all play sound effects, PC speaker notes, or a
  4826. combination thereof. PLAY SFX will only play if there are no
  4827. other notes currently playing, while PLAY will add its notes to
  4828. the end of the current sound effects queue. WAIT PLAY will wait
  4829. until the queue is almost empty before adding its notes.
  4830. <a class="helplink" href="#SOUNDEFX.HLP__1st">Sound and Music</a>
  4831. <a class="helpanchor" name="COMMANDR.HLP___sO"><span class="fA ">SFX #</span></a>
  4832. Plays the given built-in sound effect.
  4833. <a class="helplink" href="#SOUNDEFX.HLP__1st">Sound and Music</a>
  4834. <a class="helpanchor" name="COMMANDR.HLP___eH"><span class="fA ">EXPLODE #</span></a>
  4835. The Robot will explode, destroying it and its program forever.
  4836. The radius of the explosion is stated in the command, with a
  4837. maximum of 16.
  4838. <a class="helpanchor" name="COMMANDR.HLP___cD"><span class="fA ">COLOR FADE OUT</span></a>
  4839. <a class="helpanchor" name="COMMANDR.HLP___cE"><span class="fA ">COLOR FADE IN</span></a>
  4840. Fades the palette out to black or in to full color. Fading in
  4841. will not work if you haven't faded out, and fades affect
  4842. neither the current palette nor current intensities.
  4843. <a class="helpanchor" name="COMMANDR.HLP___g8"><span class="fA ">GOTOXY # #</span></a>
  4844. The Robot will go to the given x,y coordinates on the current
  4845. board, destroying anything there that cannot go on the under
  4846. layer. If the player is at those coordinates, the Robot ignores
  4847. the command.
  4848. <a class="helpanchor" name="COMMANDR.HLP___lC"><span class="fA ">LOOP START</span></a>
  4849. <a class="helpanchor" name="COMMANDR.HLP___lB"><span class="fA ">LOOP #</span></a>
  4850. <a class="helpanchor" name="COMMANDR.HLP___a1"><span class="fA ">ABORT LOOP</span></a>
  4851. These three commands define a loop, which is a sequence of
  4852. commands to be repeated. LOOP START marks the start of a loop.
  4853. LOOP # will loop back to LOOP START the given number of times.
  4854. ABORT LOOP will jump out of the loop, to the command after LOOP
  4855. #. The loop count is kept in the local counter "loopcount".
  4856. Make sure your number in LOOP # is one less than the amount for
  4857. which you actually want to loop, as the initial iteration
  4858. before first hitting LOOP # is not counted in the number.
  4859. NOTE: Using ABORT LOOP outside of the loop (that is, outside of
  4860. any block of code starting with LOOP START and ending in
  4861. LOOP #) is very highly unadvised and will most likely cause
  4862. unintended effects.
  4863. <a class="helplink" href="#COUNTERS.HLP__1st">Counters, Built-in Counters and Local Counters</a>
  4864. <a class="helpanchor" name="COMMANDR.HLP___mA"><span class="fA ">MOVE PLAYER [dir]</span></a>
  4865. <a class="helpanchor" name="COMMANDR.HLP___mB"><span class="fA ">MOVE PLAYER [dir] "label"</span></a>
  4866. This attempts to move the player in the given direction. If the
  4867. player is blocked, and the command contains a label, the Robot
  4868. will jump to that label.
  4869. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  4870. <a class="helpanchor" name="COMMANDR.HLP___p0"><span class="fA ">PLAYER CHAR [char]</span></a>
  4871. <a class="helpanchor" name="COMMANDR.HLP___p9"><span class="fA ">PLAYER CHAR [dir] [char]</span></a>
  4872. Changes the character (appearance) of the player. The second
  4873. form allows you to change the appearance of one of the four
  4874. facing directions at a time, while the first form changes all
  4875. four directions at once.
  4876. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  4877. <a class="helpanchor" name="COMMANDR.HLP___pA"><span class="fA ">PLAYERCOLOR [color]</span></a>
  4878. Changes the color of the player.
  4879. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  4880. <a class="helpanchor" name="COMMANDR.HLP___pG"><span class="fA ">PUT PLAYER # #</span></a>
  4881. <a class="helpanchor" name="COMMANDR.HLP___pH"><span class="fA ">PUT PLAYER [dir]</span></a>
  4882. The player will go to the given x,y coordinates or in the given
  4883. direction immediately relative to the Robot. If this is
  4884. impossible, the command is ignored.
  4885. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  4886. <a class="helpanchor" name="COMMANDR.HLP___pI"><span class="fA ">PUT "@FILENAME.XXX" Image_File [param] # #</span></a>
  4887. Places an MZM of the given filename. These files also can be
  4888. loaded from a subdirectory with the syntax of ""@dir"\"file""
  4889. or ""@dir"/"file"" (without the inner quotes). The @ is
  4890. REQUIRED. The numbers mark the destination x,y coordinates of
  4891. the MZM's upper-left corner; the parameter determines the
  4892. placement of the MZM (00 = board, 01 = overlay, 02 = vlayer).
  4893. See the MZM section for further details.
  4894. <a class="helplink" href="#MZM.HLP__mzm">Using MZMs</a>
  4895. <a class="helpanchor" name="COMMANDR.HLP___pJ"><span class="fA ">PUT [color] Sprite [param] # #</span></a>
  4896. Puts a sprite on the board. The param number is the number of
  4897. the sprite in hex (auto-converted from decimal). If the color
  4898. is c?? then the sprite is drawn with its normal colors as seen
  4899. on the board; otherwise, it's painted with the given colors.
  4900. # # marks the x,y coordinates of the sprite's upper-left
  4901. corner. See the Spites section for further details.
  4902. <a class="helplink" href="#SPRITES.HLP__spr">Sprites</a>
  4903. <a class="helpanchor" name="COMMANDR.HLP___lA"><span class="fA ">LOCKSELF</span></a>
  4904. <a class="helpanchor" name="COMMANDR.HLP___u3"><span class="fA ">UNLOCKSELF</span></a>
  4905. Locks or unlocks, respectively, the current Robot. When a Robot
  4906. is locked, no external messages will be acknowledged - Only
  4907. internal GOTOs, etc. will be processed. (Built-in label calls
  4908. to "thud" and "edge" are exceptions.)
  4909. <a class="helpanchor" name="COMMANDR.HLP___v3"><span class="fA ">VOLUME #</span></a>
  4910. Changes the volume of the MOD playing, from 0 (silent) to 255.
  4911. This change is specific to the current board. The default when
  4912. music is loaded is 255.
  4913. <a class="helpanchor" name="COMMANDR.HLP___cM"><span class="fA ">COPYROBOT "Robot"</span></a>
  4914. <a class="helpanchor" name="COMMANDR.HLP___cN"><span class="fA ">COPYROBOT # #</span></a>
  4915. <a class="helpanchor" name="COMMANDR.HLP___cO"><span class="fA ">COPYROBOT [dir]</span></a>
  4916. The current Robot becomes an exact duplicate of the noted
  4917. Robot, starting from the beginning of the noted Robot's code.
  4918. Note that if the source Robot was previously ended with the END
  4919. command, or was at the end of its program, the destination
  4920. Robot will be in an ended state as well. The Robot to copy can
  4921. be stated in one of three ways:
  4922. 1. State the target Robot's name.
  4923. 2. State the x,y coordinates of target Robot.
  4924. 3. State the direction of target Robot.
  4925. NOTE: Exact means just that, EXACT, down to the values of
  4926. local counters. The only thing that will differ will be the
  4927. robot_id. If one requires an group of objects differing only in
  4928. name, COPYROBOT is unsuitable for this purpose because even the
  4929. Robot name is copied.
  4930. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  4931. <a class="helpanchor" name="COMMANDR.HLP___d9"><span class="fA ">DUPLICATE SELF # #</span></a>
  4932. <a class="helpanchor" name="COMMANDR.HLP___d0"><span class="fA ">DUPLICATE SELF [dir]</span></a>
  4933. The current Robot creates an exact duplicate of itself
  4934. (including local counter values!) and places it at the noted
  4935. x,y coordinates or relative direction. That Robot then begins
  4936. its program at the first command.
  4937. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  4938. <span class="fE ">The remaining Robotic commands are covered in another section.</span>
  4939. <a class="helplink" href="#COMMAND2.HLP__1st">Command Reference Part II</a>
  4940. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  4941. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  4942. <hr /></div>
  4943. <div class="helpfile" id="COMMAND2.HLP">
  4944. <a class="helpanchor" name="COMMAND2.HLP__1st"> </a>
  4945. <p class="helpcentered"><span class="f9 ">Command Reference Part II</span></p>
  4946. <a class="helplink" href="#COMMANDR.HLP__1st">Command Reference (Part I)</a>
  4947. <a class="helpanchor" name="COMMAND2.HLP___b9"><span class="fA ">BULLETCOLOR [color]</span></a>
  4948. Changes the color of all bullets.
  4949. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  4950. <a class="helpanchor" name="COMMAND2.HLP___p4"><span class="fA ">PLAYER BULLETCOLOR [color]</span></a>
  4951. <a class="helpanchor" name="COMMAND2.HLP___e0"><span class="fA ">ENEMY BULLETCOLOR [color]</span></a>
  4952. <a class="helpanchor" name="COMMAND2.HLP___n1"><span class="fA ">NEUTRAL BULLETCOLOR [color]</span></a>
  4953. Changes the color of a specific type of bullet: Player, Enemy,
  4954. or Neutral (ricocheted/Robot) bullets.
  4955. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  4956. <a class="helplink" href="#BULLETTY.HLP__1st">Bullet Types</a>
  4957. <a class="helpanchor" name="COMMAND2.HLP___bA"><span class="fA ">BULLETN [char]</span></a>
  4958. <a class="helpanchor" name="COMMAND2.HLP___bB"><span class="fA ">BULLETS [char]</span></a>
  4959. <a class="helpanchor" name="COMMAND2.HLP___b0"><span class="fA ">BULLETE [char]</span></a>
  4960. <a class="helpanchor" name="COMMAND2.HLP___bC"><span class="fA ">BULLETW [char]</span></a>
  4961. Changes the character (appearance) of one of the four
  4962. directions of bullet, across all three types.
  4963. <a class="helpanchor" name="COMMAND2.HLP___p6"><span class="fA ">PLAYER BULLETN [char]</span></a>
  4964. <a class="helpanchor" name="COMMAND2.HLP___p7"><span class="fA ">PLAYER BULLETS [char]</span></a>
  4965. <a class="helpanchor" name="COMMAND2.HLP___p5"><span class="fA ">PLAYER BULLETE [char]</span></a>
  4966. <a class="helpanchor" name="COMMAND2.HLP___p8"><span class="fA ">PLAYER BULLETW [char]</span></a>
  4967. <a class="helpanchor" name="COMMAND2.HLP___eA"><span class="fA ">ENEMY BULLETE [char]</span></a>
  4968. <a class="helpanchor" name="COMMAND2.HLP___eB"><span class="fA ">ENEMY BULLETN [char]</span></a>
  4969. <a class="helpanchor" name="COMMAND2.HLP___eC"><span class="fA ">ENEMY BULLETS [char]</span></a>
  4970. <a class="helpanchor" name="COMMAND2.HLP___eD"><span class="fA ">ENEMY BULLETW [char]</span></a>
  4971. <a class="helpanchor" name="COMMAND2.HLP___n3"><span class="fA ">NEUTRAL BULLETN [char]</span></a>
  4972. <a class="helpanchor" name="COMMAND2.HLP___n4"><span class="fA ">NEUTRAL BULLETS [char]</span></a>
  4973. <a class="helpanchor" name="COMMAND2.HLP___n2"><span class="fA ">NEUTRAL BULLETE [char]</span></a>
  4974. <a class="helpanchor" name="COMMAND2.HLP___n5"><span class="fA ">NEUTRAL BULLETW [char]</span></a>
  4975. Changes the character of one of the four directions of bullet,
  4976. for one of the three types of bullet: Player, Enemy, or Neutral
  4977. (ricocheted/Robot) bullets, respectively.
  4978. <a class="helplink" href="#BULLETTY.HLP__1st">Bullet Types</a>
  4979. <a class="helpanchor" name="COMMAND2.HLP___b5"><span class="fA ">BECOME PUSHABLE</span></a>
  4980. <a class="helpanchor" name="COMMAND2.HLP___b3"><span class="fA ">BECOME NONPUSHABLE</span></a>
  4981. The Robot becomes a pushable or nonpushable Robot,
  4982. respectively.
  4983. <a class="helpanchor" name="COMMAND2.HLP___i2"><span class="fA ">IF [condition] "label"</span></a>
  4984. <a class="helpanchor" name="COMMAND2.HLP___iB"><span class="fA ">IF NOT [condition] "label"</span></a>
  4985. These test whether a given condition is present or not, and if
  4986. it is, the first will jump to the given label. If it isn't, the
  4987. second will jump to the given label. Conditions are covered in
  4988. another section.
  4989. <a class="helplink" href="#COMMANDS.HLP__con">Conditions</a>
  4990. <a class="helpanchor" name="COMMAND2.HLP___i3"><span class="fA ">IF # # "label"</span></a>
  4991. Jumps to the given label if the current Robot is at the x,y
  4992. coordinates given.
  4993. <a class="helpanchor" name="COMMAND2.HLP___i4"><span class="fA ">IF [dir] PLAYER [color] [thing] [param] "label"</span></a>
  4994. Jumps to the given label if the given thing is the given
  4995. direction relative to the player.
  4996. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  4997. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  4998. <a class="helpanchor" name="COMMAND2.HLP___i5"><span class="fA ">IF [color] [thing] [param] # # "label"</span></a>
  4999. <a class="helpanchor" name="COMMAND2.HLP___i6"><span class="fA ">IF [color] [thing] [param] [dir] "label"</span></a>
  5000. <a class="helpanchor" name="COMMAND2.HLP___iA"><span class="fA ">IF NOT [color] [thing] [param] [dir] "label"</span></a>
  5001. Jumps to a label if a given thing is at the given x,y
  5002. coordinates or to the immediate given direction of the current
  5003. Robot. The third form jumps if the thing is NOT in the
  5004. immediate given direction.
  5005. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  5006. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  5007. <a class="helpanchor" name="COMMAND2.HLP___i7"><span class="fA ">IF ALIGNEDROBOT "Robot" "label"</span></a>
  5008. Jump to the given label if the current Robot is aligned either
  5009. vertically or horizontally with the named Robot.
  5010. <a class="helpanchor" name="COMMAND2.HLP___i8"><span class="fA ">IF ANY [color] [thing] [param] "label"</span></a>
  5011. <a class="helpanchor" name="COMMAND2.HLP___i0"><span class="fA ">IF NO [color] [thing] [param] "label"</span></a>
  5012. If there are ANY of a given thing with the given color and
  5013. parameter on the current board, jumps to the given label. The
  5014. second form triggers on the absence of the given thing.
  5015. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  5016. <a class="helpanchor" name="COMMAND2.HLP___iC"><span class="fA ">IF PLAYER # # "label"</span></a>
  5017. If the player is at the given x,y coordinates, jump to the given
  5018. label.
  5019. <a class="helpanchor" name="COMMAND2.HLP___g2"><span class="fA ">GIVEKEY [color]</span></a>
  5020. <a class="helpanchor" name="COMMAND2.HLP___g3"><span class="fA ">GIVEKEY [color] "label"</span></a>
  5021. <a class="helpanchor" name="COMMAND2.HLP___t3"><span class="fA ">TAKEKEY [color]</span></a>
  5022. <a class="helpanchor" name="COMMAND2.HLP___t4"><span class="fA ">TAKEKEY [color] "label"</span></a>
  5023. Attempts to give keys to or take keys from the player. The
  5024. forms without labels will give or take the key if possible,
  5025. otherwise they will do nothing. The forms with labels will jump
  5026. to the labels if the Robot tries to give a key when the player
  5027. has no room for keys, or if the Robot tries to take a key the
  5028. player doesn't have.
  5029. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  5030. <a class="helpanchor" name="COMMAND2.HLP___g1"><span class="fA ">GIVE # [item]</span></a>
  5031. <a class="helpanchor" name="COMMAND2.HLP___t1"><span class="fA ">TAKE # [item]</span></a>
  5032. <a class="helpanchor" name="COMMAND2.HLP___t2"><span class="fA ">TAKE # [item] "label"</span></a>
  5033. Gives or takes a number of a certain item. If the player does
  5034. not have enough of this type of item to take, nothing is taken.
  5035. The third form jumps to a given label if the player doesn't have
  5036. enough of the stated item.
  5037. <a class="helpanchor" name="COMMAND2.HLP___t6"><span class="fA ">TRADE # [item] # [item] "label"</span></a>
  5038. Gives the player a number of the first item and takes a number
  5039. of the second item in exchange. If the player doesn't have
  5040. enough of the second item, this command jumps to the given label
  5041. and has no other effect. This command eases the writing of
  5042. simple shops and vendors.
  5043. Keep in mind that trades involving healths and lives can end up
  5044. with either at 0, leading to potential deaths and endgames if
  5045. the player has the exact amount of health/lives being traded
  5046. away.
  5047. <a class="helpanchor" name="COMMAND2.HLP___l6"><span class="fA ">LOCKPLAYER</span></a>
  5048. <a class="helpanchor" name="COMMAND2.HLP___l9"><span class="fA ">LOCKPLAYER NS</span></a>
  5049. <a class="helpanchor" name="COMMAND2.HLP___l8"><span class="fA ">LOCKPLAYER EW</span></a>
  5050. <a class="helpanchor" name="COMMAND2.HLP___l7"><span class="fA ">LOCKPLAYER ATTACK</span></a>
  5051. <a class="helpanchor" name="COMMAND2.HLP___u1"><span class="fA ">UNLOCKPLAYER</span></a>
  5052. The first four commands lock the player, preventing the player
  5053. from doing any moving and attacking (i.e. default shooting and
  5054. bombing), from moving north or south, from moving east or west,
  5055. or from attacking, respectively. The fifth command will clear
  5056. all locks on the player, allowing free movement and attacking.
  5057. These have no relation to the Board Info options "Can Bomb" and
  5058. "Can Shoot". Player locking is local, only affecting the
  5059. current board.
  5060. Also, locking the player will not cause the relevant input to
  5061. be ignored completely. MegaZeux will still detect that you are
  5062. pressing keys, even if the Player is forbidden from responding
  5063. to them, and will act accordingly. In short, even if a player
  5064. is locked, Robots that take directional and space/delete inputs
  5065. will still act the same.
  5066. <a class="helpanchor" name="COMMAND2.HLP___b7"><span class="fA ">BOARD [dir] "string"</span></a>
  5067. <a class="helpanchor" name="COMMAND2.HLP___b8"><span class="fA ">BOARD [dir] NONE</span></a>
  5068. Changes the board exit in the given direction to lead to the
  5069. given board or to nowhere.
  5070. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  5071. <a class="helplink" href="#STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  5072. <a class="helpanchor" name="COMMAND2.HLP___z1"><span class="fA ">ZAP "label" #</span></a>
  5073. <a class="helpanchor" name="COMMAND2.HLP___rA"><span class="fA ">RESTORE "label" #</span></a>
  5074. <a class="helpanchor" name="COMMAND2.HLP____0"><span class="fA ">| "label"</span></a>
  5075. ZAP will scan the Robotic program from the top down, changing
  5076. a given number of instances of the stated label to ZAPPED
  5077. labels. A ZAPPED label is inactive - it cannot be jumped to or
  5078. sent to under any circumstance. This has two uses: It will
  5079. prevent interference from a certain outside event, and it
  5080. allows multiple instances of the same label. For example, you
  5081. could have four SHOT labels in a row, ZAP one each time the
  5082. Robot was shot, and jump back to normal code, but have a fifth
  5083. SHOT label lead to an explosion.
  5084. RESTORE will scan the Robotic program from the bottom up,
  5085. changing a given number of the stated ZAPPED labels back to a
  5086. normal label. Essentially, this means that the most recently
  5087. ZAPPED labels are restored first. Both ZAP and RESTORE can have
  5088. a number larger than the number of instances of the stated
  5089. label. The final command, |, is a pre-ZAPPED label, allowing you
  5090. to have labels in your Robotic programs that are already ZAPPED
  5091. and inactive.
  5092. <a class="helpanchor" name="COMMAND2.HLP__pre"><span class="fA ">REL COUNTERS</span></a>
  5093. <a class="helpanchor" name="COMMAND2.HLP___r2"><span class="fA ">REL PLAYER</span></a>
  5094. <a class="helpanchor" name="COMMAND2.HLP___r3"><span class="fA ">REL SELF</span></a>
  5095. These are special types of commands, called PREFIXES. Prefixes
  5096. don't do a thing by themselves, but when placed before another
  5097. command that uses x,y coordinates, they change the origin of the
  5098. x,y coordinate system for that ONE following command. REL
  5099. COUNTERS moves the origin to the x,y location stated in the
  5100. counters XPOS and YPOS. REL PLAYER moves the origin to the
  5101. x,y of the player. REL SELF moves the origin to the x,y of the
  5102. current Robot.
  5103. The movement of the origin changes the (0,0) coordinates from
  5104. the upper left of the board to somewhere else, effectively
  5105. adding that x,y position to any coordinates entered. For
  5106. example, if the Robot is at the (5,5) position and uses REL
  5107. SELF on the coordinates (2,2), it will effectively act on
  5108. coordinates (7,7). If the player is at the (7,2) position and a
  5109. Robot uses REL PLAYER on coordinates (-3,6), the Robot will
  5110. effectively act on coordinates (4,8).
  5111. Let's look at some examples.
  5112. <span class="fE ">PUT c0E GEM p?? 5 5</span>
  5113. This places a gem at the x,y coordinates (5,5).
  5114. <span class="fE ">REL PLAYER</span>
  5115. <span class="fE ">PUT c0E GEM p?? 5 5</span>
  5116. This places a gem 5 spaces to the right and 5 spaces below
  5117. where the player currently is, or at the board edge if it is
  5118. under 5 spaces to the right/below the player.
  5119. <span class="fE ">REL SELF</span>
  5120. <span class="fE ">PUT c0E GEM p?? -2 -3</span>
  5121. This places a gem 2 spaces to the left and 3 spaces above
  5122. where this Robot currently is, or at the board edge if it is
  5123. under 2 spaces to the left or 3 spaces above the Robot.
  5124. <span class="fE ">REL COUNTERS</span>
  5125. <span class="fE ">PUT c0E GEM p?? 1 -4</span>
  5126. This places a gem at the coordinates (XPOS+1,YPOS-4), or on a
  5127. board edge if either of these coordinates would extend past the
  5128. board. XPOS and YPOS are counters with amounts defined by the
  5129. user before using this command.
  5130. Prefixes only have an effect on the very next command. This
  5131. includes comments.
  5132. Prefixes also affect two other things. The built in counters
  5133. THISX and THISY will be offset by a prefix, and the command
  5134. IF [dir] BLOCKED will check next to the player or next to the
  5135. position noted by the counters, if a prefix is present. See
  5136. these for details.
  5137. <a class="helpanchor" name="COMMAND2.HLP___r4"><span class="fA ">REL COUNTERS FIRST</span></a>
  5138. <a class="helpanchor" name="COMMAND2.HLP___r5"><span class="fA ">REL PLAYER FIRST</span></a>
  5139. <a class="helpanchor" name="COMMAND2.HLP___r6"><span class="fA ">REL SELF FIRST</span></a>
  5140. <a class="helpanchor" name="COMMAND2.HLP___r7"><span class="fA ">REL COUNTERS LAST</span></a>
  5141. <a class="helpanchor" name="COMMAND2.HLP___r8"><span class="fA ">REL PLAYER LAST</span></a>
  5142. <a class="helpanchor" name="COMMAND2.HLP___r9"><span class="fA ">REL SELF LAST</span></a>
  5143. These prefixes are similar to the above prefixes, but they only
  5144. affect the first or last x,y pair of coordinates in the next
  5145. command. For example, COPY accepts two pairs of coordinates. If
  5146. you precede it with the following:
  5147. REL PLAYER FIRST
  5148. REL SELF LAST
  5149. Then the coordinates of the object being copied will be relative
  5150. to the player, and the destination coordinates will be relative
  5151. to the Robot. There is one other difference with these commands
  5152. - REL COUNTERS FIRST works off of the counters FIRSTXPOS and
  5153. FIRSTYPOS, and REL COUNTERS LAST works off of the counters
  5154. LASTXPOS and LASTYPOS.
  5155. <a class="helpanchor" name="COMMAND2.HLP___j1"><span class="fA ">JUMP MOD ORDER #</span></a>
  5156. The current module jumps to the stated module order, if
  5157. applicable. For example, JUMP MOD ORDER 3 will begin playing
  5158. the third order in the module, which is the fourth section of
  5159. the module. Sometimes your music editor will refer to this as
  5160. the 'Pattern' or 'Track'.
  5161. With OGG music and/or WAVs, this command makes a jump to the
  5162. stated frame.
  5163. <a class="helplink" href="#SOUNDEFX.HLP__1st">Sound and Music</a>
  5164. <a class="helpanchor" name="COMMAND2.HLP___l1"><span class="fA ">LAYBOMB [dir]</span></a>
  5165. <a class="helpanchor" name="COMMAND2.HLP___l2"><span class="fA ">LAYBOMB HIGH [dir]</span></a>
  5166. Places a bomb (high strength for the second form) next to the
  5167. Robot in the given direction. Use a direction of UNDER or
  5168. BENEATH to place the bomb underneath the Robot.
  5169. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  5170. <a class="helpanchor" name="COMMAND2.HLP___l3"><span class="fA ">LAZERWALL [dir] #</span></a>
  5171. The Robot shoots a lazer in the given direction, and the lazer
  5172. has the color of the Robot and the duration given. The number of
  5173. cycles the lazer is active is duration x 2.
  5174. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  5175. <a class="helpanchor" name="COMMAND2.HLP___cH"><span class="fA ">COPY # # # #</span></a>
  5176. <a class="helpanchor" name="COMMAND2.HLP___cI"><span class="fA ">COPY [dir] [dir]</span></a>
  5177. <a class="helpanchor" name="COMMAND2.HLP___sW"><span class="fA ">SWITCH [dir] [dir]</span></a>
  5178. Copies the thing at one location to another, with the location
  5179. stated through x,y coordinates or directions relative to the
  5180. current Robot. The third command will swap the things in the
  5181. two directions.
  5182. COPY can copy between different layers by using the appropriate
  5183. prefixes. Prefix coordinate numbers with "+" to indicate
  5184. overlay coordinates, and with "#" to indicate vlayer
  5185. coordinates.
  5186. NOTE: DO NOT normally use COPY # # # # to copy Robots; use
  5187. DUPLICATE SELF or COPYROBOT. It is useful for copying by Robot
  5188. id, however; use COPY rN.thisx and rN.thisy as the first pair
  5189. of coordinates.
  5190. Using COPY # # # # on a Robot will no longer cause the Robot
  5191. copy to start where the parent left off, and will have new
  5192. Robots start at the first line.
  5193. <a class="helplink" href="#COUNTERS.HLP__rnc">Rn.<counter></a>
  5194. <a class="helplink" href="#BADPRACT.HLP__bad">Robotic Usages That Should be Avoided</a>
  5195. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  5196. <a class="helpanchor" name="COMMAND2.HLP___cJ"><span class="fA ">COPY BLOCK # # # # # #</span></a>
  5197. <a class="helpanchor" name="COMMAND2.HLP___cL"><span class="fA ">COPY OVERLAY BLOCK # # # # # #</span></a>
  5198. Copies a block of things from one location on the board or
  5199. overlay to another section. The first two numbers state the
  5200. upper-left corner of the block to be copied, the second two
  5201. numbers state the size of the block, and the third two numbers
  5202. state the destination block's upper-left corner.
  5203. COPY BLOCK and COPY OVERLAY BLOCK can copy from board to
  5204. overlay and from overlay to board (respectively). The last two
  5205. numbers must be prefixed by plus signs, like so:
  5206. COPY BLOCK # # # # "+#" "+#"
  5207. COPY OVERLAY BLOCK # # # # "+#" "+#"
  5208. <a class="helplink" href="#TOVERLAY.HLP__081">Editing and Using the Overlay</a>
  5209. <a class="helpanchor" name="COMMAND2.HLP___cW">COPY BLOCK # # # # "#x" "#y"</a>
  5210. <a class="helpanchor" name="COMMAND2.HLP___cX">COPY OVERLAY BLOCK # # # # "#x" "#y"</a>
  5211. These commands copy from the board or overlay (respectively) to
  5212. the vlayer. The first two numbers are the x,y coordinates of the
  5213. upper-left corner of the block to be copied; the next two
  5214. numbers are the respective width and height of the block; the
  5215. "#x" and "#y" are the x,y coordinates of the destination block's
  5216. upper-left corner. The pound sign in "#x" and "#y" MUST be
  5217. included.
  5218. <a class="helpanchor" name="COMMAND2.HLP___cY">COPY BLOCK "#x" "#y" # # # #</a>
  5219. <a class="helpanchor" name="COMMAND2.HLP___cZ">COPY OVERLAY BLOCK "#x" "#y" # # # #</a>
  5220. These commands similarly copy from the vlayer to the board or
  5221. overlay (respectively).
  5222. <a class="helplink" href="#TOVERLAY.HLP__081">Editing and Using the Overlay</a>
  5223. <a class="helplink" href="#VLAYER.HLP__vla">The Vlayer and Its Uses</a>
  5224. <a class="helpanchor" name="COMMAND2.HLP___cAA">COPY (OVERLAY) BLOCK "#x1" "#y1" # # "#x2" "#y2"</a>
  5225. This command copies a block from the vlayer and copies it onto
  5226. a different spot on the vlayer. "#x1" and "#y1" are the x,y
  5227. coordinates of the upper-left corner of the copied block; the
  5228. next two numbers are the respective width and height of the
  5229. copied area; "#x2" and "#y2" are the x,y coordinates of the
  5230. destination block's upper-left corner. The pound sign in #x1",
  5231. "#y1", "#x2" and "#y2" MUST be included.
  5232. <a class="helplink" href="#VLAYER.HLP__vla">The Vlayer and Its Uses</a>
  5233. <a class="helpanchor" name="COMMAND2.HLP___cQ"><span class="fA ">COPY BLOCK # # # # "@filename" #</span></a>
  5234. <a class="helpanchor" name="COMMAND2.HLP___cR"><span class="fA ">COPY OVERLAY BLOCK # # # # "@filename" #</span></a>
  5235. These commands copy from the board or overlay (respectively)
  5236. to an MZM. The first two numbers are the x,y coordinates of the
  5237. block's upper-left corner; # # is the respective width and
  5238. height of the block; filename is the name of the file - the @
  5239. is required. Finally, the last number determines the MZM type.
  5240. 1 saves as layer; 0 saves as board. 0 is integral for copying
  5241. non-graphical data (primarily Robots); 1 is proper for copying
  5242. graphical data, as the block's appearance will stay as exactly
  5243. as it was when saved.
  5244. <a class="helplink" href="#MZM.HLP__mzm">Using MZMs</a>
  5245. <a class="helplink" href="#TOVERLAY.HLP__081">Editing and Using the Overlay</a>
  5246. <a class="helpanchor" name="COMMAND2.HLP___cS"><span class="fA ">COPY (OVERLAY) BLOCK "#x" "#y" # # "@filename" #</span></a>
  5247. These commands act much like the above two commands, but they
  5248. copy from the vlayer to an MZM instead.
  5249. <a class="helplink" href="#MZM.HLP__mzm">Using MZMs</a>
  5250. <a class="helplink" href="#VLAYER.HLP__vla">The Vlayer and Its Uses</a>
  5251. <a class="helpanchor" name="COMMAND2.HLP___cT"><span class="fA ">COPY BLOCK # # # # "$string" #</span></a>
  5252. <a class="helpanchor" name="COMMAND2.HLP___cU"><span class="fA ">COPY OVERLAY BLOCK # # # # "$string" #</span></a>
  5253. <a class="helpanchor" name="COMMAND2.HLP___cV"><span class="fA ">COPY (OVERLAY) BLOCK "#x" "#y" # # "$string" #</span></a>
  5254. These commands copy information from the board, overlay, or
  5255. vlayer (respectively) to a given string. The first two numbers
  5256. are the x,y coordinates of the upper-left corner of the block;
  5257. the third and fourth are its respective width and height; the
  5258. last is the terminating character's char value (i.e. a number
  5259. from 0-255). The operation will end before all characters in the
  5260. given range are read if either the parameter matching the
  5261. terminating character, or a parameter of p00, is found. For the
  5262. vlayer command, the pound sign is REQUIRED.
  5263. <a class="helplink" href="#STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  5264. <a class="helplink" href="#TOVERLAY.HLP__081">Editing and Using the Overlay</a>
  5265. <a class="helpanchor" name="COMMAND2.HLP___s2"><span class="fA ">SAVE PLAYER POSITION</span></a>
  5266. <a class="helpanchor" name="COMMAND2.HLP___s3"><span class="fA ">SAVE PLAYER POSITION #</span></a>
  5267. Saves the player's coordinates and board in one of eight
  5268. internal slots (1-8). If no number is given, slot one is used.
  5269. <a class="helpanchor" name="COMMAND2.HLP___rB"><span class="fA ">RESTORE PLAYER POSITION</span></a>
  5270. <a class="helpanchor" name="COMMAND2.HLP___rC"><span class="fA ">RESTORE PLAYER POSITION #</span></a>
  5271. <a class="helpanchor" name="COMMAND2.HLP___rD"><span class="fA ">RESTORE PLAYER POSITION # DUPLICATE SELF</span></a>
  5272. Relocates the player to the coordinates and board stored in
  5273. the given slot, or slot number one if none is given. The third
  5274. form also duplicates the current Robot where the player used to
  5275. be; this Robot then starts its program at the first command.
  5276. This command will do transition fades on activation, even if the
  5277. destination is the same board.
  5278. <a class="helpanchor" name="COMMAND2.HLP___eE"><span class="fA ">EXCHANGE PLAYER POSITION</span></a>
  5279. <a class="helpanchor" name="COMMAND2.HLP___eF"><span class="fA ">EXCHANGE PLAYER POSITION #</span></a>
  5280. <a class="helpanchor" name="COMMAND2.HLP___eG"><span class="fA ">EXCHANGE PLAYER POSITION # DUPLICATE SELF</span></a>
  5281. Exchanges the player's current coordinates and board with the
  5282. coordinates and board stored in the given slot, or slot number
  5283. one if none is given. The third form also duplicates the
  5284. current Robot where the player used to be; this Robot then
  5285. starts its program at the first command. This command will do
  5286. transition fades on activation, even if the destination is the
  5287. same board.
  5288. <a class="helpanchor" name="COMMAND2.HLP___f2"><span class="fA ">FILLHEALTH</span></a>
  5289. The player's health is filled to its maximum.
  5290. <a class="helpanchor" name="COMMAND2.HLP___cA"><span class="fA ">CLEAR MESG</span></a>
  5291. The message row, if currently displayed, disappears.
  5292. <a class="helpanchor" name="COMMAND2.HLP___m1"><span class="fA ">MESSAGE ROW #</span></a>
  5293. The message row is moved to the stated row, from 0 to 24.
  5294. <a class="helpanchor" name="COMMAND2.HLP___sN"><span class="fA ">SET MESG COLUMN #</span></a>
  5295. The message is displayed starting from the given column, from 0
  5296. to 79. (The actual message will start at this location, not the
  5297. message edge.)
  5298. <a class="helpanchor" name="COMMAND2.HLP___c1"><span class="fA ">CENTER MESG</span></a>
  5299. The message is centered on its row instead of being shown at a
  5300. constant column. (see above)
  5301. <a class="helpanchor" name="COMMAND2.HLP___l4"><span class="fA ">LOAD CHAR SET "file"</span></a>
  5302. <a class="helpanchor" name="COMMAND2.HLP___l5"><span class="fA ">LOAD PALETTE "file"</span></a>
  5303. Loads in the specified character set or palette, exported using
  5304. Alt+X from the world editor. The new character set or palette
  5305. is permanent and affects the entire world until a new one is
  5306. loaded. These files also can be loaded from a subdirectory with
  5307. the syntax of ""dir"\"file"" or ""dir"/"file"" (without the
  5308. inner quotes).
  5309. Character sets can be loaded to the middle of the current
  5310. charset by prefixing the "file" name with +offset, where offset
  5311. is a hexadecimal number, or @offset where offset is a decimal
  5312. number. Up to 14 additional charsets can be loaded for use with
  5313. unbound sprites. To set and access these, set the decimal
  5314. offset number to (256*extra charset number); hexadecimal
  5315. offsetting cannot access additional charsets. Naturally,
  5316. offsets within these charsets can be set as well by adding the
  5317. desired offset value to these numbers.
  5318. These commands can also take string inputs in place of
  5319. hard-coded filenames.
  5320. <a class="helplink" href="#PARTIAL.HLP__par">Partial Character Sets</a>
  5321. <a class="helplink" href="#STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  5322. <a class="helpanchor" name="COMMAND2.HLP___t5"><span class="fA ">TELEPORT PLAYER "string" # #</span></a>
  5323. Teleports the player to the given board at the stated x,y
  5324. coordinates. This happens instantaneously, even if this causes a
  5325. move between boards.
  5326. <a class="helplink" href="#STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  5327. <a class="helpanchor" name="COMMAND2.HLP___c4"><span class="fA ">CHANGE OVERLAY [color] [char] [color] [char]</span></a>
  5328. <a class="helpanchor" name="COMMAND2.HLP___c5"><span class="fA ">CHANGE OVERLAY [color] [color]</span></a>
  5329. All of the stated character and color on the overlay are
  5330. changed to the new character and color. The second form doesn't
  5331. care about the character, only the color.
  5332. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  5333. <a class="helplink" href="#TOVERLAY.HLP__081">Editing and Using the Overlay</a>
  5334. <a class="helpanchor" name="COMMAND2.HLP___m0"><span class="fA ">MOVE ALL [color] [thing] [param] [dir]</span></a>
  5335. All instances of the stated thing with the color and parameter
  5336. given are moved in the given direction.
  5337. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  5338. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  5339. <a class="helpanchor" name="COMMAND2.HLP___o1"><span class="fA ">OPEN [dir]</span></a>
  5340. If there is a gate or door in the given direction, it will
  5341. be opened. If the door is going to open towards the Robot, the
  5342. Robot will be pushed out of the way if necessary and possible.
  5343. It is suggested to wait a couple cycles before then continuing
  5344. on through the door. (Gates aren't a problem.)
  5345. If the gate or door is locked, it will be treated as if the
  5346. player attempted to open it. This means that whether the door is
  5347. opened or not depends on the player's held keys, and if the
  5348. Robot unlocks the door, the player will lose the relevant key.
  5349. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  5350. <a class="helpanchor" name="COMMAND2.HLP___m7"><span class="fA ">MOD SAM # #</span></a>
  5351. Plays a sample (instrument) from the current module file. The
  5352. first number states the frequency at which to play it; the
  5353. second is the number of the sample, from 1 on.
  5354. <a class="helplink" href="#SOUNDEFX.HLP__1st">Sound and Music</a>
  5355. <a class="helpanchor" name="COMMAND2.HLP___l0"><span class="fA ">LOCKSCROLL</span></a>
  5356. <a class="helpanchor" name="COMMAND2.HLP___u2"><span class="fA ">UNLOCKSCROLL</span></a>
  5357. Locks or unlocks scrolling on the current board. When scrolling
  5358. is locked, the view will remain showing the same thing, even if
  5359. the player moves. The screen will not scroll.
  5360. <a class="helpanchor" name="COMMAND2.HLP___c0"><span class="fA ">CHAR EDIT [char] # # # # # # # # # # # # # #</span></a>
  5361. Changes the appearance of the given character, using a 14-number
  5362. code of 8-bit numbers derived from which pixels are set per
  5363. horizontal line. To insert these codes easily, use F5 in the
  5364. Robot editor, select the desired character, and press ESC.
  5365. <a class="helpanchor" name="COMMAND2.HLP___m5"><span class="fA ">MOD FADE IN "file"</span></a>
  5366. Fades in the stated module/OGG/WAV music file, from 0 volume to
  5367. 255 volume. These files also can be loaded from a subdirectory
  5368. with the syntax of ""dir"\"file"" or ""dir"/"file"" (without
  5369. the inner quotes).
  5370. <a class="helplink" href="#SOUNDEFX.HLP__1st">Sound and Music</a>
  5371. <a class="helplink" href="#STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  5372. <a class="helpanchor" name="COMMAND2.HLP___m6"><span class="fA ">MOD FADE OUT</span></a>
  5373. Fades out the current module/OGG/WAV music file, from the
  5374. current volume to 0 volume. Although the mod will be inaudible,
  5375. it will still be the current music file after the fade out.
  5376. <a class="helplink" href="#SOUNDEFX.HLP__1st">Sound and Music</a>
  5377. <a class="helpanchor" name="COMMAND2.HLP___m4"><span class="fA ">MOD FADE # #</span></a>
  5378. Fades the current module/OGG/WAV music file to a given volume
  5379. at the given rate. The first number is the target volume, the
  5380. second number is the speed at which to fade. All negative
  5381. numbers and numbers over 255 will wrap around.
  5382. <a class="helplink" href="#SOUNDEFX.HLP__1st">Sound and Music</a>
  5383. <a class="helpanchor" name="COMMAND2.HLP___m2"><span class="fA ">MISSILECOLOR [color]</span></a>
  5384. Changes the color of all missiles fired from that point on.
  5385. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  5386. <a class="helpanchor" name="COMMAND2.HLP___pB"><span class="fA ">PUSH [dir]</span></a>
  5387. Pushes anything in the given direction one space forward, if
  5388. the object in that direction is pushable. The Robot itself does
  5389. not move.
  5390. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  5391. <a class="helpanchor" name="COMMAND2.HLP___sL"><span class="fA ">SET EDGE COLOR [color]</span></a>
  5392. Changes the color of the edging shown around the viewport.
  5393. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  5394. <a class="helpanchor" name="COMMAND2.HLP___sM"><span class="fA ">SET MAXHEALTH #</span></a>
  5395. Changes the player's health limit, or maximum health rating.
  5396. <a class="helpanchor" name="COMMAND2.HLP___w2"><span class="fA ">WAIT MOD FADE</span></a>
  5397. Waits for the module/OGG/WAV music to finish its fading. (see
  5398. MOD FADE IN, MOD FADE OUT, and MOD FADE)
  5399. <a class="helplink" href="#SOUNDEFX.HLP__1st">Sound and Music</a>
  5400. <a class="helplink" href="#COMMAND2.HLP___m5"><span class="fA ">MOD FADE IN "file"</span></a>
  5401. <a class="helplink" href="#COMMAND2.HLP___m6"><span class="fA ">MOD FADE OUT</span></a>
  5402. <a class="helplink" href="#COMMAND2.HLP___m4"><span class="fA ">MOD FADE # #</span></a>
  5403. <a class="helpanchor" name="COMMAND2.HLP___w3"><span class="fA ">WAIT PLAY</span></a>
  5404. Waits for all queued sound effects to finish playing.
  5405. <a class="helplink" href="#SOUNDEFX.HLP__1st">Sound and Music</a>
  5406. <a class="helpanchor" name="COMMAND2.HLP___a2"><span class="fA ">ASK "string"</span></a>
  5407. Brings up a dialog box asking the player a question. The player
  5408. can select YES or NO. The Robot is then sent to either the YES
  5409. or NO label, depending on the choice. If the player presses
  5410. ESC, the NO label is used.
  5411. <a class="helplink" href="#STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  5412. <a class="helpanchor" name="COMMAND2.HLP___a3"><span class="fA ">AVALANCHE</span></a>
  5413. Enacts the potion/ring effect, Avalanche, placing boulders
  5414. randomly about the board. Often precedes the CHANGE c?? Boulder
  5415. p?? to c?? Explosion p?? command.
  5416. <a class="helplink" href="#BUILTINS.HLP__prx">Potion and Ring Effects</a>
  5417. <a class="helpanchor" name="COMMAND2.HLP___b4"><span class="fA ">BECOME LAVAWALKER</span></a>
  5418. <a class="helpanchor" name="COMMAND2.HLP___b2"><span class="fA ">BECOME NONLAVAWALKER</span></a>
  5419. Sets whether the current Robot can or cannot move on lava.
  5420. Robots can always move over fire.
  5421. <a class="helpanchor" name="COMMAND2.HLP___b6"><span class="fA ">BLIND #</span></a>
  5422. <a class="helpanchor" name="COMMAND2.HLP___f1"><span class="fA ">FIREWALKER #</span></a>
  5423. <a class="helpanchor" name="COMMAND2.HLP___f4"><span class="fA ">FREEZETIME #</span></a>
  5424. <a class="helpanchor" name="COMMAND2.HLP___sS"><span class="fA ">SLOWTIME #</span></a>
  5425. <a class="helpanchor" name="COMMAND2.HLP___w6"><span class="fA ">WIND #</span></a>
  5426. The stated potion/ring effect activates for the given number of
  5427. cycles. Potion/ring effects are global; that is, they affect the
  5428. entire world. The only exception is the global Robot; FREEZETIME
  5429. and SLOWTIME commands do not affect it.
  5430. <a class="helplink" href="#THEGLOBL.HLP__gbl">The Global</a>
  5431. <a class="helplink" href="#BUILTINS.HLP__prx">Potion and Ring Effects</a>
  5432. <a class="helpanchor" name="COMMAND2.HLP___c3"><span class="fA ">CHANGE CHAR ID # [char]</span></a>
  5433. Changes the character/color/number at the stated (numeric)
  5434. location within the CHAR ID table. The CHAR ID table is
  5435. internal and is covered in another section.
  5436. <a class="helplink" href="#CHANGECH.HLP__1st">CHANGE CHAR ID - The CHAR ID Table</a>
  5437. <a class="helpanchor" name="COMMAND2.HLP___c6"><span class="fA ">CHANGE SFX # "string"</span></a>
  5438. The sound effect referenced by the given number is changed to
  5439. the new string. The numbers refer to the sound events editable
  5440. through ALT+F.
  5441. <a class="helplink" href="#SOUNDEFX.HLP__1st">Sound and Music</a>
  5442. <a class="helpanchor" name="COMMAND2.HLP___c8"><span class="fA ">CHANGE THIN ARROW CHAR [dir] [char]</span></a>
  5443. <a class="helpanchor" name="COMMAND2.HLP___c7"><span class="fA ">CHANGE THICK ARROW CHAR [dir] [char]</span></a>
  5444. Changes the character used to represent thin arrows (for guns)
  5445. or thick arrows (for pushers and spikes) for the specified
  5446. direction.
  5447. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  5448. <a class="helpanchor" name="COMMAND2.HLP___iP"><span class="fA ">INPUT STRING "string"</span></a>
  5449. Asks the player to input a string, presenting the given string
  5450. as a prompt. The inputted string is stored in memory. This
  5451. string can be displayed within box messages or on the message
  5452. row by using &INPUT& within a message. Inputted strings are
  5453. local to the current board.
  5454. <a class="helplink" href="#STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  5455. <a class="helpanchor" name="COMMAND2.HLP___iD"><span class="fA ">IF STRING "string" "label"</span></a>
  5456. <a class="helpanchor" name="COMMAND2.HLP___iF"><span class="fA ">IF STRING NOT "string" "label"</span></a>
  5457. Jumps to the given label if the inputted string is or is not
  5458. equal to the given string. Case is ignored.
  5459. <a class="helpanchor" name="COMMAND2.HLP___iE"><span class="fA ">IF STRING MATCHES "string" "label"</span></a>
  5460. If the string matches a given pattern, jump to the given label.
  5461. (Case is ignored.) The pattern is a series of characters and
  5462. symbols to match. Characters must match exactly. The following
  5463. symbols apply:
  5464. # matches any number from 0-9
  5465. _ matches any letter from A-Z or a-z
  5466. ? matches any character
  5467. * matches the remainder of the input string
  5468. <a class="helpanchor" name="COMMAND2.HLP___i9"><span class="fA ">IF FIRST STRING "string" "label"</span></a>
  5469. If the first word in the inputted string (i.e. everything up
  5470. to the first space (char 32) or end of input) matches the given
  5471. string, jump to the given label.
  5472. <a class="helpanchor" name="COMMAND2.HLP___cB"><span class="fA ">CLIP INPUT</span></a>
  5473. This command chops off the first word of the inputted string
  5474. (everything before and including the first instance of a
  5475. space, aka char 32). For example, "Hello there" will now read
  5476. in memory as "there".
  5477. <a class="helpanchor" name="COMMAND2.HLP___iM"><span class="fA ">INC "$string" "text"</span></a>
  5478. <a class="helpanchor" name="COMMAND2.HLP___iN"><span class="fA ">INC "$string" "$string2"</span></a>
  5479. This command appends the given text or string to the end of a
  5480. given string.
  5481. <a class="helpanchor" name="COMMAND2.HLP___dA"><span class="fA ">DEC "$string" #</span></a>
  5482. This command clips the given string by the amount of characters
  5483. given. Decreasing by negative numbers will not add characters to
  5484. the string.
  5485. <a class="helpanchor" name="COMMAND2.HLP___iO"><span class="fA ">IF "$string" (equality) # "label"</span></a>
  5486. <a class="helpanchor" name="COMMAND2.HLP___iK"><span class="fA ">IF "$string" (equality) "text" "label"</span></a>
  5487. <a class="helpanchor" name="COMMAND2.HLP___iL"><span class="fA ">IF "$string" (equality) "$string2" "label"</span></a>
  5488. These commands jump to a given label if the string matches the
  5489. given equality conditions (ONLY equal or not equal; others such
  5490. as less than are automatically parsed as FALSE). These commands
  5491. compare the given string to a number, a line of text, or
  5492. another string respectively.
  5493. <a class="helpanchor" name="COMMAND2.HLP___iG"><span class="fA ">IF c?? Sprite_Colliding pNN x y "label"</span></a>
  5494. This command determines whether the sprite numbered NN is
  5495. colliding at the location (x,y); if it is, the program goes to
  5496. the given label.
  5497. <a class="helpanchor" name="COMMAND2.HLP___iH"><span class="fA ">IF c?? Sprite pNN x y "label"</span></a>
  5498. This command checks if the sprite numbered NN is currently at
  5499. the location (x,y); if it is, the program goes to the given
  5500. label. For multi-character sprites, the label is jumped to if
  5501. any part of the sprite is at the given coordinates.
  5502. <a class="helpanchor" name="COMMAND2.HLP___cF"><span class="fA ">COLOR INTENSITY # PERCENT</span></a>
  5503. <a class="helpanchor" name="COMMAND2.HLP___cG"><span class="fA ">COLOR INTENSITY # # PERCENT</span></a>
  5504. The first command changes the intensity of the entire palette
  5505. from 0 to 255 percent (100 percent is a palette's default). The
  5506. second command only changes one color, stated by number.
  5507. <a class="helpanchor" name="COMMAND2.HLP___cK"><span class="fA ">COPY CHAR [char] [char]</span></a>
  5508. The character picture of the first character is copied to the
  5509. second character.
  5510. <a class="helpanchor" name="COMMAND2.HLP___d5"><span class="fA ">DISABLE MESG EDGE</span></a>
  5511. <a class="helpanchor" name="COMMAND2.HLP___e7"><span class="fA ">ENABLE MESG EDGE</span></a>
  5512. Disables or enables the edging on the message row. When
  5513. enabled, all messages have a space (char 32) tacked onto each
  5514. end for display clarity. This is enabled by default.
  5515. <a class="helpanchor" name="COMMAND2.HLP___d6"><span class="fA ">DISABLE SAVING</span></a>
  5516. <a class="helpanchor" name="COMMAND2.HLP___e8"><span class="fA ">ENABLE SAVING</span></a>
  5517. <a class="helpanchor" name="COMMAND2.HLP___e9"><span class="fA ">ENABLE SENSORONLY SAVING</span></a>
  5518. Disables or enables manual saving on this board, or enables
  5519. manual saving on sensors only.
  5520. <a class="helplink" href="#SENSORSW.HLP__094">Sensors</a>
  5521. <a class="helpanchor" name="COMMAND2.HLP___f3"><span class="fA ">FLIP CHAR [char] [dir]</span></a>
  5522. The character picture of the stated character is flipped
  5523. vertically if the direction is north/south, or horizontally if
  5524. the direction is east/west.
  5525. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  5526. <a class="helpanchor" name="COMMAND2.HLP___o2"><span class="fA ">OVERLAY ON</span></a>
  5527. <a class="helpanchor" name="COMMAND2.HLP___o3"><span class="fA ">OVERLAY STATIC</span></a>
  5528. <a class="helpanchor" name="COMMAND2.HLP___o4"><span class="fA ">OVERLAY TRANSPARENT</span></a>
  5529. Turns the overlay on (to normal mode), to static mode, or to
  5530. transparent mode.
  5531. <a class="helplink" href="#TOVERLAY.HLP__081">Editing and Using the Overlay</a>
  5532. <a class="helpanchor" name="COMMAND2.HLP___rE"><span class="fA ">ROTATECW</span></a>
  5533. <a class="helpanchor" name="COMMAND2.HLP___rF"><span class="fA ">ROTATECCW</span></a>
  5534. Rotates all pushable items around the Robot in a clockwise or
  5535. counter-clockwise direction, respectively. This is done in the
  5536. same manner as a CW Rotate or CCW Rotate object.
  5537. <a class="helpanchor" name="COMMAND2.HLP___s4"><span class="fA ">SCROLL CHAR [char] [dir]</span></a>
  5538. The character picture of the stated character is scrolled one
  5539. pixel in the given direction, with wraparound in effect. This
  5540. command will not work as expected in SMZX modes.
  5541. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  5542. <a class="helpanchor" name="COMMAND2.HLP___s5"><span class="fA ">SCROLLARROW COLOR [color]</span></a>
  5543. <a class="helpanchor" name="COMMAND2.HLP___s6"><span class="fA ">SCROLLBASE COLOR [color]</span></a>
  5544. <a class="helpanchor" name="COMMAND2.HLP___s7"><span class="fA ">SCROLLCORNER COLOR [color]</span></a>
  5545. <a class="helpanchor" name="COMMAND2.HLP___s8"><span class="fA ">SCROLLPOINTER COLOR [color]</span></a>
  5546. <a class="helpanchor" name="COMMAND2.HLP___s9"><span class="fA ">SCROLLTITLE COLOR [color]</span></a>
  5547. Changes the color used to represent a specific element of the
  5548. Scroll and box-message system:
  5549. ARROW = The arrows used to denote options
  5550. BASE = The overall box and text color
  5551. CORNER = The color of the corners of the box, and of the
  5552. options in the option box at the bottom
  5553. POINTER = The color of the pointers on the left and right
  5554. TITLE = The color of the scroll/box title
  5555. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  5556. <a class="helpanchor" name="COMMAND2.HLP___s0"><span class="fA ">SCROLLVIEW [dir] #</span></a>
  5557. <a class="helpanchor" name="COMMAND2.HLP___sA"><span class="fA ">SCROLLVIEW POSITION # #</span></a>
  5558. <a class="helpanchor" name="COMMAND2.HLP___r0"><span class="fA ">RESETVIEW</span></a>
  5559. The first two commands scroll the current view a number of
  5560. spaces in one direction or until the given coordinates are in
  5561. the upper-left corner. RESETVIEW resets the view to normal,
  5562. showing the player in the center of the screen when possible.
  5563. <a class="helplink" href="#COMMANDS.HLP__dir">Directions</a>
  5564. <a class="helpanchor" name="COMMAND2.HLP___sK"><span class="fA ">SET COLOR # # # #</span></a>
  5565. The given color (stated by the first number) is changed to the
  5566. RGB values of the next three numbers. The RGB values must range
  5567. from 0 to 63. These are the same numbers shown in the palette
  5568. editor.
  5569. <a class="helpanchor" name="COMMAND2.HLP___sU"><span class="fA ">STATUS COUNTER # "counter"</span></a>
  5570. The status screen counter with the stated position # is changed
  5571. to the given counter. Valid positions for status counters range
  5572. from 1 (top slot) to 6 (bottom slot).
  5573. Status counters have a name limit of 14 characters; if the given
  5574. counter has a name over 14 characters long, this command will be
  5575. ignored.
  5576. <a class="helplink" href="#COUNTERS.HLP__1st">Counters, Built-in Counters and Local Counters</a>
  5577. <a class="helpanchor" name="COMMAND2.HLP___sV"><span class="fA ">SWAP WORLD "file"</span></a>
  5578. Transfers play to the first board in the stated world file.
  5579. All counters, items, keys, strings, etc. are retained from the
  5580. current world, and the target world starts fresh. The target
  5581. file can be the same world that is currently running; this is a
  5582. simple way to "reset" the world while keeping progress in the
  5583. form of items and counters.
  5584. <a class="helplink" href="#STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  5585. <a class="helpanchor" name="COMMAND2.HLP___pE"><span class="fA ">PUT [color] [char] OVERLAY # #</span></a>
  5586. <a class="helpanchor" name="COMMAND2.HLP___w7"><span class="fA ">WRITE OVERLAY [color] "string" # #</span></a>
  5587. Puts the given color/character at the given coordinates on the
  5588. overlay, or writes a message in the given color starting at the
  5589. given coordinates on the overlay.
  5590. <a class="helplink" href="#STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  5591. <a class="helplink" href="#TOVERLAY.HLP__081">Editing and Using the Overlay</a>
  5592. <a class="helplink" href="#COMMANDS.HLP__col">Colors</a>
  5593. <a class="helpanchor" name="COMMAND2.HLP___v1"><span class="fA ">VIEWPORT # #</span></a>
  5594. Moves the viewport's upper-left corner to the given screen
  5595. coordinates. X ranges from 0 to 79, and Y ranges from 0 to 24.
  5596. <a class="helpanchor" name="COMMAND2.HLP___v2"><span class="fA ">VIEWPORT SIZE # #</span></a>
  5597. Changes the size of the viewport. X size must be from 1 to 80,
  5598. and Y size must be from 1 to 25.
  5599. <a class="helplink" href="#COMMANDR.HLP__1st">Command Reference (Part I)</a>
  5600. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  5601. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  5602. <hr /></div>
  5603. <div class="helpfile" id="BULLETTY.HLP">
  5604. <a class="helpanchor" name="BULLETTY.HLP__1st"> </a>
  5605. <p class="helpcentered"><span class="f9 ">Bullet Types</span></p>
  5606. There are three different types of bullets in MegaZeux: Player,
  5607. Enemy, and Neutral. The player shoots Player bullets, enemies
  5608. shoot Enemy bullets, and ricocheted bullets become Neutral
  5609. bullets. A Robot can shoot any type of bullet, according to its
  5610. BULLETTYPE counter, but it defaults to Neutral bullets.
  5611. All fired Enemy bullets, even those shot from Robots, become
  5612. Neutral bullets when the option "Enemies' bullets can hurt
  5613. enemies" is set. Only pre-placed Enemy bullets will remain Enemy
  5614. bullets in this case.
  5615. Player bullets can only hurt enemies. Enemy bullets can only
  5616. hurt the player. Neutral bullets can hurt either. Robots go to
  5617. different labels when shot with each one, or to a generic SHOT
  5618. label if there are none of the specific PLAYERSHOT, ENEMYSHOT,
  5619. or NEUTRALSHOT labels.
  5620. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  5621. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  5622. <hr /></div>
  5623. <div class="helpfile" id="CHANGECH.HLP">
  5624. <a class="helpanchor" name="CHANGECH.HLP__1st"> </a>
  5625. <p class="helpcentered"><span class="f9 ">CHANGE CHAR ID - The CHAR ID Table</span></p>
  5626. The CHAR ID table has many uses. The first area of usage - the
  5627. CHANGE CHAR ID # [char] command - basically changes the value
  5628. (a character, color, or number) of a given type of item. These
  5629. values correspond to the Global Chars or Damage tables from
  5630. Global Info. The first number in the command states what is to
  5631. change. (Note - if noted, the number corresponds to a color or
  5632. damage. Otherwise, it is a character.) These numbers are also
  5633. listed next to things in the Global Edit Chars menus.
  5634. The second area - using the BOARD_ID, BIDx,y or UIDx,y counters
  5635. - will change an actual item instead of that entry's value;
  5636. i.e. these counters transform the actual item (and ONLY that
  5637. item) at a specific pair of coordinates from one type to
  5638. another.
  5639. WARNING: Changing certain CHAR ID values will have decidedly
  5640. special effects:
  5641. <span class="fA ">*</span><span class="fF ">Changing the value of any Custom type will turn ALL of that</span>
  5642. type into the given character; same with text.
  5643. <span class="fA ">*</span><span class="fF ">There is a special exception to this, though. If the value is</span>
  5644. (char) 255, then all items of that type act like Custom objects
  5645. and assume a character based on their parameter (e.g. p01
  5646. objects will use character 1). This can allow built-ins of the
  5647. same type that display different characters in-game at the same
  5648. time. Some built-ins may show interesting effects if set to
  5649. this, such as gaining animation frames.
  5650. <span class="fA ">*</span><span class="fF ">Changing the CHAR IDs of objects with animations or four</span>
  5651. directional characters will fix ALL animations/chars of that
  5652. object type to the given character.
  5653. <span class="fA ">*</span><span class="fF ">It is inadvisable to use any UNUSED values.</span>
  5654. <span class="fA ">*</span><span class="fF ">Using CHAR ID to change between actual items only works</span>
  5655. with values <122. For example, changing something into Ice by
  5656. setting BOARD_ID to 160 will not work, but setting BOARD_ID to
  5657. 25 will. However, there is no such restriction with changing
  5658. CHAR ID table values using CHANGE CHAR ID.
  5659. <span class="fA ">*</span><span class="fF ">Damage values start at 327. Not all values are listed, because</span>
  5660. technically you can assign damage values for things that cannot
  5661. give damage (i.e. pretty much everything not listed in the
  5662. table). If you really want to manipulate damage values for such
  5663. items, to find the CHAR ID number for an item, just add 327 to
  5664. it.
  5665. Number Changes
  5666. ------ -------
  5667. 0 Space
  5668. 1 Normal
  5669. 2 Solid
  5670. 3 Tree
  5671. 4 Line
  5672. 5 Custom Block
  5673. 6 Breakaway
  5674. 7 Custom Break
  5675. 8 Boulder
  5676. 9 Crate
  5677. 10 Custom Push
  5678. 11 Box
  5679. 12 Custom Box
  5680. 13 Fake
  5681. 14 Carpet
  5682. 15 Floor
  5683. 16 Tiles
  5684. 17 Custom Floor
  5685. 18 Web
  5686. 19 Thick Web
  5687. 20 Still Water
  5688. 21 N Water
  5689. 22 S Water
  5690. 23 E Water
  5691. 24 W Water
  5692. 25 Ice
  5693. 26 Lava
  5694. 27 Chest
  5695. 28 Gem
  5696. 29 Magic Gem
  5697. 30 Health
  5698. 31 Ring
  5699. 32 Potion
  5700. 33 Energizer
  5701. 34 Goop
  5702. 35 Ammo
  5703. 36 Bomb
  5704. 37 Lit Bomb
  5705. 38 Explosion
  5706. 39 Key
  5707. 40 Lock
  5708. 41 Door
  5709. 42 Open Door
  5710. 43 Stairs
  5711. 44 Cave
  5712. 45 CW Rotate
  5713. 46 CCW Rotate
  5714. 47 Gate
  5715. 48 Open Gate
  5716. 49 Transport
  5717. 50 Coin
  5718. 51 N Moving Wall
  5719. 52 S Moving Wall
  5720. 53 E Moving Wall
  5721. 54 W Moving Wall
  5722. 55 Pouch
  5723. 56 Pusher
  5724. 57 Slider NS
  5725. 58 Slider EW
  5726. 59 Lazer
  5727. 60 Lazer Gun
  5728. 61 Bullet
  5729. 62 Missile
  5730. 63 Fire
  5731. 64 UNUSED
  5732. 65 Forest
  5733. 66 Life
  5734. 67-70 Whirlpool Anim 1-4
  5735. 71 Invis Wall
  5736. 72 Ricochet Panel
  5737. 73 Ricochet
  5738. 74 Mine
  5739. 75 Spike
  5740. 76 Custom Hurt
  5741. 77 Text
  5742. 78 Shooting Fire
  5743. 79 Seeker
  5744. 80 Snake
  5745. 81 Eye
  5746. 82 Thief
  5747. 83 Slimeblob
  5748. 84 Runner
  5749. 85 Ghost
  5750. 86 Dragon
  5751. 87 Fish
  5752. 88 Shark
  5753. 89 Spider
  5754. 90 Goblin
  5755. 91 Spitting Tiger
  5756. 92 Bullet Gun
  5757. 93 Spinning Gun
  5758. 94 Bear
  5759. 95 Bear Cub
  5760. 96 UNUSED
  5761. 97 Missile Gun
  5762. 98 Sprite
  5763. 99 Sprite Collision
  5764. 100 Image File
  5765. 101-121 UNUSED
  5766. 122 Sensor
  5767. 123 Pushable Robot
  5768. 124 Robot
  5769. 125 Sign
  5770. 126 Scroll
  5771. 127 Player
  5772. 128-143 Thin Lines (Web) (see below)
  5773. 144-159 Thick Lines (Thick Web, Lines) (see below)
  5774. 160 Ice
  5775. 161-163 Ice Anim 1-3
  5776. 164-166 Lava Anim 1-3
  5777. 167 Small Ammo (below 10)
  5778. 168 Large Ammo (above or equal to 10)
  5779. 169-175 Lit Bomb Anim 1-7
  5780. 176-183 Energizer Color Anim 1-8
  5781. 184-187 Explosion Colors 1-4
  5782. 188 Horizontal Door
  5783. 189 Vertical Door
  5784. 190-193 CW Rotate Anim 1-4
  5785. 194-197 CCW Rotate Anim 1-4
  5786. 198-229 UNUSED
  5787. 230-233 Transport N Anim 1-4
  5788. 234-237 Transport S Anim 1-4
  5789. 238-241 Transport E Anim 1-4
  5790. 242-245 Transport W Anim 1-4
  5791. 246-249 Transport All-Dir Anim 1-4
  5792. 250 Thick Arrow N (Pusher/Spike)
  5793. 251 Thick Arrow S (Pusher/Spike)
  5794. 252 Thick Arrow E (Pusher/Spike)
  5795. 253 Thick Arrow W (Pusher/Spike)
  5796. 254 Thin Arrow N (Guns)
  5797. 255 Thin Arrow S (Guns)
  5798. 256 Thin Arrow E (Guns)
  5799. 257 Thin Arrow W (Guns)
  5800. 258-261 Horizontal Lazer Anim 1-4
  5801. 262-265 Vertical Lazer Anim 1-4
  5802. 266-271 Fire Anim 1-6
  5803. 272-277 Fire Color Anim 1-6
  5804. 278-281 Life Anim 1-4
  5805. 282-285 Life Color Anim 1-4
  5806. 286 Ricochet Panel \
  5807. 287 Ricochet Panel /
  5808. 288-289 Mine Anim 1-2
  5809. 290-291 Shooting Fire Anim 1-2
  5810. 292-293 Shooting Fire Color Anim 1-2
  5811. 294-297 Seeker Anim 1-4
  5812. 298-301 Seeker Color Anim 1-4
  5813. 302-305 Whirlpool Color Anim 1-4
  5814. 306-309 Player Bullets, NSEW
  5815. 310-313 Neutral Bullets, NSEW
  5816. 314-317 Enemy Bullets, NSEW
  5817. 318-321 Player, NSEW
  5818. 322 Player Color
  5819. 323 Missile Color
  5820. 324 Player Bullet Color
  5821. 325 Neutral Bullet Color
  5822. 326 Enemy Bullet Color
  5823. 353 Lava Damage
  5824. 365 Explosion Damage
  5825. 386 Lazer Damage
  5826. 388 Bullet Damage
  5827. 389 Missile Damage
  5828. 390 Fire Damage
  5829. 402 Spike Damage
  5830. 403 Custom Hurt Damage
  5831. 405 Shooting Fire Damage
  5832. 406 Seeker Damage
  5833. 407 Snake Damage
  5834. 410 Slimeblob Damage
  5835. 411 Runner Damage
  5836. 412 Ghost Damage
  5837. 413 Dragon Damage
  5838. 414 Fish Damage
  5839. 415 Shark Damage
  5840. 416 Spider Damage
  5841. 417 Goblin Damage
  5842. 418 Spitting Tiger Damage
  5843. 421 Bear Damage
  5844. 422 Bear Cub Damage
  5845. To change a character, use the following form:
  5846. <span class="fA ">CHANGE CHAR ID # [char]</span>
  5847. # is the number corresponding to the character that you want to
  5848. change, or a counter representing that number. [char] is the
  5849. character (or counter representing the character) that you wish
  5850. to change it to.
  5851. To change a color, use the following form:
  5852. <span class="fA ">CHANGE CHAR ID # [color]</span>
  5853. # is the same as above, but corresponding to a color. [color]
  5854. is the color or a counter representing the color that you wish
  5855. to change it to.
  5856. To change damage values, use a number or counter in place of
  5857. the [char] or [color].
  5858. After typing in a [color] or damage value, it may change to a
  5859. character representation, but the value will still remain the
  5860. same.
  5861. To change line characters:
  5862. Take the base number for the type of line you wish to change
  5863. (128 for thin, 144 for thick) and add one of the following
  5864. values to represent which sides are connected via other web or
  5865. lines:
  5866. 0 -
  5867. 1 N
  5868. 2 S
  5869. 3 N S
  5870. 4 E
  5871. 5 E N
  5872. 6 E S
  5873. 7 E N S
  5874. 8 W
  5875. 9 W N
  5876. 10 W S
  5877. 11 W N S
  5878. 12 W E
  5879. 13 W E N
  5880. 14 W E S
  5881. 15 W E N S
  5882. <a class="helplink" href="#COMMAND2.HLP___c3">CHANGE CHAR ID # [char]</a>
  5883. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  5884. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  5885. <hr /></div>
  5886. <div class="helpfile" id="BUILTINL.HLP">
  5887. <a class="helpanchor" name="BUILTINL.HLP__1st"> </a>
  5888. <p class="helpcentered"><span class="f9 ">Built-in Labels</span></p>
  5889. Robotic has many built-in labels (messages) that are activated
  5890. on certain external events. Each label, and what triggers it,
  5891. is listed below.
  5892. Subroutine versions of most labels exist. If a built-in label
  5893. has a subroutine version, [#] will be listed to the right of
  5894. its name. If both forms exist, they will both be triggered,
  5895. with the subroutine version being triggered first, and the
  5896. normal version triggered as the subroutine is left.
  5897. Special care is required when dealing with built-in subroutine
  5898. labels; to prevent abuse of the stack, using LOCKPLAYER and/or
  5899. ZAP to keep subroutine calls to an absolute minimum is highly
  5900. advised. Subroutines themselves are explained in another
  5901. section.
  5902. <a class="helplink" href="#SUBROUTE.HLP__sub">Subroutines</a>
  5903. <span class="fE ">TOUCH [#]</span>
  5904. This is sent when the player touches the Robot, that is, when
  5905. the player is next to it and tries moving into it. If the player
  5906. is locked in that direction, this label is not sent.
  5907. <span class="fE ">THUD [#]</span>
  5908. This is sent when the Robot is walking and it runs into a
  5909. non-pushable obstacle. This label is not sent when the obstacle
  5910. is hit during a <span class="fE ">GO [dir] #</span><span class="fF "> or the </span><span class="fE ">/ "string"</span><span class="fF "> command. THUD</span>
  5911. ignores LOCKSELF. This label will be constantly triggered if the
  5912. condition persists.
  5913. <a class="helplink" href="#COMMANDR.HLP___w5">WALK [dir]</a>
  5914. <span class="fE ">EDGE [#]</span>
  5915. This is sent when the Robot is walking and it runs into the
  5916. edge of the board. If EDGE is not found, the Robot is sent to
  5917. THUD. This label is not sent when the edge of the board is hit
  5918. during the <span class="fE ">GO [dir] #</span><span class="fF "> or the </span><span class="fE ">/ "string"</span><span class="fF "> commands. EDGE</span>
  5919. ignores LOCKSELF. This label will be constantly triggered if the
  5920. condition persists.
  5921. <a class="helplink" href="#COMMANDR.HLP___w5">WALK [dir]</a>
  5922. <span class="fE ">BOMBED [#]</span>
  5923. This is sent when the Robot is hit with an explosion.
  5924. <span class="fE ">KEY? [#]</span>
  5925. This is sent when the player presses the given key. ? should be
  5926. replaced with the key to be scanned for. Characters a to z and 0
  5927. to 9 work as expected. Shifted alphabetic characters will NOT
  5928. work, and will actually scan as their non-shifted counterparts.
  5929. Any other character that can be outputted directly, such as ";"
  5930. or "*" or "=", will work, and "key " will detect the space bar.
  5931. Other characters can be entered by pressing F3 and selecting
  5932. them from the grid, but they are usually not guaranteed to work.
  5933. Special-case characters that can work with KEY? are character 8
  5934. (BackSpace), character 9 (Tab), character 27 (Esc), character
  5935. 127 (Delete) and character 13 (Enter, though there's a better
  5936. label just for this mentioned in the very next entry).
  5937. There is another way to scan for key presses - using counters.
  5938. They are called KEY_PRESSED, KEY, and KEY_CODE, and are detailed
  5939. in the Miscellaneous Counters section of the help file.
  5940. <a class="helplink" href="#COUNTERS.HLP__msc">Miscellaneous Counters</a>
  5941. <span class="fE ">KEYENTER [#]</span>
  5942. This is sent when the player presses the Enter key.
  5943. <span class="fE ">INVINCO [#]</span>
  5944. This is sent when the player grabs an energizer.
  5945. <span class="fE ">PUSHED [#]</span>
  5946. This is sent when a pushable Robot is pushed by something other
  5947. than the player.
  5948. <span class="fE ">ENEMYSHOT [#]</span>
  5949. <span class="fE ">PLAYERSHOT [#]</span>
  5950. <span class="fE ">NEUTRALSHOT [#]</span>
  5951. One of these is sent when the Robot is shot, correlating to the
  5952. type of bullet used. If the appropriate label is not found, the
  5953. Robot is sent to SHOT instead.
  5954. <span class="fE ">SHOT [#]</span>
  5955. This is sent when the Robot is shot by a bullet and the more
  5956. specific label cannot be found.
  5957. <span class="fE ">PLAYERHIT [#]</span>
  5958. This is sent when the player is shot with a bullet. If not
  5959. found, the Robot is sent to PLAYERHURT instead.
  5960. <span class="fE ">PLAYERHURT [#]</span>
  5961. This is sent when the player is hurt by anything other than a
  5962. bullet. Bullets send the Robot to PLAYERHIT, and only send it
  5963. to PLAYERHURT if PLAYERHIT cannot be found.
  5964. <span class="fE ">SPITFIRE [#]</span>
  5965. This is sent when the Robot is hit with shooting fire.
  5966. <span class="fE ">JUSTLOADED</span>
  5967. This is sent when the world was just loaded or restored from a
  5968. saved game. This is also sent upon swapping worlds; in that
  5969. case, it will only trigger if no JUSTENTERED label is set.
  5970. <span class="fE ">JUSTENTERED</span>
  5971. This is sent when the board was just entered or the world was
  5972. just started on this board. This is also sent upon swapping
  5973. worlds; in that case, if no JUSTENTERED label is set,
  5974. JUSTLOADED is triggered instead.
  5975. <span class="fE ">SENSORON</span>
  5976. This is sent by a Sensor when it is stepped upon by the player,
  5977. or the Sensor moves beneath the player.
  5978. <a class="helplink" href="#SENSORSW.HLP__094">Sensors</a>
  5979. <span class="fE ">SENSORTHUD</span>
  5980. This is sent by a Sensor when it tries to move and is blocked.
  5981. <a class="helplink" href="#SENSORSW.HLP__094">Sensors</a>
  5982. <span class="fE ">SENSORPUSHED</span>
  5983. This is sent by a Sensor when it is pushed by something.
  5984. <a class="helplink" href="#SENSORSW.HLP__094">Sensors</a>
  5985. <span class="fE ">LAZER [#]</span>
  5986. This is sent when the Robot is hit with a lazer.
  5987. <span class="fE ">GOOPTOUCHED [#]</span>
  5988. This is sent when the player touches Goop.
  5989. <span class="fE ">YES</span>
  5990. This is sent when the YES button is selected in an ASK box.
  5991. <span class="fE ">NO</span>
  5992. This is sent when either the NO button is selected in an ASK
  5993. box, or when ESC exits an ASK box.
  5994. <a class="helplink" href="#COMMAND2.HLP___a2">ASK "string"</a>
  5995. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  5996. <a class="helplink" href="#SENSORSW.HLP__094">Sensors</a>
  5997. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  5998. <hr /></div>
  5999. <div class="helpfile" id="COUNTERS.HLP">
  6000. <a class="helpanchor" name="COUNTERS.HLP__1st"> </a>
  6001. <p class="helpcentered"><span class="f9 ">Counters, Built-in Counters and Local Counters</span></p>
  6002. Counters are built-in variables, or stored values with names.
  6003. Each counter has a name, such as "Yellow" or "Apple Pies" or
  6004. even "100". A counter can hold a value from -2147483648 to
  6005. 2147483647, in most cases. A counter is "active" when it has a
  6006. value other than 0. There can be a practically unlimited amount
  6007. of active counters at any one time, in addition to the built-in
  6008. counters. Counters retain values between different boards.
  6009. Local counters, on the other hand, only hold their values for
  6010. one Robot. These are useful because multiple Robots can set
  6011. local counters with the exact same names without causing
  6012. conflicts. There are several local counters explicitly reserved
  6013. for use; these are the "local" & "local2" through "local32"
  6014. counters.
  6015. To display a counter's number, enclose the counter in
  6016. ampersands. (e.g. &counter&). This displays the counter value
  6017. in decimal. Sometimes hexadecimal is needed, like in certain
  6018. MegaZeux commands. To output a counter number in hex, add a
  6019. + to the front of the enclosed counter (e.g. &+hexcount&).
  6020. Lastly, other MegaZeux commands might require a two-digit
  6021. hex number; for these, add a # to the front of the enclosed
  6022. counter (e.g. &#twodigithex&). Note that in this case, only the
  6023. two most significant digits will be used (e.x. the number
  6024. 'abcdef' becomes 'AB') and single-digit numbers will gain a
  6025. trailing zero (e.x. the number '8' will become '08').
  6026. Also, characters can be used as counters in commands. For
  6027. example: SET "boom" to '0' would come out as SET "boom" to 48.
  6028. It's quite a difference!
  6029. The following is a list of built-in counters, which all have
  6030. special meanings. There are four types of built-in counters:
  6031. Global, which affect everything; Local, which are different for
  6032. each Robot and require special handling for other Robots to
  6033. manipulate; Board, which are specific to the current board; and
  6034. Universal, which persist for the entire time MegaZeux is
  6035. running. Some built-in counters are read-only; a few are
  6036. write-only.
  6037. MegaZeux utilizes a large number of built-in counters to
  6038. maximize flexibility. For this reference, they have been
  6039. divided into distinct sections.
  6040. <a class="helplink" href="#COUNTERS.HLP__ply">Player Counters</a>
  6041. <a class="helplink" href="#COUNTERS.HLP__rob">Robot Counters</a>
  6042. <a class="helplink" href="#COUNTERS.HLP__brd">Board Counters</a>
  6043. <a class="helplink" href="#COUNTERS.HLP__mth">Mathematical Counters</a>
  6044. <a class="helplink" href="#COUNTERS.HLP__fac">File Access Counters</a>
  6045. <a class="helplink" href="#COUNTERS.HLP__spc">Sprite Counters</a>
  6046. <a class="helplink" href="#COUNTERS.HLP__stc">String Counters</a>
  6047. <a class="helplink" href="#COUNTERS.HLP__szc">Super MZX Counters</a>
  6048. <a class="helplink" href="#COUNTERS.HLP__cha">Character Edit Counters</a>
  6049. <a class="helplink" href="#COUNTERS.HLP__chu">Mouse Counters</a>
  6050. <a class="helplink" href="#COUNTERS.HLP__def">Defaults Counters</a>
  6051. <a class="helplink" href="#COUNTERS.HLP__vlc">Vlayer Counters</a>
  6052. <a class="helplink" href="#COUNTERS.HLP__msc">Miscellaneous Counters</a>
  6053. <p class="helpcentered">Player Counters</p><a class="helpanchor" name="COUNTERS.HLP__ply"> </a>
  6054. <span class="fB ">GEMS, AMMO, LOBOMBS, HIBOMBS, COINS, LIVES, HEALTH</span>
  6055. These contain the current number of the stated item that the
  6056. player currently has.
  6057. <span class="fB ">INVINCO</span>
  6058. The number of cycles of invincibility the player currently has.
  6059. <span class="fB ">SCORE</span>
  6060. The player's current score.
  6061. <span class="fB ">PLAYERLASTDIR</span>
  6062. The last direction the player moved: 0 for none, or 1 2 3 4 for
  6063. N S E W. Used to determine ice slippage and certain other
  6064. effects.
  6065. <span class="fB ">PLAYERFACEDIR</span>
  6066. The direction the player is facing: 0 1 2 3 for N S E W. Used
  6067. to determine which player character to display.
  6068. <span class="fB ">PLAYERX (read-only)</span>
  6069. <span class="fB ">PLAYERY (read-only)</span>
  6070. The x or y coordinate of the player, respectively.
  6071. <p class="helpcentered">Robot Counters</p><a class="helpanchor" name="COUNTERS.HLP__rob"> </a>
  6072. <span class="fB ">PLAYERDIST (read-only, local)</span>
  6073. The distance from the Robot to the player, in spaces. The sum
  6074. of HORIZPLD and VERTPLD.
  6075. <span class="fB ">HORIZPLD (read-only, local)</span>
  6076. <span class="fB ">VERTPLD (read-only, local)</span>
  6077. The horizontal or vertical distance from the Robot to the
  6078. player, in spaces.
  6079. <span class="fB ">THISX (read-only, local)</span>
  6080. <span class="fB ">THISY (read-only, local)</span>
  6081. The current X or Y coordinate of the Robot. Affected by
  6082. prefixes - If a command that uses THISX and THISY is prefaced
  6083. with a REL PLAYER command, THISX and THISY will be generated
  6084. based on the player's current position. For example, if the
  6085. player is at (2,2) and the Robot is at (5,5), THISX and THISY
  6086. will be 3. If the player is at (8,8), THISX and THISY will be
  6087. -3. If a command that uses THISX and THISY is prefaced with
  6088. a REL COUNTERS command, THISX and THISY will be generated
  6089. based on XPOS and YPOS. Basically, THISX and THISY will be
  6090. set to THISX-XPOS and THISY-YPOS.
  6091. <a class="helplink" href="#COMMAND2.HLP__pre">REL COUNTERS</a>
  6092. <a class="helplink" href="#COMMAND2.HLP___r2">REL PLAYER</a>
  6093. <span class="fB ">BULLETTYPE (local)</span>
  6094. The current type of bullet shot by the Robot: 0 for Player, 1
  6095. for Neutral, and 2 for Enemy. Technically, this counter can
  6096. hold any number from 0 to 255, but only 0, 1 and 2 have
  6097. defined behavior. The others essentially set the Robot to shoot
  6098. Enemy bullets, if actually used to affect shot bullets.
  6099. <a class="helplink" href="#BULLETTY.HLP__1st">Bullet Types</a>
  6100. <span class="fB ">COMMANDS</span>
  6101. The number of commands executed per cycle (40 is default). This
  6102. number is global. It can severely slow MegaZeux if set too high
  6103. and coupled with poor coding (especially busy loops lacking
  6104. cycle-ending commands).
  6105. <span class="fB ">LOOPCOUNT (local)</span>
  6106. The counter used for looping commands in Robotic - LOOP START,
  6107. LOOP #, and ABORT LOOP.
  6108. <a class="helplink" href="#COMMANDR.HLP___lC">LOOP START</a>
  6109. <span class="fB ">ROBOT_ID (read-only, local)</span>
  6110. The internal ID of the Robot.
  6111. <span class="fB ">RID<Robot name> (read-only)</span>
  6112. <span class="fB ">ROBOT_ID_<Robot name> (read-only)</span>
  6113. Both of these give the robot_id number of the given named
  6114. Robot. In the case of multiple robots with the same name, the
  6115. ID number corresponds to only one of them (the one with the
  6116. largest robot_id). If no robots have the name, or if the name
  6117. in question only belongs to the global Robot, -1 is given.
  6118. BEWARE: The existence of this counter makes it impossible to
  6119. use words which start with "rid" as counters. The port will NOT
  6120. fall through and give the values of any counter that starts
  6121. with "rid"; instead, it ends at -1 (since the Robot the counter
  6122. is trying to find, like "dles" (for "riddles"), will most
  6123. likely not exist). Older games will allow this, but only for
  6124. compatibility reasons.
  6125. <a class="helpanchor" name="COUNTERS.HLP__rnc"> </a>
  6126. <span class="fB ">Rn.<counter></span>
  6127. Contains the value of the given counter (without the angle
  6128. brackets) in the Robot with the robot_id number n. If no Robot
  6129. exists with this robot_id, the counter will return -1.
  6130. <span class="fB ">THIS_COLOR (read-only, local)</span>
  6131. <span class="fB ">THIS_CHAR (read-only, local)</span>
  6132. The current color and character of the Robot, respectively.
  6133. <span class="fB ">LAVA_WALK (local)</span>
  6134. Controls whether the Robot can walk on lava or not. Setting
  6135. this to 1 is the equivalent of using the BECOME LAVAWALKER
  6136. command. Setting it to 0 is the same as BECOME NONLAVAWALKER.
  6137. Like BULLETTYPE, this counter can hold any value from 0 to 255,
  6138. but only 0 and 1 have defined behavior. This was a popular
  6139. local counter before the local counters were plentiful, as most
  6140. Robots didn't deal with lava.
  6141. <a class="helplink" href="#COMMANDR.HLP___b4">BECOME LAVAWALKER</a>
  6142. <span class="fB ">LOCAL (local)</span>
  6143. <span class="fB ">LOCAL2 (local)</span>
  6144. ..
  6145. <span class="fB ">LOCAL32 (local)</span>
  6146. The non-special local counters each Robot can use. In effect,
  6147. any number can be used, not just 2-32; the counter accessed by
  6148. it would be N%32 (so, for example, any change to "local0" would
  6149. have the same effect as changing "local32"). LOCAL is the same
  6150. as LOCAL1.
  6151. <span class="fB ">GOOP_WALK (local)</span>
  6152. Controls whether the Robot can walk on goop or not. A value of 0
  6153. prevents walking on goop; a non-zero value allows it. This
  6154. counter has an effective range of 0 to 255.
  6155. <p class="helpcentered">Board Counters</p><a class="helpanchor" name="COUNTERS.HLP__brd"> </a>
  6156. <span class="fB ">BOARD_ID</span>
  6157. Reads or alters the CHAR ID value of the object located at
  6158. "board_x" "board_y".
  6159. <a class="helplink" href="#CHANGECH.HLP__1st">CHANGE CHAR ID - The CHAR ID Table</a>
  6160. <span class="fB ">BOARD_PARAM</span>
  6161. Reads or alters the parameter of the object located at
  6162. "board_x" "board_y".
  6163. <span class="fB ">BOARD_W (read-only, board)</span>
  6164. <span class="fB ">BOARD_H (read-only, board)</span>
  6165. The current board's width and height, respectively.
  6166. <span class="fB ">TIME (board)</span>
  6167. The current timer value, between 0 and the time limit for the
  6168. current board. If there is no time limit set, setting this
  6169. counter will cause the timer to tick down but turn off after it
  6170. runs out.
  6171. <span class="fB ">TIMERESET (board)</span>
  6172. The time limit for the current board. 0 for no time limit.
  6173. NOTE: This timer was erroneously called "TIMERSET" in some
  6174. versions. MZX will NOT use TIMERSET as a synonym for this
  6175. counter in current versions.
  6176. <span class="fB ">SCROLLEDX (board, read-only)</span>
  6177. <span class="fB ">SCROLLEDY (board, read-only)</span>
  6178. The top-left corner of the screen's x or y coordinates,
  6179. respectively.
  6180. <span class="fB ">BOARD_X (board)</span>
  6181. <span class="fB ">BOARD_Y (board)</span>
  6182. <span class="fB ">BOARD_COLOR (read-only, board)</span>
  6183. <span class="fB ">BOARD_CHAR (read-only, board)</span>
  6184. Set BOARD_X and BOARD_Y to the x,y coordinates of a cell on the
  6185. current board, and BOARD_COLOR and BOARD_CHAR will automatically
  6186. hold the color and character values for that cell, respectively.
  6187. One thing to note is that BOARD_COLOR will not take background
  6188. color 0's transparency into account. For example, assuming
  6189. default colors, if a white-on-black Robot walks onto a
  6190. yellow-on-blue floor tile, the Robot appears as white-on-blue on
  6191. the screen, but this counter will still report it as
  6192. white-on-black instead of the displayed colors.
  6193. <span class="fB ">BCHx,y (read-only, board)</span>
  6194. Allows the reading of single characters to the board with
  6195. regards to coordinates x,y; the comma must be included.
  6196. <span class="fB ">BCOx,y (read-only, board)</span>
  6197. Allows the reading of single colors to the board with regards
  6198. to coordinates x,y; the comma must be included. Much like
  6199. BOARD_COLOR, BCOx,y will not take transparency into account.
  6200. <span class="fB ">BIDx,y (board)</span>
  6201. Allows reading and writing of the CHAR ID of an object on the
  6202. board at the coordinates x,y; the comma must be included.
  6203. <span class="fB ">BPRx,y (board)</span>
  6204. Allows reading and writing parameter values of an object on the
  6205. board at the coordinates x,y; the comma must be included.
  6206. <span class="fB ">UCHx,y (read-only, board)</span>
  6207. Allows the reading of single characters on the under layer at
  6208. the coordinates x,y; the comma must be included.
  6209. <span class="fB ">UCOx,y (read-only, board)</span>
  6210. Allows the reading of single colors on the under layer at the
  6211. coordinates x,y; the comma must be included.
  6212. <span class="fB ">UIDx,y (board)</span>
  6213. Allows reading and writing of the CHAR ID of an object on the
  6214. under layer at the coordinates x,y; the comma must be included.
  6215. <span class="fB ">UPRx,y (board)</span>
  6216. Allows reading and writing parameter values of an object on the
  6217. under layer at the coordinates x,y; the comma must be included.
  6218. All of the above four under layer counters will fail if any
  6219. floor-type object (fake, floor, carpet, ice, lava, etc) is
  6220. currently occupying the board layer at the given coordinates.
  6221. <span class="fB ">OVERLAY_X (board)</span>
  6222. <span class="fB ">OVERLAY_Y (board)</span>
  6223. <span class="fB ">OVERLAY_CHAR (read-only, board)</span>
  6224. <span class="fB ">OVERLAY_COLOR (read-only, board)</span>
  6225. These work in the same way as the BOARD_xxx counters above, but
  6226. deal with the overlay instead.
  6227. <span class="fB ">OCHx,y (read-only, board)</span>
  6228. Allows the reading of single characters on the overlay at the
  6229. coordinates x,y; the comma must be included.
  6230. <span class="fB ">OCOx,y (read-only, board)</span>
  6231. Allows the reading of single colors on the overlay at the
  6232. coordinates x,y; the comma must be included.
  6233. <span class="fB ">OVERLAY_MODE (read-only, board)</span>
  6234. Shows the state of the overlay. 0 is off, 1 is normal, 2 is
  6235. static and 3 is transparent.
  6236. <span class="fB ">MOD_FREQUENCY (board)</span>
  6237. Controls the frequency (in Hz) of the currently playing module/
  6238. OGG music. Note that this value is NOT saved by save files, so
  6239. if necessary, it needs set again after a save gets loaded.
  6240. <a class="helplink" href="#SOUNDEFX.HLP__frq">SAM, OGG, MOD and WAV Frequencies</a>
  6241. <span class="fB ">MOD_ORDER (board)</span>
  6242. Controls the current mod order of the currently playing mod.
  6243. <span class="fB ">MOD_POSITION (board)</span>
  6244. Controls the current row in tracked modules, or the current PCM
  6245. sample in other types of audio files.
  6246. <span class="fB ">MOD_LENGTH (read-only, board)</span>
  6247. Displays the length of the currently playing mod. This counter's
  6248. value shows number of rows for module files and number of
  6249. samples for WAV/OGG files.
  6250. <p class="helpcentered">Mathematical Counters</p><a class="helpanchor" name="COUNTERS.HLP__mth"> </a>
  6251. <span class="fB ">ABSn</span>
  6252. Gives the absolute value of the number n.
  6253. <span class="fB ">SQRTn</span>
  6254. Gives the integer approximation of the square root of n. Results
  6255. are truncated, not rounded.
  6256. <span class="fB ">MINx,y</span>
  6257. Takes the numbers x and y and outputs the smaller number. The
  6258. comma is required.
  6259. <span class="fB ">MAXx,y</span>
  6260. Takes the numbers x and y and outputs the larger number. The
  6261. comma is required.
  6262. <span class="fB ">MULTIPLIER</span>
  6263. Multiplies values output by the normal trigonometric functions
  6264. (sin, cos, tan) by the given number.
  6265. <span class="fB ">DIVIDER</span>
  6266. Divides the number given to the inverse trigonometric functions
  6267. (asin, acos, atan) by the given number.
  6268. <span class="fB ">C_DIVISIONS</span>
  6269. Determines how many divisions the base circle in MegaZeux's
  6270. trigonometric functions is divided.
  6271. <span class="fB ">SINn</span>
  6272. <span class="fB ">COSn</span>
  6273. <span class="fB ">TANn</span>
  6274. <span class="fB ">ASINn</span>
  6275. <span class="fB ">ACOSn</span>
  6276. <span class="fB ">ATANn</span>
  6277. <span class="fB ">ARCTANdy,dx</span>
  6278. Accesses MegaZeux's sine, cosine, tangent, inverse sine,
  6279. inverse cosine, inverse tangent, and atan2 functions
  6280. (respectively).
  6281. <a class="helplink" href="#TRIG.HLP__tri">Trigonometric Functions</a>
  6282. <p class="helpcentered">File Access Counters</p><a class="helpanchor" name="COUNTERS.HLP__fac"> </a>
  6283. <span class="fB ">FREAD_OPEN (function)</span>
  6284. <span class="fB ">FWRITE_OPEN (function)</span>
  6285. Opens a file for reading from or writing to, respectively. The
  6286. syntax is as such:
  6287. set "file.ext" to "FREAD_OPEN"
  6288. FREAD_OPEN will also read subdirectories with the given syntax:
  6289. set "dir" to "FREAD_OPEN"
  6290. <span class="fB ">FWRITE_MODIFY (function)</span>
  6291. This opens an existing file for reading without overwriting it,
  6292. starting at the beginning of the file.
  6293. <span class="fB ">FWRITE_APPEND (function)</span>
  6294. This opens a file for writing at the END of the file. Note that
  6295. all FWRITE_POS functionality is ignored in this mode.
  6296. <span class="fB ">FREAD_COUNTER (function)</span>
  6297. Reads four bytes from the open file.
  6298. <span class="fB ">FWRITE_COUNTER (function)</span>
  6299. Writes four bytes to the open file.
  6300. NOTE: The above two counters will have different functionality
  6301. in worlds made before MZX 2.82 (in the old implementation, they
  6302. use two bytes and are unsigned). This is purely for
  6303. compatibility reasons.
  6304. <span class="fB ">FREAD_POS</span>
  6305. <span class="fB ">FWRITE_POS</span>
  6306. The current reading or writing position of the accessed file.
  6307. 0 is the beginning position; when no file is loaded, the
  6308. relevant counter is -1. If set to -1, the position is set to the
  6309. end of the file.
  6310. <span class="fB ">FREAD_DELIMITER</span>
  6311. <span class="fB ">FWRITE_DELIMITER</span>
  6312. The character considered the terminator for fread and fwrite
  6313. operations, respectively.
  6314. <span class="fB ">FWRITE (function)</span>
  6315. <span class="fB ">FREAD (function)</span>
  6316. Writes strings to and read strings from, respectively, the open
  6317. file.
  6318. <span class="fB ">SAVE_ROBOT (function)</span>
  6319. <span class="fB ">LOAD_ROBOT (function)</span>
  6320. <span class="fB ">SAVE_ROBOTn (function)</span>
  6321. <span class="fB ">LOAD_ROBOTn (function)</span>
  6322. Saves or loads Robotic code to or from plaintext files,
  6323. respectively. The first forms save/load the current Robot,
  6324. while the second forms save/load the Robot with the Robot ID of
  6325. the number n.
  6326. With the LOAD_ROBOT functions, one can also load a string as a
  6327. Robot instead of a text file.
  6328. <span class="fB ">SAVE_BC (function)</span>
  6329. <span class="fB ">LOAD_BC (function)</span>
  6330. <span class="fB ">SAVE_BCn (function)</span>
  6331. <span class="fB ">LOAD_BCn (function)</span>
  6332. Saves or loads Robotic code to or from bitcode files,
  6333. respectively. The first forms save/load the current Robot,
  6334. while the second forms save/load the Robot with the Robot ID of
  6335. the number n.
  6336. Keep in mind that due to slated changes in MegaZeux, saving out
  6337. Robots (in either text or bytecode form) is considered a
  6338. deprecated function and may be removed entirely in the future.
  6339. <span class="fB ">SAVE_GAME (function)</span>
  6340. <span class="fB ">LOAD_GAME (function)</span>
  6341. Saves or loads MZX savegames, respectively.
  6342. <span class="fB ">SAVE_COUNTERS (function)</span>
  6343. <span class="fB ">LOAD_COUNTERS (function)</span>
  6344. Saves or loads MZX counter files, respectively.
  6345. <a class="helplink" href="#FILEACSS.HLP__fil">File Access</a>
  6346. <a class="helplink" href="#STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  6347. <p class="helpcentered">Sprite Counters</p><a class="helpanchor" name="COUNTERS.HLP__spc"> </a>
  6348. <span class="fB ">SPR_CLISTn (read-only)</span>
  6349. A list of flagged collisions after a collision test was
  6350. performed. Values of n from 0 to (SPR_COLLISIONS - 1) are
  6351. valid. If the foreground collided, SPR_CLIST0 is always set to
  6352. -1 to indicate this.
  6353. <span class="fB ">SPR_COLLISIONS (read-only)</span>
  6354. The number of sprites/foreground collisions listed in
  6355. SPR_CLISTn.
  6356. <span class="fB ">SPR_NUM</span>
  6357. When using p?? for a sprite this value is referenced. When
  6358. IF c?? Sprite p?? X Y is used, SPR_NUM is used to match the
  6359. highest sprite that's checked; i.e. it will check for all
  6360. sprite parameters from p00 to SPR_NUM, and will return true on
  6361. the first match.
  6362. <span class="fB ">SPR_YORDER (write-only)</span>
  6363. If set to 1, the sprites are drawn in order of lowest SPRn_CY
  6364. value to highest. Otherwise, the sprites are drawn in order of
  6365. their numbers.
  6366. <span class="fB ">SPRn_CCHECK (write-only)</span>
  6367. If set to 1, overlapping char 32s will not cause a collision
  6368. between sprites or the foreground. If set to 2, char 32s and
  6369. blank chars will also not collide, and blank characters will
  6370. not be drawn. If set to 3, the given unbound sprite will undergo
  6371. pixel-precise collision checks, and transparent colors will not
  6372. cause a collision. Setting to 0 will cancel any previously set
  6373. ccheck modes for that given sprite.
  6374. <span class="fB ">SPRn_CWIDTH</span>
  6375. <span class="fB ">SPRn_CHEIGHT</span>
  6376. The dimensions of the collision box around a sprite. (X and Y
  6377. dimensions, respectively)
  6378. <span class="fB ">SPRn_CLIST (write-only)</span>
  6379. Setting this counter to any value will perform a collision test
  6380. on sprite n against its current location.
  6381. <span class="fB ">SPRn_CX</span>
  6382. <span class="fB ">SPRn_CY</span>
  6383. The location, relative to the sprite's upper left corner, of
  6384. the sprite's collision box (X and Y coordinates, respectively).
  6385. <span class="fB ">SPRn_OFF (write-only)</span>
  6386. Turns the given sprite off if it is on.
  6387. <span class="fB ">SPRn_OVERLAID (write-only)</span>
  6388. <span class="fB ">SPRn_OVERLAY (write-only)</span>
  6389. If either is set to 1, these draw the given sprite n over the
  6390. overlay as opposed to underneath. Note that this has different
  6391. behavior depending on whether unbound sprites are present. If
  6392. there are any unbound sprites active, all overlaid sprites will
  6393. be drawn above all non-overlaid sprites (as well as over the
  6394. overlay). If unbound sprites are not in use, overlaid sprites
  6395. will be drawn above the overlay, but will otherwise respect the
  6396. standard sprite draw order.
  6397. <span class="fB ">SPRn_REFX</span>
  6398. <span class="fB ">SPRn_REFY</span>
  6399. Where the sprite's appearance is stored - either on the board
  6400. or the vlayer (see SPRn_VLAYER). Whatever this looks like at
  6401. this position is what the sprite will look like when drawn,
  6402. including the colors if c?? is used when placing the sprite.
  6403. <span class="fB ">SPRn_SETVIEW (write-only)</span>
  6404. Setting this to 1 will cause the viewport to be centered around
  6405. sprite n. This is useful for scrolling the screen, along with
  6406. sprite based players.
  6407. <span class="fB ">SPRn_STATIC (write-only)</span>
  6408. If set to 1, makes given sprite n act static (like a static
  6409. overlay, a static sprite always stays in a given position on
  6410. the screen); if this is 0, the sprite scrolls with the board.
  6411. SPRn_STATIC takes in SCROLLEDX and SCROLLEDY as collision
  6412. reference points, as opposed to the normal x,y coordinates.
  6413. <span class="fB ">SPRn_SWAP (write-only)</span>
  6414. Swaps the given sprite n with the sprite number to which this
  6415. function is set.
  6416. <span class="fB ">SPRn_VLAYER (write-only)</span>
  6417. If set to 1, the sprite is referenced from the vlayer instead
  6418. of the board.
  6419. <span class="fB ">SPRn_WIDTH</span>
  6420. <span class="fB ">SPRn_HEIGHT</span>
  6421. The dimensions of the sprite. (x and y dimensions,
  6422. respectively.)
  6423. <span class="fB ">SPRn_X</span>
  6424. <span class="fB ">SPRn_Y</span>
  6425. The current position of the sprite. This can be used to set the
  6426. sprite outside the edges of the board, whereas PUT c?? Sprite
  6427. p?? X Y disallows this.
  6428. <span class="fB ">SPRn_UNBOUND</span>
  6429. If set to 1, unbinds the given sprite n from the grid, making
  6430. its coordinates refer to pixel positions instead of tile
  6431. positions. Its dimensions (SPRn_HEIGHT, SPRn_WIDTH) and
  6432. reference coordinates (SPRn_REFX, SPRn_REFY) will still be
  6433. relative to tiles, but its current position (SPRn_X, SPRn_Y)
  6434. and collision box counters (SPRn_CX, SPRn_CY, SPRn_CWIDTH,
  6435. SPRn_CHEIGHT) will adhere to this change. See the Unbound
  6436. Sprites section in the Sprites help for more information.
  6437. <span class="fB ">SPRn_TCOL</span>
  6438. Sets which color provides transparency for a given unbound
  6439. sprite n. Setting to -1 disables transparency for that sprite.
  6440. <span class="fB ">SPRn_OFFSET</span>
  6441. Internally alters any number that refers to a character for a
  6442. given sprite n. In the case of unbound sprites, this number will
  6443. often be a multiple of 256 in order to access an extra charset,
  6444. but offset values within char sets may also be used.
  6445. <a class="helplink" href="#SPRITES.HLP__spr">Sprites</a>
  6446. <p class="helpcentered">String Counters</p><a class="helpanchor" name="COUNTERS.HLP__stc"> </a>
  6447. <span class="fB ">SET "$string" to "BOARD_NAME"</span>
  6448. Sets the given string to the name of the current board.
  6449. <span class="fB ">SET "$string" to "BOARD_SCAN"</span>
  6450. Sets the given string to a line of characters read directly
  6451. from the board starting at "board_x" "board_y" and terminating
  6452. at an asterisk (char 42), any instance of char 0, or after 63
  6453. characters (whichever comes first). This command is
  6454. deprecated; please use copy block to strings instead.
  6455. <span class="fB ">SET "$string" to "INPUT"</span>
  6456. Sets the given string to any input placed for the "input
  6457. string" command.
  6458. <span class="fB ">SET "$string" to "MOD_NAME"</span>
  6459. Sets the given string to the filename of the currently playing
  6460. module.
  6461. <span class="fB ">SET "$string" to "ROBOT_NAME"</span>
  6462. Sets the given string to the name of the Robot this command
  6463. is in.
  6464. <span class="fB ">SET "$string" to "FREAD"</span>
  6465. <span class="fB ">SET "$string" to "FREADn"</span>
  6466. Sets the given string to the contents of the currently open
  6467. file. FREAD stops at the terminator (*, or char 42, by default)
  6468. or at the end of the file. FREADn reads the first n characters
  6469. from the file. You can use FREAD with the #N string splicing
  6470. format to read up to N characters while still terminating on
  6471. the terminator.
  6472. <span class="fB ">SET "$string" to "FWRITE"</span>
  6473. <span class="fB ">SET "$string" to "FWRITEn"</span>
  6474. Places the contents of the given string into the currently open
  6475. file. FWRITE places the entire string, ending it with the
  6476. terminator character (*, or char 42, by default), while FWRITEn
  6477. only places the first n characters. If n goes over the string's
  6478. length, the entire string (and nothing else like whitespace or
  6479. garbage characters) will be placed.
  6480. <p class="helpcentered">Super MZX Counters</p><a class="helpanchor" name="COUNTERS.HLP__szc"> </a>
  6481. <span class="fB ">SMZX_MODE</span>
  6482. Determines whether Super MZX mode is off (0), 1, 2, or 3.
  6483. <span class="fB ">SMZX_Rn</span>
  6484. <span class="fB ">SMZX_Bn</span>
  6485. <span class="fB ">SMZX_Gn</span>
  6486. Changes or reads the value of color n's red/blue/green value,
  6487. respectively. These counters also work outside of SMZX modes;
  6488. in normal mode, numbers 0-15 alter the normal palette while
  6489. 16-31 alter the protected palette.
  6490. <span class="fB ">SMZX_IDXx,y</span>
  6491. Reads or sets the color of a tile with a given color x's yth
  6492. color. For example, <span class="fE ">SET "SMZX_IDX191,0" to 50</span><span class="fF "> would set the</span>
  6493. color number of the base color (color 0 out of 0-3) of a c1a
  6494. (color 191) tile to color 50. This applies to SMZX mode 3 only,
  6495. and only to renderers that support unbound sprites.
  6496. Keep in mind that all re-ordered indices will be set to normal
  6497. values when SMZX_MODE is changed.
  6498. <span class="fB ">SMZX_INDICES (function)</span>
  6499. Loads SMZX indices files. This only applies for SMZX Mode 3.
  6500. <span class="fB ">SMZX_MESSAGE</span>
  6501. Controls whether messages in the message row are displayed with
  6502. SMZX characters and colors in SMZX modes. 1 is yes, 0 is no
  6503. (displays in normal mode); the default value is 1.
  6504. <span class="fB ">SMZX_PALETTE (read-only)</span>
  6505. Loads a Super MZX palette. This counter is deprecated; please
  6506. use load palette instead.
  6507. <p class="helpcentered">Character Edit Counters</p><a class="helpanchor" name="COUNTERS.HLP__cha"> </a>
  6508. <span class="fB ">CHAR_X</span>
  6509. <span class="fB ">CHAR_Y</span>
  6510. <span class="fB ">PIXEL</span>
  6511. Set CHAR_X and CHAR_Y to a pixel location in the char set. You
  6512. can then set the PIXEL counter to one of the following to edit
  6513. the pixel:
  6514. 0 Turns the pixel OFF
  6515. 1 Turns the pixel ON
  6516. 2 Toggles the pixel
  6517. You can also read the counter to see the current state of the
  6518. chosen pixel. A value of 1 denotes that the pixel is set, and 0
  6519. if not.
  6520. The pixel location system works on a 32 x 8 grid of characters,
  6521. exactly like the 'Select Character' grid. Each character
  6522. consists of fourteen rows of eight pixels, which gives us 256
  6523. pixels across by 112 pixels down. Since we start counting at 0,
  6524. the top-left pixel of the top-left character (char 0) would be
  6525. 0,0. The bottom-right pixel of the bottom-right character
  6526. (char 255) would be 255,111. However, these counters become
  6527. worthless in SMZX modes.
  6528. <a class="helplink" href="#CHAREDIT.HLP__079">The Character Editor</a>
  6529. <span class="fB ">CHAR_BYTE</span>
  6530. <span class="fB ">CHAR</span>
  6531. <span class="fB ">BYTE</span>
  6532. Set CHAR to a character (0-255) and BYTE to one of the fourteen
  6533. bytes within the char (0-13). You can then read or write that
  6534. byte using the CHAR_BYTE counter. Char_byte values range from
  6535. 0-255, and the meaning of each char_byte setting changes between
  6536. normal mode and SMZX modes. Normal MZX graphics mode sets bytes
  6537. in binary (base 2); SMZX modes use quaternary (base 4).
  6538. It helps to write the number in binary/quaternary first, then
  6539. convert to decimal. Writing the numbers this way helps
  6540. demonstrate that whatever is desired to be set is set. The
  6541. values per pixel decrease going left to right.
  6542. Examples:
  6543. (Normal MZX mode, setting the third, fifth and seventh pixel)
  6544. Binary: 00101010
  6545. &#xE0DA;---&#xE0C2;--&#xE0C2;--&#xE0C2;--&#xE0C2;-&#xE0C2;-&#xE0C2;-&#xE0C2;-&#xE0BF;
  6546. |128|64|32|16|8|4|2|1|
  6547. &#xE0C3;---&#xE0C5;--&#xE0C5;--&#xE0C5;--&#xE0C5;-&#xE0C5;-&#xE0C5;-&#xE0C5;-&#xE0B4;
  6548. | 0| 0| 1| 0|1|0|1|0|
  6549. &#xE0C0;---&#xE0C1;--&#xE0C1;--&#xE0C1;--&#xE0C1;-&#xE0C1;-&#xE0C1;-&#xE0C1;-&#xE0D9;
  6550. Decimal: ((128*0)+(64*0)+(32*1)+(16*0)+(8*1)+(4*0)+(2*1)+(1*0))
  6551. = 42
  6552. Notice that the binary number shows which pixels are on, in
  6553. order.
  6554. (Super MZX Mode, setting first and second pixel to color 2,
  6555. third to color 4 and fourth to color 1)
  6556. Quaternary: 1130
  6557. &#xE0DA;--&#xE0C2;--&#xE0C2;-&#xE0C2;-&#xE0BF;
  6558. |64|16|4|1|
  6559. &#xE0C3;--&#xE0C5;--&#xE0C5;-&#xE0C5;-&#xE0B4;
  6560. | 1| 1|3|0|
  6561. &#xE0C0;--&#xE0C1;--&#xE0C1;-&#xE0C1;-&#xE0D9;
  6562. Decimal: ((64*1)+(16*1)+(4*3)+(1*0)) = 92
  6563. Much like the binary numbers for normal MZX mode, the
  6564. quaternary number shows what color each pixel is in order.
  6565. Here, color values range from 0 to 3.
  6566. <a class="helplink" href="#CHAREDIT.HLP__079">The Character Editor</a>
  6567. <p class="helpcentered">Mouse Counters</p><a class="helpanchor" name="COUNTERS.HLP__chu"> </a>
  6568. <span class="fB ">MOUSEX</span>
  6569. <span class="fB ">MOUSEY</span>
  6570. Reads/sets the mouse cursor's x or y-coordinates (respectively)
  6571. relative to the screen in characters.
  6572. <span class="fB ">MOUSEPX</span>
  6573. <span class="fB ">MOUSEPY</span>
  6574. Reads/sets the mouse cursor's x or y-coordinates (respectively)
  6575. in pixels. Always scales to terms of 640x350, regardless of the
  6576. actual resolution or current SMZX mode.
  6577. <span class="fB ">MBOARDX (read-only, board)</span>
  6578. <span class="fB ">MBOARDY (read-only, board)</span>
  6579. Reads the mouse cursor's x or y-coordinates (respectively)
  6580. relative to the board.
  6581. <span class="fB ">BUTTONS (read-only)</span>
  6582. Reads which mouse buttons are currently being pressed. The
  6583. counter value is based as follows:
  6584. 0 for no input pressed
  6585. +1 for left button
  6586. +2 for right button
  6587. +4 for middle button
  6588. +8 for wheel up
  6589. +16 for wheel down
  6590. +32 for wheel left
  6591. +64 for wheel right
  6592. +128 for extra button 1
  6593. +256 for extra button 2
  6594. E.G., left by itself would output 1, and left+middle would
  6595. output 5 (1 + 4).
  6596. <span class="fB ">CURSORSTATE</span>
  6597. Determines whether the default mouse cursor is on or off (0 is
  6598. off, 1 (or any non-zero value) is on - defaults to off).
  6599. <p class="helpcentered">Defaults Counters</p><a class="helpanchor" name="COUNTERS.HLP__def"> </a>
  6600. <span class="fB ">ENTER_MENU</span>
  6601. Determines whether the built-in status window is loaded when
  6602. the enter key is pressed. 1 (or any non-zero value) is yes, 0
  6603. is no. The default is 1 (yes). If on the title screen, this
  6604. counter is ignored unless in standalone mode.
  6605. <span class="fB ">ESCAPE_MENU</span>
  6606. Determines whether the built-in game exit dialog is loaded when
  6607. the escape key is pressed. 1 (or any non-zero value) is yes, 0
  6608. is no. The default is 1 (yes). If on the title screen, this
  6609. counter is ignored unless in standalone mode.
  6610. <span class="fB ">HELP_MENU</span>
  6611. Determines whether the built-in help window is loaded when the
  6612. F1 key is pressed. 1 (or any non-zero value) is yes, 0 is no.
  6613. The default is 1 (yes). The help menu is still accessible from
  6614. other default dialogs (such as the file menus) unless in
  6615. standalone mode. If on the title screen, this counter is ignored
  6616. unless in standalone mode.
  6617. <span class="fB ">F2_MENU</span>
  6618. Determines whether the built-in MegaZeux options window is
  6619. loaded when the F2 key is pressed. 1 (or any non-zero value) is
  6620. yes, 0 is no. The default is 1 (yes). If on the title screen,
  6621. this counter is ignored unless in standalone mode.
  6622. <span class="fB ">LOAD_MENU</span>
  6623. Determines whether the built-in MegaZeux loadgame window is
  6624. loaded when the F4 key is pressed. 1 (or any non-zero value) is
  6625. yes, 0 is no. The default is 1 (yes). If on the title screen,
  6626. this counter is ignored unless in standalone mode.
  6627. <span class="fB ">BIMESG (write-only)</span>
  6628. Controls built-in game messages (e.g. the message given when
  6629. touching goop); 1 (or any non-zero value) is on while 0 is off.
  6630. The default is 1 (on).
  6631. <span class="fB ">SPACELOCK (write-only)</span>
  6632. Controls whether holding space locks player movement. If 1 (or
  6633. any non-zero value), the player will be locked into place when
  6634. space is held; if 0, the player can move freely when space is
  6635. held, but will be unable to shoot bullets. The default is 1
  6636. (on).
  6637. <p class="helpcentered">Vlayer Counters</p><a class="helpanchor" name="COUNTERS.HLP__vlc"> </a>
  6638. <span class="fB ">VLAYER_WIDTH</span>
  6639. <span class="fB ">VLAYER_HEIGHT</span>
  6640. Sets the width and height of the vlayer, respectively. The
  6641. defaults are 256 for VLAYER_WIDTH and 128 for VLAYER_HEIGHT.
  6642. Setting one will automatically set the other to the maximum
  6643. possible for the current vlayer_size.
  6644. <span class="fB ">VLAYER_SIZE</span>
  6645. Sets the maximum size of the vlayer. The default is 32768.
  6646. Making this larger won't change the values of VLAYER_WIDTH or
  6647. VLAYER_HEIGHT but shrinking it may shrink both - height first,
  6648. then width.
  6649. <span class="fB ">VCHx,y</span>
  6650. Allows reading and writing of single characters to the vlayer
  6651. at the coordinates x,y; the comma must be included.
  6652. <span class="fB ">VCOx,y</span>
  6653. Allows reading and writing of single colors to the vlayer with
  6654. at the coordinates x,y; the comma must be included.
  6655. <a class="helplink" href="#VLAYER.HLP__vla">The Vlayer and Its Uses</a>
  6656. <p class="helpcentered">Miscellaneous Counters</p><a class="helpanchor" name="COUNTERS.HLP__msc"> </a>
  6657. <span class="fB ">MZX_SPEED</span>
  6658. The current game speed (1-16) of MegaZeux. MZX_SPEED 1 is
  6659. processor-bound and executes as many cycles per second as
  6660. possible. Other speeds execute cycles according to this
  6661. formula:
  6662. <span class="fE ">62.5 / (MZX_SPEED - 1) = cycles per second</span>
  6663. Once the speed is set with this counter, the player cannot
  6664. change the speed in the F2 menu until MZX_SPEED is set to 0.
  6665. Setting MZX_SPEED to 0 will not affect the current speed.
  6666. MZX_SPEED will revert back to the default value listed in the
  6667. configuration file upon loading a different game.
  6668. <a class="helplink" href="#CONFGINI.HLP__1st">The Config File</a>
  6669. <span class="fB ">COMMANDS_STOP</span>
  6670. A special counter active only while playtesting in the editor.
  6671. COMMAND_STOP will activate stepping in the Robotic debugger,
  6672. even if the debugger was currently disabled, once the number of
  6673. commands any specific Robot executes in a single cycle exceeds
  6674. COMMAND_STOP's value. By default, COMMAND_STOP holds a value of
  6675. 2000000.
  6676. <span class="fB ">EXIT_GAME</span>
  6677. If this counter is set to a non-zero value, the current
  6678. MegaZeux world will exit to the title screen. This counter does
  6679. nothing on the title screen unless in standalone mode, and if
  6680. standalone mode is ran without a title screen, this counter will
  6681. cause MegaZeux to exit entirely.
  6682. <span class="fB ">PLAY_GAME</span>
  6683. If this counter is set to a non-zero value when MZXRun is in
  6684. standalone mode and on the title screen, the game will be
  6685. started. Instances outside of the title screen and outside of
  6686. MZXRun will be ignored.
  6687. <span class="fB ">CURRENT_COLOR</span>
  6688. <span class="fB ">RED_VALUE</span>
  6689. <span class="fB ">GREEN_VALUE</span>
  6690. <span class="fB ">BLUE_VALUE</span>
  6691. When CURRENT_COLOR is set between 0 and 31 (between 0 and 255
  6692. in Super MZX modes), the other three counters contain the red,
  6693. green and blue values of that color.
  6694. <a class="helplink" href="#SMZXMODE.HLP__095">Super MegaZeux Modes</a>
  6695. <a class="helplink" href="#PALEEDIT.HLP__093">The Palette Editor</a>
  6696. <span class="fB ">INPUT (board)</span>
  6697. The numerical value of the last string inputted.
  6698. <a class="helplink" href="#COMMAND2.HLP___iP">INPUT STRING "string"</a>
  6699. <span class="fB ">INPUTSIZE (board)</span>
  6700. The size, in characters, of the last string inputted.
  6701. <a class="helplink" href="#COMMAND2.HLP___iP">INPUT STRING "string"</a>
  6702. <span class="fB ">DATE_DAY (read-only)</span>
  6703. <span class="fB ">DATE_MONTH (read-only)</span>
  6704. <span class="fB ">DATE_YEAR (read-only)</span>
  6705. Contain the current day, month and year respectively, based on
  6706. the system clock.
  6707. <span class="fB ">TIME_HOURS (read-only)</span>
  6708. <span class="fB ">TIME_MINUTES (read-only)</span>
  6709. <span class="fB ">TIME_SECONDS (read-only)</span>
  6710. Contain the current hour, minute and second respectively, based
  6711. on the system clock, in 24-hour format.
  6712. <span class="fB ">INT</span>
  6713. <span class="fB ">BIT_PLACE</span>
  6714. <span class="fB ">INT2BIN</span>
  6715. Used to manipulate bits within a counter. Set INT to the number
  6716. or counter you wish to edit. Set BIT_PLACE to a number between
  6717. 0 and 15 (which correspond to the bits in a 16-bit signed
  6718. counter), and then set INT2BIN to one of the following to edit
  6719. the bit:
  6720. 1 Sets the bit ON
  6721. 2 Sets the bit OFF
  6722. 3 Toggles the bit
  6723. The edited value is placed into the INT counter. You can also
  6724. read the INT2BIN counter to see the current state of the bit.
  6725. This method of bit manipulation is heavily deprecated in favor
  6726. of expressions (especially considering it only works on 16 bits
  6727. instead of the current 32). Follow the link below to read more.
  6728. <a class="helplink" href="#EXPRESS.HLP__exp">Expressions</a>
  6729. <span class="fB ">KEY_PRESSED (read-only)</span>
  6730. <span class="fB ">KEY</span>
  6731. <span class="fB ">KEY_CODE (read-only)</span>
  6732. KEY_PRESSED lists whether any key (each referenced by a number)
  6733. is currently being held down; for example, on a typical
  6734. keyboard, if the spacebar is being pressed the value of
  6735. key_pressed will be 32. This set of keycodes is the same as the
  6736. ones required for joystick support. Results are unsigned, so
  6737. checking for negative numbers will not work. "Autorepeat stall"
  6738. affects KEY_PRESSED, so if you hold down a key you will get the
  6739. value, then get zeros for a period, then get the values again.
  6740. This is useful for many applications.
  6741. KEY acts like KEY_PRESSED, but lacks autorepeat stall, returns
  6742. uppercase letter values, and retains its value until another key
  6743. is pressed.
  6744. KEY_CODE acts similar to KEY_PRESSED but has different keycodes.
  6745. Its keycode set is more limited, making KEY_PRESSED generally
  6746. preferable.
  6747. <span class="fB ">KEYn (read-only)</span>
  6748. <span class="fB ">KEY_RELEASE (read-only)</span>
  6749. KEYn checks whether the key with the keycode n is pressed; 1
  6750. means yes, 0 means no. KEY_RELEASE tests whether a key is
  6751. released. These display/use the same keycodes as KEY_CODE, but
  6752. do not cause an autorepeat stall. Results are unsigned, so
  6753. checking for negative numbers will not work.
  6754. <span class="fB ">RANDOM_SEED0 (universal)</span>
  6755. <span class="fB ">RANDOM_SEED1 (universal)</span>
  6756. These counters allow reading and controlling MegaZeux's random
  6757. seed. RANDOM_SEED0 controls the low 32 bits of the seed, while
  6758. RANDOM_SEED1 controls the high 32 bits. The random seed is not
  6759. retained by save files.
  6760. <span class="fB ">MAX_SAMPLES</span>
  6761. Sets number of samples that can play at once. -1 sets no limit,
  6762. 0 mutes all samples; -1 is the default setting. The actual
  6763. sample limit will be the smaller of the limit set by this
  6764. counter and the limit set by the max_simultaneous_samples config
  6765. file setting. PC Speaker emulated sounds are unaffected.
  6766. <span class="fB ">XPOS</span>
  6767. <span class="fB ">YPOS</span>
  6768. The X or Y-coordinates (respectively) used by the REL COUNTERS
  6769. command.
  6770. <a class="helplink" href="#COMMAND2.HLP__pre">REL COUNTERS</a>
  6771. <span class="fB ">FIRSTXPOS</span>
  6772. <span class="fB ">FIRSTYPOS</span>
  6773. The X or Y-coordinates (respectively) used by the REL COUNTERS
  6774. FIRST command.
  6775. <a class="helplink" href="#COMMAND2.HLP___r4">REL COUNTERS LAST</a>
  6776. <span class="fB ">LASTXPOS</span>
  6777. <span class="fB ">LASTYPOS</span>
  6778. The X or Y-coordinates (respectively) used by the REL COUNTERS
  6779. LAST command.
  6780. <a class="helplink" href="#COMMAND2.HLP___r7">REL COUNTERS LAST</a>
  6781. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  6782. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  6783. <hr /></div>
  6784. <div class="helpfile" id="USINGTHE.HLP">
  6785. <a class="helpanchor" name="USINGTHE.HLP__1st"> </a>
  6786. <p class="helpcentered"><span class="f9 ">Using the Editor</span></p>
  6787. The Robotic editor is quite simple to use. After selecting your
  6788. Robot's character and name, you will enter the editor screen.
  6789. There are three major sections to the editor screen: The top
  6790. box, showing current statistics; the middle box, showing the
  6791. Robot's program with the current line highlighted in the
  6792. center; and the bottom box, showing the available editing
  6793. commands.
  6794. To edit the Robot, you enter lines just as in editing scrolls.
  6795. Use up and down or PageUp and PageDown to scroll between lines,
  6796. and use Enter at the end of a line to insert new blank lines.
  6797. Pressing Enter in the middle of a line will remove everything
  6798. to the right of the cursor and place it onto a new, following
  6799. line. Press Backspace at the beginning of a line to place its
  6800. contents onto the preceding line (this be ignored if there is
  6801. not enough space).
  6802. After you enter a line, it will be checked for proper syntax.
  6803. If it passes, it will be reformatted and redisplayed, and you
  6804. can then enter another line; if it does not, it will be marked
  6805. as ignored. The reformatting is unpreventable - Since MegaZeux
  6806. tokenizes Robotic lines to conserve space, all irrelevant
  6807. information such as extra spaces is lost. The editor attempts
  6808. to print the lines in a visually pleasing manner.
  6809. All lines other than the current line will have the various
  6810. elements such as strings and numbers highlighted in different
  6811. colors. cXX-type color codes will be shown as their actual
  6812. color. The current line is shown in a solid color and color
  6813. codes are shown in the usual cXX format.
  6814. The following keys are active within the Robotic editor:
  6815. <a class="helplink" href="#USINGTHE.HLP___ar">F1 - Help</a>
  6816. <a class="helplink" href="#USINGTHE.HLP___br">F2 - Color</a>
  6817. <a class="helplink" href="#USINGTHE.HLP___cr">F3 - Character</a>
  6818. <a class="helplink" href="#USINGTHE.HLP___dr">F4 - Parameter</a>
  6819. <a class="helplink" href="#USINGTHE.HLP___er">F5 - Char Edit</a>
  6820. <a class="helplink" href="#USINGTHE.HLP___fr">F6-F10 - Macros</a>
  6821. <a class="helplink" href="#USINGTHE.HLP___gr">F12 - Take Screenshot</a>
  6822. <a class="helplink" href="#USINGTHE.HLP___hr">Alt+B OR Alt+Enter - Block Action</a>
  6823. <a class="helplink" href="#USINGTHE.HLP___ir">Alt+E OR Alt+End - Mark Block End</a>
  6824. <a class="helplink" href="#USINGTHE.HLP___jr">Alt+H - Hide Help / Borders</a>
  6825. <a class="helplink" href="#USINGTHE.HLP___kr">Alt+I - Import</a>
  6826. <a class="helplink" href="#USINGTHE.HLP___lr">Alt+M - Configure Macro</a>
  6827. <a class="helplink" href="#USINGTHE.HLP___mr">Alt+O - Edit Single Line Macros</a>
  6828. <a class="helplink" href="#USINGTHE.HLP___nr">Alt+S OR Alt+Home - Mark Block Top</a>
  6829. <a class="helplink" href="#USINGTHE.HLP___or">Alt+U - Unmark Block</a>
  6830. <a class="helplink" href="#USINGTHE.HLP___pr">Alt+V - Verify</a>
  6831. <a class="helplink" href="#USINGTHE.HLP___qr">Alt+X - Export</a>
  6832. <a class="helplink" href="#USINGTHE.HLP___rr">Alt+BackSpace - Delete Entire Line</a>
  6833. <a class="helplink" href="#USINGTHE.HLP___sr">Alt+Ins OR Alt+P - Paste</a>
  6834. <a class="helplink" href="#USINGTHE.HLP___tr">Ctrl+F - Search</a>
  6835. <a class="helplink" href="#USINGTHE.HLP___ur">Ctrl+H - Replace</a>
  6836. <a class="helplink" href="#USINGTHE.HLP___vr">Ctrl+R - Repeat Search/Replace</a>
  6837. <a class="helplink" href="#USINGTHE.HLP___wr">Ctrl+G - Goto Position</a>
  6838. <a class="helplink" href="#USINGTHE.HLP___xr">Ctrl+I/D/C - Mark Line</a>
  6839. <a class="helplink" href="#USINGTHE.HLP___yr">Ctrl+BackSpace - Delete Previous Word</a>
  6840. <a class="helplink" href="#USINGTHE.HLP___zr">Ctrl+LeftArrow - Jump to Previous Word</a>
  6841. <a class="helplink" href="#USINGTHE.HLP___1r">Ctrl+RightArrow - Jump to Next Word</a>
  6842. <a class="helplink" href="#USINGTHE.HLP___2r">Esc - Exit Robotic Editor</a>
  6843. On Mac platforms, any command that uses the Alt key can take &#xE0BD;&#xE0BE;
  6844. (the command key) instead.
  6845. <a class="helpanchor" name="USINGTHE.HLP___ar"><span class="fE ">F1 - Help</span></a>
  6846. Use F1 to bring up context-sensitive help at any time.
  6847. <a class="helpanchor" name="USINGTHE.HLP___br"><span class="fE ">F2 - Color</span></a>
  6848. F2 will bring up a menu of colors. Select one and press Enter to
  6849. insert a cXX color code into the current line corresponding to
  6850. that color.
  6851. <a class="helpanchor" name="USINGTHE.HLP___cr"><span class="fE ">F3 - Character</span></a>
  6852. F3 will bring up a menu of characters. Select one and press
  6853. Enter to insert that character into the current line. No quotes
  6854. or apostrophes are added.
  6855. <a class="helpanchor" name="USINGTHE.HLP___dr"><span class="fE ">F4 - Parameter</span></a>
  6856. If you have just typed in the name of a thing, such as Ammo,
  6857. F4 will allow you to select settings for it in order to insert
  6858. a pXX parameter code.
  6859. <a class="helpanchor" name="USINGTHE.HLP___er"><span class="fE ">F5 - Char Edit</span></a>
  6860. Use F5 to insert series of numbers corresponding to character
  6861. pictures, for use with the Robotic CHAR EDIT command.
  6862. <a class="helpanchor" name="USINGTHE.HLP___fr"><span class="fE ">F6-F10 - Macro</span></a>
  6863. F6 through F10 will insert short macros, customizable using
  6864. Alt+O. If you have an extended macro set for these an input
  6865. window for it will come up (see Configure Macro for more
  6866. details).
  6867. <a class="helpanchor" name="USINGTHE.HLP___gr"><span class="fE ">F12 - Take Screenshot</span></a>
  6868. Pressing F12 will make a 640x350 screenshot (in PNG format by
  6869. default) in the working directory, using the software renderer.
  6870. The file naming starts from "screen0".
  6871. <a class="helpanchor" name="USINGTHE.HLP___hr"><span class="fE ">Alt+B OR Alt+Enter - Block Action</span></a>
  6872. Allows you to perform an action on the current block of lines.
  6873. Possible actions are: Copy to the OS's clipboard, Cut to the
  6874. OS's clipboard (copy it and then delete it), Clear from memory,
  6875. or Export to a text file on disk. If no block is currently
  6876. highlighted, the actions will take effect on the current line.
  6877. Alt+Enter is the old and deprecated hotkey, left in to ease use
  6878. for long-time users.
  6879. <a class="helpanchor" name="USINGTHE.HLP___nr"><span class="fE ">Alt+S OR Alt+Home - Mark Block Top</span></a>
  6880. <a class="helpanchor" name="USINGTHE.HLP___ir"><span class="fE ">Alt+E OR Alt+End - Mark Block End</span></a>
  6881. Alt+S/E will mark the top or bottom of a block of lines. You
  6882. can then perform various block actions on these lines. The
  6883. marked lines are highlighted. Alt+Home and Alt+End are the old
  6884. and deprecated hotkeys, left in to ease use for long-time
  6885. users.
  6886. <a class="helpanchor" name="USINGTHE.HLP___jr"><span class="fE ">Alt+H - Hide Help / Borders</span></a>
  6887. Alt+H toggles the horizontal borders and help key reference.
  6888. <a class="helpanchor" name="USINGTHE.HLP___kr"><span class="fE ">Alt+I - Import</span></a>
  6889. Use Alt+I to import a text file or bytecode file into the
  6890. current Robot. The new lines will be inserted into the current
  6891. program, starting from the current line.
  6892. <a class="helpanchor" name="USINGTHE.HLP__lr_"><span class="fE ">Alt+M - Configure Macro</span></a>
  6893. Alt+M will load a box where you list the name of an extended
  6894. macro to be configured (for example, type "1" to edit macro_1).
  6895. After choosing a macro to edit, you will be able to set the
  6896. various variables for the macro. Select OK to place the macro,
  6897. Cancel to go back to the editor without placing the macro, and
  6898. Default to change all values to their defaults.
  6899. <a class="helpanchor" name="USINGTHE.HLP___mr"><span class="fE ">Alt+O - Edit Single Line Macros</span></a>
  6900. You can change the values of the five single-line macros here.
  6901. Use ^ for Enter in the macros. If there is an extended macro in
  6902. place of macros 1-5, it will override any single-line macro also
  6903. set for that macro.
  6904. <a class="helplink" href="#CONFGINI.HLP__1st">The Config File</a>
  6905. <a class="helpanchor" name="USINGTHE.HLP___or"><span class="fE ">Alt+U - Unmark Block</span></a>
  6906. The current block is unmarked.
  6907. <a class="helpanchor" name="USINGTHE.HLP___pr"><span class="fE ">Alt+V - Verify</span></a>
  6908. Use Alt+V to determine if there are any invalid lines in the
  6909. robot, and if there are what their errors are. Each invalid line
  6910. can be set to I (ignore), D (delete) or C (comment), which will
  6911. be applied if the user selects OK. Only the first 256 errors
  6912. will be listed.
  6913. <a class="helpanchor" name="USINGTHE.HLP___qr"><span class="fE ">Alt+X - Export</span></a>
  6914. Use Alt+X to export either the current block or the entire
  6915. Robot program to a text file or bytecode file on disk. If saved
  6916. as text, one can then edit the program outside of MegaZeux or
  6917. use the text file in other ways.
  6918. <a class="helpanchor" name="USINGTHE.HLP___rr"><span class="fE ">Alt+BackSpace - Delete Entire Line</span></a>
  6919. The currently selected line is blanked. The empty line itself
  6920. will remain.
  6921. <a class="helpanchor" name="USINGTHE.HLP___sr"><span class="fE ">Alt+Ins OR Alt+P - Paste</span></a>
  6922. Alt+Ins or Alt+P will paste in the block last copied to the
  6923. internal clipboard. The clipboard used is the OS clipboard, and
  6924. as such is preserved between Robots and even between worlds.
  6925. <a class="helpanchor" name="USINGTHE.HLP___tr"><span class="fE ">Ctrl+F - Search</span></a>
  6926. Use Ctrl+F to activate the Search menu. After inputting a string
  6927. to find in the Search box and choosing options, the Robotic
  6928. editor will search for the term starting from the current line
  6929. and jump to the first string that matches.
  6930. Wrap will ensure every line of the code is checked (otherwise
  6931. all code above the current line will be ignored) and Case
  6932. Sensitive will require the search string and the results match
  6933. case exactly before giving results.
  6934. <a class="helpanchor" name="USINGTHE.HLP__+ur"><span class="fE ">Ctrl+H - Replace</span></a>
  6935. Use Ctrl+H to activate the Replace menu. The Search box takes
  6936. the text to be changed, and the Replace box takes the text that
  6937. replaces it. Replace only changes the first seen instance of the
  6938. searched text, with the search starting from the current line.
  6939. Replace All changes all of them at once. Once completed, the
  6940. Robotic editor will jump to the last line changed by a replace
  6941. action (if any).
  6942. Wrap will ensure every line of the code is checked (otherwise
  6943. all code above the current line will be ignored) and Case
  6944. Sensitive will require any string matching the search string to
  6945. also match case before being replaced.
  6946. <a class="helpanchor" name="USINGTHE.HLP___vr"><span class="fE ">Ctrl+R - Repeat Search/Replace</span></a>
  6947. Use Ctrl+R after a Search or Replace action to repeat the
  6948. action.
  6949. <a class="helpanchor" name="USINGTHE.HLP___wr"><span class="fE ">Ctrl+G - Goto Position</span></a>
  6950. Use Ctrl+G to jump to the given Robotic line/column (if too
  6951. high of a number is given, the editor will jump to the last
  6952. possible line/column).
  6953. <a class="helpanchor" name="USINGTHE.HLP___xr"><span class="fE ">Ctrl+I/D/C - Mark Line</span></a>
  6954. These commands mark the current invalid line as to be ignored,
  6955. deleted, or commented out upon editor exit, respectively. If
  6956. the line is valid Ctrl + C will turn it into a comment
  6957. (truncating the end of the line if commenting would make the
  6958. line exceed 241 characters). Note that comment-marking a
  6959. comment will immediately strip the line.
  6960. <a class="helpanchor" name="USINGTHE.HLP___yr"><span class="fE ">Ctrl+BackSpace - Delete Previous Word</span></a>
  6961. Use Ctrl+BackSpace to delete the word to the left of the cursor.
  6962. <a class="helpanchor" name="USINGTHE.HLP___zr"><span class="fE ">Ctrl+LeftArrow - Jump to Previous Word</span></a>
  6963. Use Ctrl+LeftArrow to jump to the beginning of the previous
  6964. word in the current line.
  6965. <a class="helpanchor" name="USINGTHE.HLP___1r"><span class="fE ">Ctrl+RightArrow - Jump to Next Word</span></a>
  6966. Use Ctrl+RightArrow to jump to the beginning of the next word
  6967. in the current line. If on the last word of the line, this
  6968. command jumps to the end of the line.
  6969. <a class="helpanchor" name="USINGTHE.HLP___2r"><span class="fE ">Esc - Exit Robotic Editor</span></a>
  6970. This key will exit the Robotic Editor, unless any lines are
  6971. marked as invalid.
  6972. The statistics line across the top of the Robot editor shows
  6973. the current line number, the current column within the line, the
  6974. size of the Robot program versus the maximum size this Robot can
  6975. reach, and the Robot's X/Y position.
  6976. Use ESC to exit the Robot editor when you are done editing your
  6977. Robot program.
  6978. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  6979. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  6980. <hr /></div>
  6981. <div class="helpfile" id="ROBOTSWH.HLP">
  6982. <a class="helpanchor" name="ROBOTSWH.HLP__1st"> </a>
  6983. <p class="helpcentered"><span class="f9 ">Robots - What They Are and How to Use Them</span></p>
  6984. Robots are the heart and soul of MegaZeux. Nearly anything you
  6985. could want to do in MegaZeux - anything you see done in a
  6986. MegaZeux game, many things you didn't know were possible - can
  6987. be done with MegaZeux's Robots.
  6988. Robots are programmed in their own programming language, called
  6989. Robotic. Robotic is a fairly simple language to learn, but
  6990. somewhat moderate to completely master. It is somewhere along
  6991. the lines of BASIC, although more complex. If you've ever used
  6992. Epic Megagame's ZZT, Robotic is vastly more complex than
  6993. ZZT-OOP, although there are vague similiarities. There's a
  6994. kludge or two dozen to get really powerful things working, but
  6995. you'll get used to them.
  6996. To place a Robot in the editor, press F10 and select Robot. (You
  6997. can also select Pushable Robot if you want things to be able to
  6998. push the Robot.) Then name the Robot and select a character to
  6999. represent it. You are then brought to the Robot editor, where
  7000. you can program the Robot in Robotic.
  7001. Robots are limited to the board, and there can be 255 of them on
  7002. each board. They can be pretty large - 2MB in size, enough code
  7003. space to create extraordinarily complex (or convoluted)
  7004. programs. There is an exception: the Global Robot, which is
  7005. outside of the board and runs at all times.
  7006. <a class="helplink" href="#ROBOTICT.HLP__1st">Robotic Tutorial</a>
  7007. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  7008. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  7009. <hr /></div>
  7010. <div class="helpfile" id="ROBOTICT.HLP">
  7011. <a class="helpanchor" name="ROBOTICT.HLP__1st"> </a>
  7012. <p class="helpcentered"><span class="f9 ">Robotic Tutorial</span></p>
  7013. Robotic has a few concepts that you must understand before you
  7014. begin to program in it. You can skip this if you want, but it
  7015. will help you learn Robotic much faster. A large portion of
  7016. this will be obvious to anybody who has ever programmed in any
  7017. language or used computers extensively.
  7018. <p class="helpcentered">Commands</p>
  7019. You can have one command per line. A command is an instruction
  7020. to MegaZeux or the Robot telling it to do something. A program
  7021. is a series of commands that are ran right after another.
  7022. <p class="helpcentered">Parameters</p>
  7023. A parameter is the part of the command that can change, such
  7024. as numbers or colors. They specify how the command should be
  7025. run or what it should affect. For example, in the command:
  7026. WAIT 6
  7027. WAIT is the command, and 6 is the parameter. Many commands have
  7028. multiple parameters. Parameters are often specified using #,
  7029. "string", or [color] [char], etc.
  7030. <p class="helpcentered">Labels</p>
  7031. A label is a point in a Robotic program that has been given a
  7032. name. It is used as a reference point so the Robot can return
  7033. to that point at any time, to allow actions like repeating
  7034. sections of commands (looping) or reactions to certain events.
  7035. Labels are written as follows - : "label"
  7036. <p class="helpcentered">Messages</p>
  7037. A message is something one Robot sends to another, or an
  7038. external event sends to a Robot, to tell it to do something.
  7039. This involves jumping to the label corresponding to that
  7040. message. For example, a Robot can tell another Robot to
  7041. "Bounce"; That Robot will now be executing commands starting
  7042. at the label : "Bounce" .
  7043. <p class="helpcentered">Coordinates</p>
  7044. x,y coordinates are a pair of numbers representing a point on
  7045. the current board. (0,0) is the upper-left corner of the board,
  7046. and the first coordinate increases while going right, while the
  7047. second increases while going down. You can find coordinates
  7048. easily at the bottom of the screen when help is hidden, by
  7049. pressing Alt+Y, or by pressing F6 in the game (only in editor
  7050. playthroughs). x,y coordinates can be negative, but this is
  7051. uncommon and used for special purposes only (e.g. using REL
  7052. commands).
  7053. <p class="helpcentered">Strings</p>
  7054. A string is a series of letters or characters, inside quotes.
  7055. For example, "STRING", "Booga!", "-21_Trees-", or "[[]]".
  7056. <p class="helpcentered">Characters</p>
  7057. A character is a single symbol, letter, number, punctuation
  7058. mark, space, graphic, etc. All things are viewed as single
  7059. characters. When using single characters in Robotic, they must
  7060. be enclosed in apostrophes- e.g. 'X'. Certain characters must
  7061. be inputted in specific ways to avoid problems with Robotic:
  7062. \0 for character 0 (this won't work in strings, but will work
  7063. for single chars)
  7064. \t for tab (character 9)
  7065. \n for newline (character 10)
  7066. \r for carriage return (character 13)
  7067. \" for quotation mark
  7068. \\ for slash
  7069. <p class="helpcentered">Colors</p>
  7070. A color is a code representing a background/foreground color
  7071. pair. They follow the format cXX, where X is 0-9, A-F or ?
  7072. (which stands for any color). To enter color codes easily, use
  7073. F2 in the Robot editor. The exact format of color codes is
  7074. covered in another section.
  7075. A quirk to keep in mind: any entity with a background color of 0
  7076. will display the background color of anything beneath it.
  7077. <p class="helpcentered">Directions</p>
  7078. Directions represent one of the four cardinal directions of
  7079. NORTH, SOUTH, EAST, or WEST. They can be abbreviated to N, S,
  7080. E, and W. There are other directions, but these are the most
  7081. commonly used.
  7082. Hopefully you understood the above material, as knowledge of it
  7083. is essential to program in Robotic. If you don't quite grasp
  7084. it, you can return to it later, but you will need to understand
  7085. it eventually.
  7086. <p class="helpcentered">Your First Robotic Program: HELLO WORLD!</p>
  7087. First, open the Editor and create a Robot. Then open the
  7088. Robot's programming box by pressing Enter twice while the Robot
  7089. is highlighted.
  7090. Now, type the following into the editor:
  7091. <span class="fE ">* "HELLO WORLD!"</span>
  7092. <span class="fE ">end</span>
  7093. Here's what each line does.
  7094. <span class="fE ">* "HELLO WORLD!"</span>
  7095. The * command puts whatever text is in the parentheses on the
  7096. bottom of the screen. (Actually, it's the given message row
  7097. line, which is the bottom by default.) All Robotic code starts
  7098. immediately, so this particular statement happens right as the
  7099. board with this Robot is loaded.
  7100. <span class="fE ">end</span>
  7101. This ends the code. It is good practice to include the END
  7102. command even when you don't think you need it; leaving the END
  7103. command out can cause some problems such as text glitches or,
  7104. worse, the running of any and all code after where you want
  7105. your Robot to stop!
  7106. That was really simple, wasn't it? Now let's step up to
  7107. something a bit bigger.
  7108. <p class="helpcentered">Your Second Robotic Program</p>
  7109. Create a Robot in the editor, and give it the following
  7110. program:
  7111. <span class="fE ">: "start"</span>
  7112. <span class="fE ">GO NORTH 2</span>
  7113. <span class="fE ">GO SOUTH 2</span>
  7114. <span class="fE ">GOTO "start"</span>
  7115. Now test the world. As you can see, this program makes the
  7116. Robot move up and down. Let's analyze it line by line.
  7117. <span class="fE ">: "start"</span>
  7118. As we know, this is a label. It marks the beginning of the
  7119. program.
  7120. <span class="fE ">GO NORTH 2</span>
  7121. This quite plainly tells the Robot to move north two spaces.
  7122. <span class="fE ">GO SOUTH 2</span>
  7123. This tells the Robot to move south two spaces.
  7124. <span class="fE ">GOTO "start"</span>
  7125. GOTO tells the Robot to jump to a label. In this case, the
  7126. Robot returns to the label "start", effectively restarting its
  7127. code. This particular Robot will be executing these lines of
  7128. code for the entirety of the game, or until destroyed.
  7129. Pretty easy so far, huh? You will probably find that Robotic's
  7130. basics are easy to grasp. Let's try something a little more
  7131. complex.
  7132. <p class="helpcentered">Your Third Robotic Program</p>
  7133. Try the following Robot program:
  7134. <span class="fE ">: "loop"</span>
  7135. <span class="fE ">/ "NNEESSWW"</span>
  7136. <span class="fE ">GOTO "loop"</span>
  7137. <span class="fE ">: "touch"</span>
  7138. <span class="fE ">* "Hello!"</span>
  7139. <span class="fE ">CHAR 'X'</span>
  7140. <span class="fE ">END</span>
  7141. Testing will show you that this Robot runs around in a small
  7142. square. Now try touching it. If you can catch it, the Robot
  7143. will change to an X and greet you! Let's look at this program.
  7144. <span class="fE ">: "loop"</span>
  7145. A label.
  7146. <span class="fE ">/ "NNEESSWW"</span>
  7147. The / command tells the Robot to move along a given path. The
  7148. path is represented with a string of the letters N, S, E, W,
  7149. and I. NSEW represent the four cardinal directions, while I
  7150. tells the Robot to wait for a bit before continuing. Our path
  7151. tells the Robot to go north twice, east twice, south twice, and
  7152. west twice, forming a square path.
  7153. <span class="fE ">GOTO "loop"</span>
  7154. The Robot will now return to the "loop" label, continuing in a
  7155. square path forever. Without an outside stimulus, the Robot
  7156. will never do anything else.
  7157. <span class="fE ">: "touch"</span>
  7158. Another label, but this one is special. When the player touches
  7159. a Robot, by standing next to it and pressing against it, the
  7160. Robot is sent the message "touch". The following commands will
  7161. be run when the player touches the Robot.
  7162. <span class="fE ">CHAR 'X'</span>
  7163. This tells the Robot to assume the appearance of character X.
  7164. Make sure that the X is in apostrophes ' and NOT quotes ".
  7165. <p class="helpcentered">Robot Interaction</p>
  7166. Let's get some Robots to interact with each other. Put two
  7167. Robots on a board, right next to each other. Name the left one
  7168. Lefty, and give it this program:
  7169. <span class="fE ">: "dance"</span>
  7170. <span class="fE ">/ "WWWEEE"</span>
  7171. <span class="fE ">SEND "Righty" to "dance"</span>
  7172. <span class="fE ">END</span>
  7173. Name the right one Righty, and give it this program:
  7174. <span class="fE ">END</span>
  7175. <span class="fE ">: "dance"</span>
  7176. <span class="fE ">/ "EEEWWW"</span>
  7177. <span class="fE ">SEND "Lefty" to "dance"</span>
  7178. <span class="fE ">END</span>
  7179. Now test this board out. You will see a silly pair of dancing
  7180. Robots, as they bump each other left and right. Let's examine
  7181. their programs more closely.
  7182. Since Righty has an END command as the first line, he isn't
  7183. going to be doing anything until told; so, we look at Lefty.
  7184. It's nothing we haven't seen, except for the SEND command.
  7185. <span class="fE ">SEND "Robot" to "message"</span>
  7186. The SEND command allows one Robot to send messages to another,
  7187. telling it what to do. In this case, Lefty will tell Righty to
  7188. "dance", sending Righty to the label "dance".
  7189. Knowing this, the behavior of the two Robots should be clear.
  7190. Each one, in turn, moves away and back again, then it tells
  7191. the other one to do this. This repeats ad infinitum.
  7192. For a little practice, see if you can get them each to display
  7193. a message at the start of their dance step. Make the messages
  7194. different for each Robot.
  7195. <p class="helpcentered">Some New Commands</p>
  7196. The following Robot will demonstrate some new commands and
  7197. features.
  7198. <span class="fE ">GIVE 6 AMMOS</span>
  7199. <span class="fE ">GIVE 5 HIBOMBS</span>
  7200. <span class="fE ">END</span>
  7201. <span class="fE ">: "shot"</span>
  7202. <span class="fE ">COLOR c2C</span>
  7203. <span class="fE ">[ "OKAY, I GET THE POINT. I NEED MORE IRON"</span>
  7204. <span class="fE ">[ "...and now a liver transplant :<"</span>
  7205. <span class="fE ">zap "shot" 1</span>
  7206. <span class="fE ">END</span>
  7207. <span class="fE ">: "shot"</span>
  7208. <span class="fE ">IF "AMMO" = 0 "lecture"</span>
  7209. <span class="fE ">[ "...cut it out. =("</span>
  7210. <span class="fE ">END</span>
  7211. <span class="fE ">: "bombed"</span>
  7212. <span class="fE ">. "Check this out..."</span>
  7213. <span class="fE ">. "(editor) I'm not impressed."</span>
  7214. <span class="fE ">* "ARRGHFRRAGGH I'M ALLERGIC TO BEING BOMBED"</span>
  7215. <span class="fE ">DIE</span>
  7216. <span class="fE ">END</span>
  7217. <span class="fE ">: "touch"</span>
  7218. <span class="fE ">* "Please leave me alone :/"</span>
  7219. <span class="fE ">WAIT 10</span>
  7220. <span class="fE ">SHOOT SEEK</span>
  7221. <span class="fE ">END</span>
  7222. <span class="fE ">: "lecture"</span>
  7223. <span class="fE ">[ "Did you REALLY have to use all of your shots."</span>
  7224. <span class="fE ">END</span>
  7225. Test this Robot out, bombing, shooting, and touching it. The
  7226. new commands and labels are explained below.
  7227. <span class="fE ">GIVE 6 AMMOS</span>
  7228. Sensibly enough, this gives the player 6 units of ammo.
  7229. <span class="fE ">GIVE 5 HIBOMBS</span>
  7230. This gives the player 5 high-strength bombs.
  7231. <span class="fE ">: "shot"</span>
  7232. When the Robot is shot by a bullet, it is sent this message.
  7233. <span class="fE ">COLOR c2C</span>
  7234. This changes the Robot's color. The c2C represents Lt. Red on
  7235. Red. To enter colors, press F2 in the Robot editor and select
  7236. the color you want. The appropriate cXX code will be typed in
  7237. for you.
  7238. <span class="fE ">[ "OKAY, I GET THE POINT. I NEED MORE IRON"</span>
  7239. <span class="fE ">[ "...and now a liver transplant :<"</span>
  7240. The [ command is slick for a default. When encountered, all
  7241. consecutive [ commands are put together to form one long
  7242. message, which is then displayed in a Scroll-like window.
  7243. It can be scrolled and viewed by the player.
  7244. <span class="fE ">ZAP "shot" 1</span>
  7245. The ZAP command tells the Robot to ignore a certain number of
  7246. labels with the given name - in this case, the first "shot"
  7247. label. The ZAP command always starts from the top. Using the
  7248. ZAP command lets programmers give out different reactions for
  7249. going to the same label. In this case, we get to go to the
  7250. second "shot" label after we went to the first.
  7251. <span class="fE ">IF "AMMO" = 0 "lecture"</span>
  7252. The IF command will jump to a label (in this case, one called
  7253. "lecture") if the given condition is met, and will continue to
  7254. the next line if not met. In this case, it will check to see if
  7255. the AMMO counter is 0. The AMMO counter is a built-in counter
  7256. MZX uses to represent how many units of ammo the player holds.
  7257. <span class="fE ">: "bombed"</span>
  7258. When the Robot is bombed, or otherwise hit by an explosion,
  7259. it is sent this message.
  7260. <span class="fE ">. "Check this out..."</span>
  7261. <span class="fE ">. "(editor) I'm not impressed."</span>
  7262. Notice how this message was not shown in any way. The . command
  7263. is used for comments, i.e. messages that are not to be shown.
  7264. They are good for your own reference, so you know what you were
  7265. trying to do with this Robot, or so you can keep notes of
  7266. important things.
  7267. <span class="fE ">DIE</span>
  7268. This command destroys the Robot forever.
  7269. <span class="fE ">WAIT 10</span>
  7270. WAIT causes the Robot to stop and sit for an amount of time.
  7271. The time is in number of cycles (in this case, 10 cycles). A
  7272. cycle is the amount of time it takes to update the board once,
  7273. moving all the enemies and bullets, etc. Robots can run at
  7274. different speeds; the default is cycle 1 (fastest, runs every
  7275. real cycle) unless a cycle command is placed inside the Robot.
  7276. <span class="fE ">SHOOT SEEK</span>
  7277. The Robot will shoot a bullet in the indicated direction (in
  7278. this case, the direction the player is in).
  7279. <p class="helpcentered">Conclusion</p>
  7280. You now should know enough Robotic for simple programs. Even
  7281. more importantly, you should be able to scan the Robotic
  7282. reference manual, including the command reference, and be able
  7283. to learn many new commands. There are loads of important
  7284. commands and concepts in the command reference that we have not
  7285. yet mentioned, such as TELEPORT PLAYER, strings, file access,
  7286. expressions, sprites, and the COPY class of statements. It is
  7287. recommended that you at least skim each of the Robotic reference
  7288. manual sections.
  7289. Make sure you (eventually) read over every part of the
  7290. reference manual, as there are many sections not covered in the
  7291. tutorials. Especially of interest will be advanced topics like
  7292. "The Vlayer and Its Uses", "Using MZMs", "Subroutines",
  7293. "Debug Modes", and most newer help file additions.
  7294. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  7295. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  7296. <hr /></div>
  7297. <div class="helpfile" id="THEGLOBL.HLP">
  7298. <a class="helpanchor" name="THEGLOBL.HLP__gbl"> </a>
  7299. <p class="helpcentered"><span class="f9 ">The Global</span></p>
  7300. The global Robot is a special-case Robot; it is always present
  7301. on every board of the game. It is immobile (technically off the
  7302. board, but listed as at (-1,-1)), has a ROBOT_ID of 0, and
  7303. cannot be destroyed or changed into another object, even
  7304. through deliberate attempts to do so such as the EXPLODE
  7305. command. All other traits of Robots, such as 2MB of Robot
  7306. memory, reserved local counters and the ability to be copied,
  7307. apply to the global.
  7308. The global is accessed either through pressing G to access the
  7309. Global Settings menu and then clicking Edit Global Robot, or by
  7310. simply pressing Alt+G on the editor screen.
  7311. The global is important because it not only exists on all
  7312. boards, but also continues its state across boards. This allows
  7313. for easy management of continuous global engines such as an
  7314. inventory, status bars, and sidescrolling control, among
  7315. other possibilities. If the global did not exist, a copy of the
  7316. engine would be needed on every board, and the states of each
  7317. such Robot would be separate (possibly leading to management
  7318. problems).
  7319. Certain commands (as hinted above) are worthless in the global.
  7320. Obvious commands such as BECOME, EXPLODE, COLOR/CHAR and all
  7321. command forms that take a relative direction (like LAYBOMB and
  7322. DUPLICATE SELF [dir]) will be ignored. DIE, DIE ITEM and GOTOXY
  7323. # # are completely ignored as well.
  7324. Finally, the global is the only Robot that ignores FREEZETIME
  7325. and SLOWTIME states. This is extremely handy in creating the
  7326. ability to pause and unpause a MegaZeux game, among other
  7327. things.
  7328. <a class="helplink" href="#COMMAND2.HLP___f4">FREEZETIME #</a>
  7329. <a class="helplink" href="#COMMAND2.HLP___sS">SLOWTIME #</a>
  7330. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  7331. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  7332. <hr /></div>
  7333. <div class="helpfile" id="BADPRACT.HLP">
  7334. <a class="helpanchor" name="BADPRACT.HLP__bad"> </a>
  7335. <p class="helpcentered"><span class="f9 ">Robotic Usages That Should be Avoided</span></p>
  7336. There are several coding pitfalls in Robotic; while some are
  7337. complex in nature, others can be easily avoided. In general,
  7338. clean and efficient code is the least likely to cause
  7339. unexpected errors as well as the easiest to repair. Listed here
  7340. are several practices to avoid, as well as proper replacements.
  7341. <span class="fc ">BAD: Creating anything with c?? or p??</span>
  7342. Anything that has an undefined value will use a default
  7343. that may be undesirable. The correct action would therefore
  7344. be to define the object's color and parameter values. c?? and
  7345. p?? generally exist for the sake of Robotic comparisons and
  7346. conditional branching, not for being applied to actual
  7347. objects.
  7348. Sprites are an exception regarding color, since they refer to
  7349. a set of placed characters with their own colors.
  7350. <span class="f9 ">GOOD: Putting in set values for colors and parameters when</span>
  7351. <span class="f9 ">placing objects.</span>
  7352. <span class="fc ">BAD: Using global counters for temporary or localized work.</span>
  7353. There are several counters that are Robot-specific and don't
  7354. eat up global counter space. local through local32 per Robot
  7355. should be enough for almost everyone, and the local counters
  7356. can be written to and read by other robots as well (using the
  7357. rN.local# counter form). If global temp counters are used in
  7358. a Robot with several copies on the board, you will most likely
  7359. run into problems. Unfortunately, using local counters can
  7360. come at the cost of minor readability, since local counters
  7361. cannot be given descriptive names.
  7362. <span class="f9 ">GOOD: Using local counters for temporary or localized work.</span>
  7363. <span class="fC ">BAD: Breaking a subroutine without returning or entering the</span>
  7364. <span class="fC ">middle of a subroutine.</span>
  7365. <span class="f9 ">GOOD: Fully finishing and starting subroutines.</span>
  7366. This is especially important for built-in labels which can
  7367. trigger very rapidly, such as #keyN.
  7368. <span class="fc ">BAD: Using a high amount of if statements regarding one</span>
  7369. <span class="fC ">variable.</span>
  7370. <span class="f9 ">GOOD: Using "label&number&" as the destination label in IF</span>
  7371. <span class="f9 ">statements regarding one variable.</span>
  7372. <span class="fC ">BAD: Looping without using cycle-ending commands of any kind.</span>
  7373. Looping without CYCLE 1 or WAIT 1 in idle loops is more
  7374. severe than one might think. Coupled with the "commands"
  7375. counter set to a high number, loops without CYCLE 1 or WAIT 1
  7376. can absolutely choke a game's speed, especially idle loops,
  7377. and potentially FREEZE YOUR GAME.
  7378. <span class="f9 ">GOOD: Including CYCLE 1 or WAIT 1 in every loop except loops</span>
  7379. <span class="f9 ">that are designed to get a finite length task done as</span>
  7380. <span class="f9 ">quickly as possible.</span>
  7381. You should add a CYCLE 1 or WAIT 1 for any loop that
  7382. constantly checks for events (such as keypresses or board
  7383. status).
  7384. <span class="fC ">BAD: Setting the COMMANDS value to maximum.</span>
  7385. It's generally unneeded, and a loop without a cycle-ending
  7386. command coupled with this change is a guaranteed way to cause
  7387. freezes in MZX. MZX has safeguards for when this happens, but
  7388. it is still very undesirable.
  7389. <span class="f9 ">GOOD: Setting the COMMANDS counter to a reasonably high value.</span>
  7390. Your code can utilize the extra processing speed higher
  7391. commands-per-cycle allows, and if a loop without a
  7392. cycle-ending command is accidentally created, it becomes
  7393. apparent without requiring severe intervention.
  7394. <span class="fc ">BAD: Ending Robots with a label.</span>
  7395. <span class="f9 ">GOOD: Ending Robots with the END command.</span>
  7396. It's debatable whether putting END after commands that
  7397. destroy the Robot (e.g. DIE, EXPLODE #) is necessary, but it
  7398. is still recommended in order to prevent a habit of leaving
  7399. it out in less redundant places.
  7400. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  7401. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  7402. <hr /></div>
  7403. <div class="helpfile" id="SUBROUTE.HLP">
  7404. <a class="helpanchor" name="SUBROUTE.HLP__sub"> </a>
  7405. <p class="helpcentered"><span class="f9 ">Subroutines</span></p>
  7406. Subroutines are returnable labels, in essence. After the
  7407. subroutine actions finish, the Robotic goes to the line right
  7408. after the subroutine call. Anywhere a label can be used, a
  7409. subroutine can be called.
  7410. Another way to think about it is a label with a place marker.
  7411. Going to this label marks your previous place; when done, the
  7412. program goes straight to the place marker and returns where it
  7413. left off.
  7414. Subroutines are accessed by using the # sign as the first
  7415. letter. For example: <span class="fe ">goto "#example"</span><span class="ff "> would call the</span>
  7416. subroutine at the label "#example". To return to the next
  7417. command after the call use <span class="fe ">goto "#return"</span><span class="ff ">.</span>
  7418. In addition, one can go to the first subroutine's return
  7419. position using <span class="fe ">goto "#top"</span><span class="ff ">.</span>
  7420. A quick example of subroutines:
  7421. <span class="fE ">* "YE SHALL NOT PASS UNLESS YOU GIVE ME SPACE."</span>
  7422. <span class="fE ">goto "#spacewait"</span>
  7423. <span class="fE ">* "THAT'S BETTER BUT YOU'RE STILL HERE. _CORRECT THIS_"</span>
  7424. <span class="fE ">goto "#spacewait"</span>
  7425. <span class="fE ">* "THANKS FOR YOUR COMPLIANCE!"</span>
  7426. <span class="fE ">wait 25</span>
  7427. <span class="fE ">* "YOUR PASS WILL ARRIVE IN 6 TO 8 WEEKS! or now! byebyebye"</span>
  7428. <span class="fE ">set "PASS" to 1</span>
  7429. <span class="fE ">die</span>
  7430. <span class="fE ">end</span>
  7431. <span class="fE ">: "#spacewait"</span>
  7432. <span class="fE ">: "spaceheld"</span>
  7433. <span class="fE ">cycle 1</span>
  7434. <span class="fE ">. "If space is held down, progress no further."</span>
  7435. <span class="fE ">. "We want to force space to be pressed each time."</span>
  7436. <span class="fE ">if spacepressed "spaceheld"</span>
  7437. <span class="fE ">: "notspaceloop"</span>
  7438. <span class="fE ">cycle 1</span>
  7439. <span class="fE ">if not spacepressed "notspaceloop"</span>
  7440. <span class="fE ">goto "#return"</span>
  7441. When sending other robots to subroutines the behavior is
  7442. slightly different. Because the robot is pre-empted
  7443. (interrupted) it will return to the same command it was at
  7444. before going to the subroutine, not the instruction after.
  7445. When using subroutines, especially with easily triggerable
  7446. conditions, it is important to try to make sure that every
  7447. subroutine send ends in a #return, or that every set of
  7448. subroutine sends ends in a #top. The built-in labels can be
  7449. especially problematic, as some can trigger rapidly in a short
  7450. period of time. State management with LOCKSELF and/or ZAP is
  7451. crucial.
  7452. NOTE: Unlike older versions of MegaZeux, it is no longer needed
  7453. to initialize the stack, so don't get confused looking at older
  7454. examples of code and seeing odd statements like <span class="fe ">. "#*-1-2-3"</span><span class="ff ">.</span>
  7455. These statements are now treated as comments, and you should
  7456. mentally treat them the same way.
  7457. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  7458. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  7459. <hr /></div>
  7460. <div class="helpfile" id="EXPRESS.HLP">
  7461. <a class="helpanchor" name="EXPRESS.HLP__exp"> </a>
  7462. <p class="helpcentered"><span class="f9 ">Expressions</span></p>
  7463. Expressions in MegaZeux allow users to set counters or a
  7464. displayed number to a mathematical expression. The possible
  7465. inputs are: counters, constants, or a combination. Any
  7466. expression in MegaZeux is bound in quotation marks and
  7467. parentheses. For example, an expression adding 5 and 3 would
  7468. be done in MegaZeux by inputting "(5 + 3)".
  7469. Counters can be used inside expressions using single quotes or
  7470. ampersands like so: "(&five& + 'three')".
  7471. Unlike in many other programming languages, MegaZeux does not
  7472. follow a strict order of operations. Items in parentheses take
  7473. precedence, with other operator precedence solely determined by
  7474. their position (from left to right).
  7475. For example, "(5 - 4 * 20 / (21 - 16))" would evaulate to 4.
  7476. 5 - 4 evaluates to 1; 1 * 20 evaluates to 20; 20 / (21 - 16)
  7477. first evaluates to 20 / 5, which becomes 4.
  7478. Whitespace between operators is not necessary. (5+3) is as valid
  7479. as (5 + 3).
  7480. MegaZeux cannot decipher directly nested ampersands or single
  7481. quotes; such will cause MegaZeux to misinterpret your
  7482. expression in different ways, depending on which you used.
  7483. Therefore, using expressions for nesting is another benefit.
  7484. Example: We set "r" to 1, "in" to 8 and "out18" to 11. We want
  7485. to output the value of "out18".
  7486. "(&out&&r&in&&)" would output (0r&in&).
  7487. "('out'r''in'')" would output ('out'r''in'')
  7488. "('out('r')('in')')" would output the desired result - 11.
  7489. Nesting is limited only to the amount one can put in a single
  7490. editor line - 241 characters.
  7491. In expressions, the following operators may be used:
  7492. Binary operators (value-argument-value):
  7493. + Addition
  7494. - Subtraction
  7495. * Multiplication
  7496. / Division
  7497. % Modulo
  7498. ^ Exponent (A^B is A to the Bth order/power)
  7499. >> Bitshift Right (logical, not arithmetic)
  7500. << Bitshift Left (logical, not arithmetic)
  7501. >>> Signed Shift Right (arithmetic)
  7502. > Greater Than
  7503. < Less Than
  7504. >= Greater Than or Equal To
  7505. <= Less Than or Equal To
  7506. = Equal To
  7507. != Not Equal To
  7508. a Bitwise AND (not logical AND)
  7509. o Bitwise OR (not logical OR)
  7510. x Bitwise XOR (not logical XOR)
  7511. <span class="fE ">+ Addition</span><span class="fF ">: Outputs the sum of the two given values. (3+2)</span>
  7512. would return 5.
  7513. <span class="fE ">- Subtraction</span><span class="fF ">: Outputs the difference of the two given values.</span>
  7514. (3-2) would return 1.
  7515. <span class="fE ">* Multiplication</span><span class="fF ">: Outputs the product of the two given values.</span>
  7516. (3*2) would return 6.
  7517. <span class="fE ">/ Division</span><span class="fF ">: Outputs the quotient of the two given values.</span>
  7518. (3/2) would return 1. Note that any fractional values will be
  7519. truncated, i.e. have the decimal part of the number thrown out.
  7520. <span class="fE ">% Modulo</span><span class="fF ">: Outputs the remainder of the two given values, when</span>
  7521. both values are positive. (5%3) would return 2. The modulo
  7522. expression function and the modulo command may output different
  7523. results if any number involved is negative; unlike the command,
  7524. the modulo expression function uses a floored modulo.
  7525. To explain, if the dividend is negative, than the result will
  7526. be the divisor minus the remainder (e.g. (-5%3) would return
  7527. 1); if the divisor is negative, than the result will be the
  7528. additive inverse of the difference of the divisor and the
  7529. remainder (e.g. (5%-3) would return -1); if BOTH are negative,
  7530. the result will be the additive inverse of the remainder (e.g.
  7531. (-5%-3) would return -2).
  7532. <span class="fE ">^ Exponent</span><span class="fF ">: Outputs the result of taking the first number to</span>
  7533. the power of the second number. (3^2) would return 9.
  7534. <span class="fE ">>> Bitshift Right</span><span class="fF ">: Shifts the first number rightward by [second</span>
  7535. number] of bits. Info shifted off of the boundaries will NOT
  7536. wrap around. Using an 8-bit counter for clarity's sake, (5>>2)
  7537. would turn 5 [00000101] into 1 [00000001] by shifting two bits
  7538. rightward.
  7539. <span class="fE "><< Bitshift Left</span><span class="fF ">: Shifts the first number leftward by [second</span>
  7540. number] of bits. Info shifted off of the boundaries will NOT
  7541. wrap around. Using an 8-bit counter for clarity's sake, (5<<2)
  7542. would turn 5 [00000101] into 20 [00010100] by shifting two bits
  7543. leftward.
  7544. <span class="fE ">>>> Signed Shift Right</span><span class="fF ">: Also known as Arithmetic Right Shift.</span>
  7545. Shifts the first number rightward by [second number] of bits,
  7546. but unlike normal bitshift right, shifts in whatever number was
  7547. in the leftmost bit instead of always shifting in 0s. Info
  7548. shifted off of the boundaries still will not wrap around. Using
  7549. an 8-bit counter for clarity's sake, (5>>>2) would turn 5
  7550. [00000101] into 1 [00000001], while (-5>>>2) would turn -5
  7551. [11111011] into -2 [11111110].
  7552. <span class="fE ">> Greater Than</span><span class="fF ">: If the first number is greater than the second</span>
  7553. number, outputs 1 (TRUE); otherwise, outputs 0 (FALSE). (3>2)
  7554. would return 1, (2>2) would return 0.
  7555. <span class="fE ">< Less Than</span><span class="fF ">: If the first number is less than the second</span>
  7556. number, outputs 1 (TRUE); otherwise, outputs 0 (FALSE). (3<2)
  7557. would return 0, as would (2<2).
  7558. <span class="fE ">>= Greater Than or Equal To</span><span class="fF ">: If the first number is either</span>
  7559. greater than or equal to the second number, outputs 1 (TRUE);
  7560. otherwise, outputs 0 (FALSE). (3>=2) would return 1, as would
  7561. (2>=2).
  7562. <span class="fE "><= Less Than or Equal To</span><span class="fF ">: If the first number is either less</span>
  7563. than or equal to the second number, outputs 1 (TRUE);
  7564. otherwise, outputs 0 (FALSE). (3<=2) would return 0, (2<=2)
  7565. would return 1.
  7566. <span class="fE ">= Equal To</span><span class="fF ">: If the first number is the same value as the second</span>
  7567. number, outputs 1 (TRUE); otherwise, outputs 0 (FALSE). (3=2)
  7568. would return 0, (2=2) would return 1.
  7569. <span class="fE ">!= Not Equal To</span><span class="fF ">: If the first number is a different value</span>
  7570. compared to the second number, outputs 1 (TRUE); otherwise,
  7571. outputs 0 (FALSE). (3!=2) would return 1, (2!=2) would return
  7572. 0.
  7573. <span class="fE ">a = Bitwise AND</span><span class="fF ">: Performs a bitwise AND operation on the two</span>
  7574. given values; i.e. compares the bits of each value and sets to
  7575. 1 each bit that is 1 in both numbers. Using an 8-bit counter
  7576. for clarity's sake, (5a3) would return 1, as 5 [00000101] and 3
  7577. [00000011] has only the bit in the ones place set in both
  7578. numbers, leaving 1 [00000001].
  7579. <span class="fE ">o = Bitwise OR</span><span class="fF ">: Performs a bitwise OR operation on the two</span>
  7580. given values; i.e. compares the bits of each value and sets to
  7581. 1 each bit that is 1 in either number. Using an 8-bit counter
  7582. for clarity's sake, (5o3) would return 7, as 5 [00000101] and
  7583. 3 [00000011] have bits set in the fours, twos, and ones places
  7584. among them, leaving 7 [00000111].
  7585. <span class="fE ">x = Bitwise XOR</span><span class="fF ">: Performs a bitwise XOR operation on the two</span>
  7586. given values; i.e. compares the bits of each value and sets to
  7587. 1 each bit that is different between numbers. Using an 8-bit
  7588. counter for clarity's sake, (5x3) would return 6, as 5
  7589. [00000101] and 3 [00000011] have different bits set in the
  7590. fours and the twos places, leaving 6 [00000110].
  7591. Unary operators (operator followed by value):
  7592. <span class="fE ">- Unary Negation</span><span class="fF ">: returns the negative value of the operand</span>
  7593. (two's complement); i.e. reverses the sign of a number. (-10)
  7594. would return -10.
  7595. <span class="fE ">~ Bitwise Negation</span><span class="fF ">: returns the bitwise NOT value of the</span>
  7596. operand (one's complement); i.e. changes each bit in a number.
  7597. Using an 8-bit counter for clarity's sake, (~10) [00001010]
  7598. would return -11. [11110101]
  7599. Ternary operators (value - operator token - value - operator
  7600. token - value):
  7601. <span class="fE ">?: Conditional Operator</span><span class="fF ">: Evaluates expressions based on the</span>
  7602. value of the first given expression. This operator is often
  7603. simply called the ternary operator. If the expression to the
  7604. left of the question mark is non-zero, the expression between
  7605. the question mark and colon is evaluated; otherwise, the
  7606. expression to the right of the colon is evaluated. For example,
  7607. If "local" is 35, SET "local" ('local'<60?'local'+2:'local'+1)
  7608. would set the value of "local" to 37, as the first expression
  7609. evaluates to 1 and the second expression ('local'+2) is then
  7610. evaluated.
  7611. Special usages:
  7612. -Using a constant expression "(n)" is the only way to directly
  7613. use numbers over 32767 or under -32768. This can not be changed
  7614. due to the way the world file format is coded. This is also the
  7615. only way to use octal (base 8) and full-sized hexadecimal
  7616. numbers; octal numbers always begin with a 0 (ex: 01745) and hex
  7617. numbers begin with 0x (ex: 0xDEAF).
  7618. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  7619. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  7620. <hr /></div>
  7621. <div class="helpfile" id="FILEACSS.HLP">
  7622. <a class="helpanchor" name="FILEACSS.HLP__fil"> </a>
  7623. <p class="helpcentered"><span class="f9 ">File Access</span></p>
  7624. MegaZeux allows somewhat unwieldy but powerful file access
  7625. abilities. File access can do things that no other tools of
  7626. MegaZeux can do, such as create high score tables or preserve
  7627. and unlock game options without needing a save. An MZX world
  7628. can access any file in its own directory or deeper, including
  7629. for charset, palette, sound and MZM loading commands; access of
  7630. folders outside of this range is forbidden.
  7631. MegaZeux has some ways of saving standard formats in-game:
  7632. <span class="fA ">SET "file.txt" to "SAVE_ROBOT"</span>
  7633. <span class="fA ">SET "file.txt" to "LOAD_ROBOT"</span>
  7634. <span class="fA ">SET "file.txt" to "SAVE_ROBOTn"</span>
  7635. <span class="fA ">SET "file.txt" to "LOAD_ROBOTn"</span>
  7636. These commands can save Robotic code to text files and import
  7637. text files into a Robot. The first forms use the current Robot,
  7638. while the second forms use the Robot with the given Robot ID n.
  7639. For LOAD_ROBOT(n), string inputs are also accepted in place of
  7640. hard-coded file names.
  7641. <span class="fA ">SET "file.bc" to "SAVE_BC"</span>
  7642. <span class="fA ">SET "file.bc" to "LOAD_BC"</span>
  7643. <span class="fA ">SET "file.bc" to "SAVE_BCn"</span>
  7644. <span class="fA ">SET "file.bc" to "LOAD_BCn"</span>
  7645. These commands can save Robotic code to files in bitcode format
  7646. and import bitcode files into a Robot. The first forms use the
  7647. current Robot, while the second forms use the Robot with the
  7648. given Robot ID n. Bitcode is much more compact than plain text,
  7649. but cannot be easily read by the human eye.
  7650. Note that for loading Robotic code via LOAD_ROBOT(n) or
  7651. LOAD_BC(n), any and all local counters previously set in the
  7652. Robot will retain their value.
  7653. <span class="fA ">SET "file.sav" to "SAVE_GAME"</span>
  7654. <span class="fA ">SET "file.sav" to "LOAD_GAME"</span>
  7655. These commands save or load MZX savegames, respectively.
  7656. <span class="fA ">SET "file.sav" to "SAVE_COUNTERS"</span>
  7657. <span class="fA ">SET "file.sav" to "LOAD_COUNTERS"</span>
  7658. These commands respectively save or load a counters file.
  7659. Counter files only contain counter and string data and do not
  7660. require version checks. Saving will dump the current contents
  7661. of the current world's counters and strings; loading will set
  7662. the current world's counter and string values to the values
  7663. given in the file.
  7664. <span class="fA ">SET "file.palidx" to "SMZX_INDICES"</span>
  7665. This command loads an SMZX indices file. SMZX indices are
  7666. essentially miniature palettes and will only load in SMZX Mode
  7667. 3.
  7668. MegaZeux can manipulate any type of file with certain Robotic
  7669. commands. There are some basic things to remember when using
  7670. file access.
  7671. -A file can only be read or written to at one time, never both.
  7672. This means you can't select the same file to be the current
  7673. "FREAD_OPEN" and "FWRITE_OPEN" targets.
  7674. -Only one file can be read to and one can be written to at the
  7675. same time.
  7676. -Writing and reading operations change the current fwrite and
  7677. fread positions.
  7678. -The writing and reading position is set to 0 (the beginning
  7679. position of a file) when a file is loaded, unless the
  7680. FWRITE_APPEND command is chosen.
  7681. -There is a special character called the terminator (char #42,
  7682. '*', by default) placed at the end of a write when a string is
  7683. written to a file with FWRITE. This character ends an FREAD to
  7684. a string when encountered (the terminator character itself will
  7685. not be in the string output). However, using FWRITEn will not
  7686. place a terminator, and FREADn will ignore any terminator
  7687. characters encountered.
  7688. -Lastly, files need to be closed when the current task is
  7689. finished. Otherwise, the file remains open and causes problems.
  7690. To close a file, use SET "" to "FREAD_OPEN" to close a file for
  7691. reading and SET "" to "FWRITE_OPEN" to close a file for
  7692. writing.
  7693. Here are the file writing commands at your disposal.
  7694. <span class="fA ">SET "file.xxx" to "FREAD_OPEN"</span>
  7695. This command loads a file for reading.
  7696. <span class="fA ">SET "file.xxx" to "FWRITE_OPEN"</span>
  7697. This command creates a new file for writing; if a file by this
  7698. name already exists, it is overwritten.
  7699. <span class="fA ">SET "file.xxx" to "FWRITE_MODIFY"</span>
  7700. This command opens an existing file for reading without
  7701. overwriting it, starting at the beginning of the file.
  7702. <span class="fA ">SET "file.xxx" to "FWRITE_APPEND"</span>
  7703. This command opens a file for writing at the END of the file.
  7704. Please note that FWRITE_POS settings will not work in this
  7705. mode.
  7706. <span class="fA ">SET "FREAD_POS" to #</span>
  7707. <span class="fA ">SET "FWRITE_POS" to #</span>
  7708. These commands change the current reading or writing position
  7709. of the accessed files. The position is in DECIMAL, not
  7710. hexadecimal, and the first position is 0; when no file is
  7711. loaded, the relevant counter is -1. To seek the end of a file,
  7712. set to -1.
  7713. <span class="fA ">SET "dir" to "FREAD_OPEN"</span>
  7714. This command opens subdirectories for reading (by using the name
  7715. of the subdirectory by itself, e.g. <span class="fA ">SET "directory" to</span>
  7716. "FREAD_OPEN"<span class="fF ">); FREAD will then list the names of files in the</span>
  7717. directory, with each read position being a different filename.
  7718. Note that the files are not guaranteed to be read in any
  7719. specific order.
  7720. <span class="fA ">SET "FREAD_DELIMITER" to #</span>
  7721. <span class="fA ">SET "FWRITE_DELIMITER" to #</span>
  7722. These commands change the character considered the terminator;
  7723. the FREAD command changes which character is detected as the
  7724. terminator, and the FWRITE command changes which character is
  7725. written as the terminator.
  7726. <span class="fA ">SET "counter" to "FREAD_COUNTER"</span>
  7727. Reads from the open file to a counter. This will grab four
  7728. bytes instead of the normal one (treated as signed; the
  7729. resulting range is from -2147483648 to 2147483647).
  7730. <span class="fA ">SET "FWRITE_COUNTER" to "counter"</span>
  7731. Writes from a counter to the open file. This will write the
  7732. full counter instead of simply the first byte (treated as
  7733. signed; the resulting range is from -2147483648 to 2147483647).
  7734. <span class="fA ">SET "FWRITE" to "counter"</span>
  7735. <span class="fA ">SET "$string" to "FWRITE"</span>
  7736. <span class="fA ">SET "$string" to "FWRITEn"</span>
  7737. <span class="fA ">SET "counter" to "FREAD"</span>
  7738. <span class="fA ">SET "$string" to "FREAD"</span>
  7739. <span class="fA ">SET "$string" to "FREADn"</span>
  7740. These commands write values to and read values from,
  7741. respectively, the open file relative to the FREAD_POS or
  7742. FWRITE_POS counters. FWRITE and FREAD, when used with counters,
  7743. only write one byte at a time (from 0-255).
  7744. The SET "$string" to "FWRITEn" and "FREADn" commands will write
  7745. the first n characters (relative to FREAD_POS or FWRITE_POS)
  7746. from the file to the given string or read the first n
  7747. characters from the string into the open file, respectively.
  7748. Using <span class="fA ">SET "$string.N" to "FWRITE(n)"</span><span class="fF "> will ensure that the</span>
  7749. string will be at least N characters long when written.
  7750. FWRITE and FREAD, when used with counters, can be substituted
  7751. by FWRITE_COUNTER and FREAD_COUNTER to read in longer values
  7752. at a time (four bytes as opposed to one).
  7753. Another use of file commands (which takes more work, but not
  7754. much) is verifying whether a file exists. To do this, a
  7755. programmer would type:
  7756. <span class="fE ">SET "file.xxx" to "FREAD_OPEN"</span>
  7757. <span class="fE ">SET "FREAD_POS" to -1</span>
  7758. <span class="fE ">IF "FREAD_POS" >= 0 "existslabel"</span>
  7759. If the file does not exist, "FREAD_POS" will read -1; if it
  7760. does exist, "FREAD_POS" will be the number of characters in the
  7761. file (0 or higher). Setting "FREAD_POS" or "FWRITE_POS" to -1
  7762. is called "file end seeking" and is also very helpful for
  7763. finding the length of the file, as well as for placing stuff at
  7764. the end of a file.
  7765. Here's a quick example of file access.
  7766. <span class="fE ">SET "example.txt" to "FWRITE_OPEN"</span>
  7767. <span class="fE ">SET "$zoosound" to "ROAAAAR"</span>
  7768. <span class="fE ">SET "$zoosound" to "FWRITE"</span>
  7769. <span class="fE ">DEC "FWRITE_POS" by 1</span>
  7770. <span class="fE ">. "This line backs us up one space so that the terminator</span>
  7771. <span class="fE ">. "character will be overwritten, allowing us to display the"</span>
  7772. <span class="fE ">. "whole contents of the file."</span>
  7773. <span class="fE ">SET "$ender" to " (click)"</span>
  7774. <span class="fE ">SET "$ender" to "FWRITE"</span>
  7775. <span class="fE ">SET "" to "FWRITE_OPEN"</span>
  7776. <span class="fE ">. "We're closing the file because we're going to read from it."</span>
  7777. <span class="fE ">SET "example.txt" to "FREAD_OPEN"</span>
  7778. <span class="fE ">ASK "Want to play your animal sounds tape?"</span>
  7779. <span class="fE ">END</span>
  7780. <span class="fE ">: "yes"</span>
  7781. <span class="fE ">SET "$tape" to "FREAD"</span>
  7782. <span class="fE ">* "&$tape&"</span>
  7783. <span class="fE ">WAIT for 30</span>
  7784. <span class="fE ">ZAP "yes" 1</span>
  7785. <span class="fE ">ASK "Want to play it again?"</span>
  7786. <span class="fE ">END</span>
  7787. <span class="fE ">: "yes"</span>
  7788. <span class="fE ">SET "" to "FREAD_OPEN"</span>
  7789. <span class="fE ">. "Switching tasks for the same file again."</span>
  7790. <span class="fE ">SET "example.txt" to "FWRITE_OPEN"</span>
  7791. <span class="fE ">. "We're wiping the file clean."</span>
  7792. <span class="fE ">SET "$winder" to "bzz-bz-zipfwip--(clik) "</span>
  7793. <span class="fE ">SET "$winder" to "FWRITE"</span>
  7794. <span class="fE ">DEC "FWRITE_POS" by 1</span>
  7795. <span class="fE ">SET "$tape" to "FWRITE"</span>
  7796. <span class="fE ">SET "" to "FWRITE_OPEN"</span>
  7797. <span class="fE ">SET "example.txt" to "FREAD_OPEN"</span>
  7798. <span class="fE ">ZAP "yes" 1</span>
  7799. <span class="fE ">: "yes"</span>
  7800. <span class="fE ">SET "FREAD_POS" to 0</span>
  7801. <span class="fE ">. "We're forcing the beginning position because we want to"</span>
  7802. <span class="fE ">. "read all of the file every possible time, not just the"</span>
  7803. <span class="fE ">. "first time."</span>
  7804. <span class="fE ">SET "$tape" to "FREAD"</span>
  7805. <span class="fE ">* "&$tape&"</span>
  7806. <span class="fE ">WAIT for 30</span>
  7807. <span class="fE ">ASK "Want to play it again?"</span>
  7808. <span class="fE ">END</span>
  7809. <span class="fE ">: "no"</span>
  7810. <span class="fE ">SET "" to "FREAD_OPEN"</span>
  7811. <span class="fE ">END</span>
  7812. This Robot will display first a roar and the sound of a tape
  7813. player clicking off before it asks if you want to play the tape
  7814. again. If no, the file is closed and the program ended. If yes,
  7815. rewinding tape sounds are stuck on the front of the text. The
  7816. player can then choose to re-view this text until "No" is
  7817. chosen.
  7818. <a class="helplink" href="#COUNTERS.HLP__fac">File Access Counters</a>
  7819. <a class="helplink" href="#STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  7820. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  7821. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  7822. <hr /></div>
  7823. <div class="helpfile" id="SPRITES.HLP">
  7824. <a class="helpanchor" name="SPRITES.HLP__spr"> </a>
  7825. <p class="helpcentered"><span class="f9 ">Sprites</span></p>
  7826. Sprites allow the designer to have interactive entities on the
  7827. board composed of several characters. A sprite is a block of
  7828. characters drawn on the board or the vlayer that is then
  7829. displayed on the board, either beneath or above the overlay.
  7830. The biggest benefit of sprites is that they are cohesive;
  7831. unlike use of several Robots, there is absolutely no chance of
  7832. the sprite falling apart.
  7833. There are up to 256 available sprites (in total, not per board),
  7834. and sprites are controlled in the following ways:
  7835. -Through sprite specific counters named SPRn_value
  7836. -Through control counters for all of the sprites
  7837. -Through commands for placing sprites and testing for collision
  7838. To setup a sprite you must set the SPRn_REFX / REFY / WIDTH /
  7839. HEIGHT counters to define where the sprite's characters are and
  7840. what its size is. (SPRn_REFX and SPRn_REFY are the coordinates
  7841. for the upper-left corner of the reference characters, which are
  7842. the characters a sprite uses for its appearance.) Then you use:
  7843. <span class="fA ">PUT cXX sprite pNN x y</span>
  7844. where NN is the number of the sprite in hexadecimal (if you
  7845. write NN without the p in decimal it will be automatically
  7846. converted). If cXX is c?? then the sprite is drawn with the
  7847. colors of the reference characters, otherwise it's painted with
  7848. the given colors.
  7849. So, for example, to make a 2x2 sprite, you could base its
  7850. reference characters on the board from the position (10, 10),
  7851. assign it to sprite number 15, then have it drawn at position
  7852. (40, 5). The Robotic for this is as follows:
  7853. <span class="fA ">SET "spr15_refx" 10</span>
  7854. <span class="fA ">SET "spr15_refy" 10</span>
  7855. <span class="fA ">SET "spr15_width" 2</span>
  7856. <span class="fA ">SET "spr15_height" 2</span>
  7857. <span class="fA ">PUT c?? sprite p0f 40 5</span>
  7858. You can then move the sprite around by changing spr15_x and
  7859. spr15_y. For example, using:
  7860. <span class="fA ">INC "spr15_x" 1</span>
  7861. <span class="fA ">DEC "spr15_y" 1</span>
  7862. will move the sprite to the northeast by 1.
  7863. As with the overlay, any instance of char 32 in the sprite will
  7864. not be shown, instead displaying the next underlying layer.
  7865. Also, if the reference characters change, the sprite's
  7866. characters will change to match, as will colors of a c?? sprite.
  7867. Now that you have sprites set up and displayed, you can do
  7868. collision tests. These check if moving sprites will cause
  7869. collision (i.e. overlapping) with either the foreground (i.e.
  7870. customblocks) or with other sprites. This way, you can prevent
  7871. sprites from moving on top of walls or on top of other
  7872. characters, or allow a sprite to damage another one when
  7873. striking.
  7874. This is done by using the following command:
  7875. <span class="fA ">IF c?? sprite_colliding pNN x y "collision"</span>
  7876. This will go to the label "collision" if moving the sprite x by
  7877. y from its current position will cause it to collide with
  7878. something. If anything besides c?? is used then (x, y) are
  7879. absolute board coordinates instead.
  7880. If collision is gone to, then the spr_clistN counters will be
  7881. set to what it collided with and spr_collisions will be set to
  7882. the number of things that the sprite collided with. If the
  7883. sprite will have collided with the foreground, spr_clist0 will
  7884. be set to -1. If for instance, the sprite also collided with
  7885. sprites 2 and 3 spr_collisions will be set to 3 and spr_clist1
  7886. will be 2, spr_clist2 will be 3. The values of spr_clistN with
  7887. values of n greater than spr_collisions - 1 are undefined.
  7888. Sprites can be set to ignore certain types of blocks in
  7889. collision checks by setting the sprN_ccheck value of a given
  7890. sprite N. In addition, setting a sprite's ccheck value to 2 will
  7891. cause blank characters in a sprite from being shown, much like
  7892. char 32.
  7893. sprN_static uses the SCROLLEDX and SCROLLEDY counters instead
  7894. of absolute board coordinates for determining collisions.
  7895. Sprites can also have modified collision boxes, instead of them
  7896. being limited to covering the sprite. Use the SPRn_CX/SPRn_CY
  7897. counters to set the respective x,y coordinates of the upper-left
  7898. corner of the collision box, and use SPRn_CWIDTH/SPRn_CHEIGHT to
  7899. set its respective width and height (in tiles).
  7900. Since sprites are global, they will persist upon changing
  7901. boards. Since the vlayer is global as well, using the vlayer to
  7902. reference characters (by setting the SPRn_VLAYER counter to 1)
  7903. will keep sprite characters consistent between boards.
  7904. <p class="helpcentered"><span class="f9 ">Unbound Sprites</span></p>
  7905. Unbound sprites are sprites with special implementations,
  7906. allowing significantly greater precision and access to extra
  7907. character sets. They have their own setup, their own quirks, and
  7908. their own unique restrictions.
  7909. A sprite can be set as unbound by setting the SPRn_UNBOUND
  7910. counter to 1 for a given sprite number n. Once this is done, the
  7911. sprite becomes "unbound" from the tile grid and immediately
  7912. starts using pixels as reference for the collision box (SPRn_CX,
  7913. SPRn_CY, SPRn_CWIDTH, SPRn_CHEIGHT) and sprite location (SPRn_X,
  7914. SPRn_Y). Other attributes, such as reference location and sprite
  7915. dimensions, are left in terms of tiles. Essentially, this means
  7916. that sprite control and collision checks can now be easily
  7917. pixel-based.
  7918. (If, for whatever reason, a sprite is given tile-based x/y
  7919. parameters and placed before setting as an unbound sprite, the
  7920. sprite will not adjust its x/y location in pixels to match and
  7921. will keep the literal x/y values, adjusting them to be in terms
  7922. of pixels instead of tiles once the unbound status is set.)
  7923. On top of pixel-based manipulation, unbound sprites have
  7924. extended display options at their disposal. Unlike other
  7925. sprites, unbound sprites are allowed access to up to 14 "extra"
  7926. character sets.
  7927. First, one must place characters in the extra locations.
  7928. This can be done in two ways: with the LOAD CHAR SET command or
  7929. the CHAR EDIT command. With LOAD CHAR SET, extra character sets
  7930. can be loaded into their proper places by using the @ prefix to
  7931. load it into proper positions. The first extra character set
  7932. begins at position 256, the second at 512, the third at 768, and
  7933. so on. (One could also load a character set file that is much
  7934. larger than normal to fill these positions.) CHAR EDIT can
  7935. manipulate individual characters of an extra charset by being
  7936. given similar numbers, but the command cannot take them
  7937. directly; one must feed it a counter with the desired number
  7938. instead.
  7939. Second, the sprite must be set to access these charsets. This is
  7940. done by setting an offset for that sprite using the SPRn_OFFSET
  7941. counter. For example, setting SPR0_OFFSET to 256 will change all
  7942. character references done by sprite 0 to the first extra
  7943. character set.
  7944. As this process implies, each unbound sprite is still limited to
  7945. one character set's worth of characters - 256 - simultaneously.
  7946. However, different unbound sprites can accept different offsets
  7947. and display their sets of characters at the same time, resulting
  7948. in up to 3840 different characters loaded at once (not counting
  7949. the system set).
  7950. In addition to access to larger numbers of characters, unbound
  7951. sprites can provide transparency effects on a per-sprite basis,
  7952. instead of merely treating certain characters as transparent.
  7953. Each unbound sprite has its own transparent color, which is set
  7954. with the SPRn_TCOL counter. All pixels of that color in that
  7955. unbound sprite will not display, and instead show the next
  7956. underlying layer.
  7957. When assigned a ccheck value with SPRn_CCHECK, an unbound sprite
  7958. will only apply its personal ccheck value in collision tests
  7959. instead of the value of the sprite that initiated the check. In
  7960. addition, unbound sprites can use a special ccheck value (3) to
  7961. ignore transparent colors in collision checks.
  7962. Finally, SMZX modes do not affect unbound sprite movement and
  7963. manipulation. This fact can be exploited to overlap SMZX sprites
  7964. and potentially raise detail to normal MZX mode levels while
  7965. retaining much of SMZX's palette benefits.
  7966. Unfortunately, unbound sprites cannot be used with all MZX
  7967. renderers. At present, the overlay2 renderer is incompatible
  7968. with unbound sprites.
  7969. See the Sprite Counters and Robotic sections for other features
  7970. of sprites not noted here.
  7971. <a class="helplink" href="#COUNTERS.HLP__spc">Sprite Counters</a>
  7972. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  7973. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  7974. <hr /></div>
  7975. <div class="helpfile" id="SMZXMODE.HLP">
  7976. <a class="helpanchor" name="SMZXMODE.HLP__095"> </a>
  7977. <p class="helpcentered"><span class="f9 ">Super MegaZeux Modes</span></p>
  7978. Super MZX modes (a.k.a. SMZX) allow richer color options at the
  7979. expense of halved horizontal resolution. The number of colors
  7980. per character doubles to four, while the number of total max
  7981. colors on-screen at one time squares to 256. However, each mode
  7982. works differently and has different limitations and uses.
  7983. In the editor, F11 switches between display modes. To set Super
  7984. MZX modes in a game, use the <span class="fA ">set "smzx_mode" # </span><span class="fF ">Robotic</span>
  7985. command, where # is the SMZX mode (0 to revert to normal mode).
  7986. Super MZX mode 1 is the simplest mode and the easiest mode to
  7987. use. SMZX mode 1 simply blends the foreground and background
  7988. colors to get the third and fourth character colors. It is
  7989. obviously limited (this mode only allows editing of the 16
  7990. base colors) but is useful for anti-aliasing and shading
  7991. effects.
  7992. Super MZX mode 2 is the most difficult mode to use, although it
  7993. has its benefits. It allows considerable control over the
  7994. palette and allows for some overlay and sprite translucency
  7995. effects. All 256 colors can be individually manipulated, and
  7996. each color also represents a subpalette of four colors that is
  7997. used by a character when an object is assigned that color.
  7998. The four colors (values in hex) are determined as such:
  7999. -Color I is the background color number as the first and second
  8000. digits. (For example, if background color is 5, the hex number
  8001. of color I is 55.)
  8002. -Color II is the foreground color number as the first digit
  8003. and the background color number as the second. (For example, if
  8004. foreground color is 10 and background color is 5, the hex
  8005. number of color II is A5.)
  8006. -Color III is the background color number as the first digit and
  8007. the foreground color number as the second. (For example, if
  8008. background color is 5 and foreground color is 10, the hex
  8009. number of color III is 5A.)
  8010. -Color IV is the foreground color number as the first and
  8011. second digit. (For example, if foreground color is 10, the hex
  8012. number of color IV is AA.)
  8013. Super MZX mode 3 is the best for dynamic usage of the palette,
  8014. and the easiest to edit in general. By default, its four colors
  8015. are determined around a base value in hex (background color
  8016. number as first digit, foreground color number as second). Color
  8017. I's number is the base, II's is base+1, III's is base+2, and
  8018. IV's is base+3. The numbers wrap around (so if your base is, for
  8019. example, FF, color II would be 00).
  8020. However, one can also directly change each value, disregarding
  8021. these rules. This essentially allows 256 user-defined
  8022. subpalettes of four colors each. These overrides, called SMZX
  8023. indices, are loaded and saved out separately from the normal
  8024. palette. These changes can only apply for renderers that can
  8025. show unbound sprites.
  8026. Character editing in Super MZX modes is noticeably different.
  8027. While the character set can be edited in MegaZeux's internal
  8028. character editor, certain changes occur. 1-4 selects the
  8029. desired color; space no longer toggles between colors (it
  8030. always sets here); right click no longer clears; clear mode is
  8031. gone.
  8032. Palette editing for SMZX modes is also accommodated by MZX's
  8033. palette editor. However, the user needs to be in the relevant
  8034. SMZX mode before loading the palette editor.
  8035. On top of direct editing through the editor, SMZX palettes can
  8036. be changed on the fly with Robotic. The counters for SMZX
  8037. palettes are:
  8038. <span class="fB ">SMZX_Rn</span>
  8039. <span class="fB ">SMZX_Bn</span>
  8040. <span class="fB ">SMZX_Gn</span>
  8041. Manipulation of these counters can change or read the value of
  8042. color n's red/blue/green value, respectively. n ranges from 0
  8043. to 255.
  8044. The SMZX indices can also be directly read or changed with the
  8045. <span class="fB ">SMZX_IDXx,y</span><span class="fF "> counter. x is the palette color ranging from 0</span>
  8046. to 255; y is one of the given color's indices ranging from 0 to
  8047. 3.
  8048. Lastly, SMZX palettes and character sets can be loaded and
  8049. saved like any other palette or character set. SMZX indices must
  8050. be loaded in a special manner in Robotic:
  8051. <span class="fE ">SET "filename" "SMZX_INDICES"</span><span class="fF ">. </span>
  8052. There is a deprecated way to load an SMZX palette in Robotic
  8053. (SET "filename" "smzx_palette") due to constraints DOS imposed,
  8054. but it is no longer necessary.
  8055. <a class="helplink" href="#COUNTERS.HLP__szc">Super MZX Counters</a>
  8056. <a class="helplink" href="#PALEEDIT.HLP__093">The Palette Editor</a>
  8057. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  8058. <a class="helplink" href="#CHAREDIT.HLP__079">The Character Editor</a>
  8059. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  8060. <hr /></div>
  8061. <div class="helpfile" id="VLAYER.HLP">
  8062. <a class="helpanchor" name="VLAYER.HLP__vla"> </a>
  8063. <p class="helpcentered"><span class="f9 ">The Vlayer and Its Uses</span></p>
  8064. The vlayer is an extra, global graphical layer, but it is never
  8065. directly seen in a game. It can only hold character and color
  8066. info. The vlayer acts like a workspace allowing copying from/to
  8067. overlay, copying from/to MZMs, copying between places in the
  8068. vlayer, reading/writing individual graphical data to/from the
  8069. vlayer, and reading strings from the vlayer.
  8070. Another important aspect of the vlayer is the ability to
  8071. reference a sprite to the vlayer. This allows indirect display
  8072. of the vlayer through display of sprites. This can be
  8073. exploited to create the semblance of an extra overlay layer.
  8074. The vlayer defaults to 32768 characters large (256x128); its
  8075. size can be as large as roughly 16.7 million characters (2^24).
  8076. While in the editor, press Alt+V to enter the Vlayer Editor. The
  8077. vlayer editor accepts the following commands:
  8078. <a class="helpanchor" name="VLAYER.HLP__074"><span class="fE ">Alt+B - Block</span></a>
  8079. Press Alt+B to start block mode, then move the cursor to the
  8080. opposite corner of a rectangular block and press Alt+B again.
  8081. You can then select an action to perform upon the block. In all
  8082. copy/move operations, the cursor marks the new UPPER LEFT
  8083. corner.
  8084. Copy block will allow you to duplicate the block by moving the
  8085. cursor to a destination and pressing Enter.
  8086. Copy block (repeated) is the same as Copy block but can allow
  8087. copying of the same block to multiple places.
  8088. Move block will allow you to move the block to a new location.
  8089. Clear block will erase the contents of the block.
  8090. Flip block will flip the block upside down.
  8091. Mirror block will flip the block left to right.
  8092. Paint block will change the entire block to the current color.
  8093. Copy to board will copy the block to the given spot of the
  8094. board. You can choose to place it as either Custom Block, Custom
  8095. Floor, or Text.
  8096. Copy to overlay will copy the block to the given spot of the
  8097. overlay.
  8098. Save as MZM will save the block as a layer-type MZM file.
  8099. Destinations for Move and Copy can overlap the original block
  8100. safely. Ctrl+Dir is especially helpful when doing a repeated
  8101. copy block; it moves the cursor the width or height of the
  8102. block, ensuring no overlap when pasting.
  8103. Like normal Block functions, one can copy between boards by
  8104. selecting the board when the editor prompts the user for the
  8105. block's destination. Use the B key to select the destination
  8106. board.
  8107. <a class="helpanchor" name="VLAYER.HLP___C"><span class="fE ">C - Color</span></a>
  8108. Press C to select a new current color from a menu. The thing
  8109. under the cursor is not affected. One can jump to a color by
  8110. typing its hex code in the color menu; for example, typing "0D"
  8111. would jump to color 013 (background color 0, foreground color
  8112. D).
  8113. <a class="helpanchor" name="VLAYER.HLP___F"><span class="fE ">F - Fill</span></a>
  8114. Press F to fill in an enclosed area with the current character
  8115. and color. The area must be completely surrounded by characters
  8116. other than the character beneath the cursor. For example, you
  8117. can fill over a solid square of As with something else. The
  8118. current fill command may not work correctly for very large and
  8119. complex areas - in this case, you must move to the unfilled
  8120. areas and press F to continue filling. However, this happens
  8121. very rarely.
  8122. <a class="helpanchor" name="VLAYER.HLP__AltV"><span class="fE ">Alt+V - Exit Vlayer Editor</span></a>
  8123. Alt+V will exit vlayer mode and return to editing the main
  8124. board.
  8125. <a class="helpanchor" name="VLAYER.HLP__103"><span class="fE ">Alt+P - Size</span></a>
  8126. Alt+P will open the vlayer size menu. From here, one can change
  8127. the dimensions of the vlayer; if the vlayer is shrank in one or
  8128. both dimensions, the user will be asked for confirmation. Any
  8129. characters removed by shrinking vlayer dimensions are lost, and
  8130. any dimension settings that would cause the vlayer to go over
  8131. its maximum size will be limited to the largest size possible by
  8132. reducing the smallest given dimension until the vlayer is within
  8133. size limits (if both given dimensions are the same size, width
  8134. is reduced). Changing the size of the vlayer will clear the undo
  8135. history of the vlayer.
  8136. <a class="helpanchor" name="VLAYER.HLP__F1"><span class="fE ">F1 - Help</span></a>
  8137. F1 will bring up context-relevant help. You can press F1 at
  8138. almost any time.
  8139. <a class="helpanchor" name="VLAYER.HLP__F2"><span class="fE ">F2 - Text</span></a>
  8140. F2 will toggle text mode on and off. When text mode is on, Enter
  8141. will go to the next line, and Backspace will delete going
  8142. backwards. All printable characters will type in as text.
  8143. <a class="helpanchor" name="VLAYER.HLP__Ar"><span class="fE ">Arrow - Move</span></a>
  8144. The arrow keys will move the cursor. The edit window will scroll
  8145. when necessary.
  8146. <a class="helpanchor" name="VLAYER.HLP__AltAr"><span class="fE ">Alt+Arrow - Move 10</span></a>
  8147. Alt with the arrow keys will move the cursor ten spaces at a
  8148. time (or to a vlayer edge if it is under 10 spaces away in that
  8149. direction).
  8150. <a class="helpanchor" name="VLAYER.HLP__BkSp"><span class="fE ">Backspace - Delete</span></a>
  8151. <a class="helpanchor" name="VLAYER.HLP__Del"><span class="fE ">Del - Delete</span></a>
  8152. These two keys will delete everything under the cursor. The
  8153. current character is not affected.
  8154. <a class="helpanchor" name="VLAYER.HLP__End"><span class="fE ">End - L/R Corner</span></a>
  8155. End will jump the cursor to the lower-right corner of the entire
  8156. vlayer.
  8157. <a class="helpanchor" name="VLAYER.HLP__Enter2"><span class="fE ">Enter - Character</span></a>
  8158. Enter will alter the current character on the vlayer. Select it
  8159. from a menu and then press Enter to confirm your choice.
  8160. <a class="helpanchor" name="VLAYER.HLP__ESC"><span class="fE ">ESC - Exit/Cancel Mode</span></a>
  8161. ESC will exit vlayer mode. If you are in block, text, or draw
  8162. mode, ESC will instead cancel the current mode and return to
  8163. normal vlayer editing.
  8164. <a class="helpanchor" name="VLAYER.HLP__Home"><span class="fE ">Home - U/L Corner</span></a>
  8165. Home will jump the cursor to the upper-left corner of the
  8166. entire vlayer.
  8167. <a class="helpanchor" name="VLAYER.HLP__Ins"><span class="fE ">Ins - Grab</span></a>
  8168. Ins will select the character and color under the cursor
  8169. as the current. The actual character is not affected.
  8170. <a class="helpanchor" name="VLAYER.HLP__Sp"><span class="fE ">Spacebar - Place</span></a>
  8171. Spacebar will copy the current character and color to the
  8172. location under the cursor. Other characters will be deleted if
  8173. they are under the cursor.
  8174. <a class="helpanchor" name="VLAYER.HLP__Tab"><span class="fE ">Tab - Draw</span></a>
  8175. Tab will toggle the current draw mode. When drawing is on, you
  8176. will place a copy of the current character every time you move
  8177. the cursor.
  8178. <a class="helpanchor" name="VLAYER.HLP__CtrG"><span class="fE ">Ctrl+G - Goto Position</span></a>
  8179. Ctrl+G will pop up a window, displaying target x,y coordinates.
  8180. Set the coordinates by either typing in or selecting the
  8181. desired X and Y values, and select OK to go to those coordinates
  8182. on the vlayer. Choosing Cancel or pressing Escape cancels.
  8183. <span class="fE ">P - Change Buffer Character</span>
  8184. P will act much like Enter, but only change the character in the
  8185. buffer. No character on the vlayer is changed with this action.
  8186. <span class="fE ">Alt+Z - Clear (Vlayer)</span>
  8187. Alt+Z will clear the vlayer entirely. You will be asked for
  8188. confirmation. Clearing the vlayer will clear the vlayer undo
  8189. history as well.
  8190. <a class="helpanchor" name="VLAYER.HLP__CtrZ"><span class="fE ">Ctrl+Z - Undo</span></a>
  8191. <a class="helpanchor" name="VLAYER.HLP__CtrY"><span class="fE ">Ctrl+Y - Redo</span></a>
  8192. Ctrl+Z will undo an action; Ctrl+Y will redo any previously
  8193. undone action. Action depth is determined by config file
  8194. settings, with 100 as default.
  8195. ---
  8196. On top of being modifiable in the editor, the vlayer can be
  8197. changed in a running MZX world with Robotic. To manipulate the
  8198. vlayer in Robotic, "#n" is used instead of pure numbers in copy
  8199. commands. For example, if copying a 2x2 block from (6,6) of the
  8200. board to (0,0) of the vlayer is wanted, the command would be:
  8201. <span class="fE ">COPY BLOCK 6 6 2 2 "#0" "#0"</span>
  8202. Here are the vlayer copy functions:
  8203. Board to vlayer: <span class="fA ">COPY BLOCK x1 y1 w h "#x2" "#y2"</span>
  8204. Overlay to vlayer: <span class="fA ">COPY OVERLAY BLOCK x1 y1 w h "#x2" "#y2"</span>
  8205. Vlayer to board: <span class="fA ">COPY BLOCK "#x1" "#y1" w h x2 y2</span>
  8206. Vlayer to overlay: <span class="fA ">COPY OVERLAY BLOCK "#x1" "#y1" w h x2 y2</span>
  8207. In the commands below, <span class="fe ">COPY BLOCK</span><span class="ff "> and </span><span class="fe ">COPY OVERLAY BLOCK</span>
  8208. are interchangeable.
  8209. Vlayer to MZM:
  8210. <span class="fA ">COPY (OVERLAY) BLOCK "#x1" "#y1" w h "@name.mzm" m</span>
  8211. Vlayer to string:
  8212. <span class="fA ">COPY (OVERLAY) BLOCK "#x1" "#y1" w h "$stringN" c</span>
  8213. Vlayer to itself:
  8214. <span class="fA ">COPY (OVERLAY) BLOCK "#x1" "#y1" w h "#x2" "#y2"</span>
  8215. There are several ways to give the vlayer working coordinates:
  8216. Pure numbers - <span class="fE ">"#xxx"</span>
  8217. Counter value - <span class="fE ">"#&counter&"</span>
  8218. Expressions - <span class="fE ">"#('counter' + x)"</span>
  8219. MZMs can be placed on the vlayer by using p02. Example:
  8220. <span class="fE ">PUT "@visuals.mzm" image_file p02 x y</span>
  8221. Reading and writing single characters or colors from the vlayer
  8222. requires the vch and vco counters.
  8223. For reading and writing characters use <span class="fE ">"vchX,Y"</span><span class="fF ">.</span>
  8224. For reading and writing colors use <span class="fE ">"vcoX,Y"</span><span class="fF ">.</span>
  8225. For example:
  8226. <span class="fE ">SET "vch10,10" '+'</span><span class="ff "> sets the vlayer char at (10,10) to a plus</span>
  8227. sign.
  8228. <span class="fE ">SET "vco10,10" 15</span><span class="ff "> sets the vlayer color at (10,10) to white on</span>
  8229. black.
  8230. <span class="fE ">SET "temp" "vch10,10"</span><span class="ff "> sets temp to whatever the character at</span>
  8231. (10,10) of the vlayer is.
  8232. Vlayer size can be changed by setting the counter "vlayer_size"
  8233. to the desired length of the vlayer. Doing this only sets the
  8234. maximum size; the actual vlayer will not be this large unless
  8235. the vlayer's dimensions are changed. All attempts to set the
  8236. vlayer's size above the maximum will be ignored.
  8237. To change the vlayer's dimensions in Robotic, use the counters
  8238. "vlayer_width" and "vlayer_height". When one dimension is
  8239. given, the other becomes as large as possible to fill the given
  8240. vlayer. For example, if one has a vlayer 50000 characters large
  8241. and sets vlayer_height to 499, the vlayer's width will become
  8242. 100 characters wide (for a total vlayer size of 49900
  8243. characters).
  8244. All bad values of vlayer_size, vlayer_height and vlayer_width
  8245. (0 and below) will be changed to 1.
  8246. Remember that the vlayer is global. If many vlayers are wanted,
  8247. liberal usage of MZM saving and loading can help get around this
  8248. problem.
  8249. <a class="helplink" href="#COUNTERS.HLP__vlc">Vlayer Counters</a>
  8250. <a class="helplink" href="#STRINGS.HLP__1st">Strings, Special Formatting, and Their Place in Robotic</a>
  8251. <a class="helplink" href="#MZM.HLP__mzm">Using MZMs</a>
  8252. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  8253. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  8254. <hr /></div>
  8255. <div class="helpfile" id="MZM.HLP">
  8256. <a class="helpanchor" name="MZM.HLP__mzm"> </a>
  8257. <p class="helpcentered"><span class="f9 ">Using MZMs</span></p>
  8258. MZM files are rough equivalents of the ANSI files used in older
  8259. MZX versions. MZMs, however, are much more powerful and can
  8260. store much more information. MZMs can be up to 65535 x 65535
  8261. tiles in size. MZMs are useful for easy access of reused
  8262. graphics and reused, multi-Robot entities.
  8263. MZMs come in two modes: "board" and "layer".
  8264. * Board mode saves color, param, ID, and under information.
  8265. However, it cannot save the player, scrolls or sensors.
  8266. Board mode can save Robots and most built-ins; MZMs saved
  8267. in the editor will save fresh robots, while MZMs saved
  8268. in-game keep the Robots' current states.
  8269. * Layer mode saves only color and char information.
  8270. Any information not saveable will be replaced by a customblock
  8271. facsimile.
  8272. When loading a board MZM file to the overlay or vlayer, the
  8273. character used is the parameter stored. Outside of customblocks
  8274. and related, different characters could appear due to different
  8275. param settings (especially built-ins and Robots).
  8276. One can save MZMs in the editor; use the block action function.
  8277. MZMs saved in the editor from the board are saved as board;
  8278. from the overlay and vlayer, MZMs are always saved as layer.
  8279. Robotic methods of saving MZMs are:
  8280. <span class="fA ">COPY BLOCK x y w h "@filename" p</span>
  8281. <span class="fA ">COPY OVERLAY BLOCK x y w h "@filename" p</span>
  8282. <span class="fA ">COPY (OVERLAY) BLOCK "#x" "#y" w h "@filename" m</span>
  8283. X/Y are the coordinates of the block's upper-left corner; w/h
  8284. are the width and height of the block; filename is the name of
  8285. the file (the @ is required); finally, p determines the MZM
  8286. type. 1 saves as layer; 0 saves as board. 0 is integral for
  8287. copying non-graphical data (especially Robots); 1 is proper for
  8288. copying graphical data, as the block's appearance will stay as
  8289. exactly as it was when saved. The last case is for saving from
  8290. the vlayer to MZM. The x,y coordinates MUST be in "#x" "#y"
  8291. format, and the m MUST exist. Any valid MZX string can take the
  8292. place of a filename, but the @ prefix is still required.
  8293. Unlike with board MZMs containing Robots saved in the editor,
  8294. loading board MZMs containing runtime Robots in the editor is
  8295. unsupported. Any such Robot will be replaced with a customblock
  8296. fascimilie. If you want any such MZMs to be fully loaded, they
  8297. must also be loaded at runtime.
  8298. The Robotic method of loading MZMs is:
  8299. <span class="fA ">PUT "@filename" image_file pNN x y</span>
  8300. filename is the name of the MZM file (after the required @),
  8301. x and y are the upper-left corner's coordinates, and NN is 00
  8302. for board, 01 for overlay, 02 for vlayer. Again, any valid
  8303. string can take the place of a filename if preceded by the
  8304. required @ prefix.
  8305. Finally, MZMs will neither be saved nor loaded if at the edge
  8306. of a board.
  8307. <a class="helplink" href="#USINGTHE.HLP___g">Alt+B OR Alt+Enter - Block action</a>
  8308. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  8309. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  8310. <hr /></div>
  8311. <div class="helpfile" id="TRIG.HLP">
  8312. <a class="helpanchor" name="TRIG.HLP__tri"> </a>
  8313. <p class="helpcentered"><span class="f9 ">Trigonometric Functions</span></p>
  8314. Trigonometry can simplify some complex engines, and MegaZeux
  8315. can access several trigonometric functions with fair precision.
  8316. However, accessing trigonometric functions in MegaZeux requires
  8317. some setup.
  8318. Because MegaZeux works solely with integers, you need to set
  8319. the counter "multiplier" to determine how the non-integer
  8320. working value is converted. For example, if your function
  8321. has a value of .86602 and "multiplier" is set to 10000, the
  8322. resulting value would be 8660. Results are always truncated
  8323. (that is, have everything to the right of the decimal removed).
  8324. The default value for the "multiplier" counter is 10000.
  8325. The counter "c_divisions" determines the precision of the trig
  8326. functions by determining how many times the circle is divided.
  8327. Sensible values for this include 360 (degree precision), 21600
  8328. (arc-minute precision) and 1296000 (arc-second precision). The
  8329. default value for the "c_divisions" counter is 360.
  8330. The "divider" counter works solely on inverse trigonometric
  8331. functions. Its effect is to divide the number passed to an
  8332. inverse function before it is calculated. For example, if you
  8333. have "divider" set to 100 and try to calculate "acos50", MZX
  8334. will calculate the arccosine of .50 (50 divided by 100),
  8335. outputting 60 degrees. The default value for the "divider"
  8336. counter is 10000.
  8337. These are the trig functions MegaZeux can directly utilize.
  8338. <span class="fA ">SIN - sine</span>
  8339. <span class="fA ">COS - cosine</span>
  8340. <span class="fA ">TAN - tangent</span>
  8341. <span class="fA ">ASIN - arcsine (inverse sine)</span>
  8342. <span class="fA ">ACOS - arccosine (inverse cosine)</span>
  8343. <span class="fA ">ATAN - arctangent (inverse tangent, takes signs into account)</span>
  8344. <span class="fA ">ARCTAN - atan2 (special form of arctangent, takes two values</span>
  8345. <span class="fA ">in the form of ARCTANdy,dx ("dy" is the first input, "dx" the</span>
  8346. <span class="fA ">second))</span>
  8347. NOTE: The inverse functions output degrees, not radians.
  8348. To use the counters you put the unit number after the counter
  8349. name. Here's an example. To display the cosine of 30 degrees
  8350. with degree-based precision, the needed line would be:
  8351. <span class="fE ">* "&cos30&"</span>
  8352. Trig functions can also take expressions and counters. However,
  8353. counters can only be inserted through expressions; a construct
  8354. like "&sinlocal&" will not work, but "&sin('local')&" will.
  8355. <a class="helplink" href="#COUNTERS.HLP__mth">Mathematical Counters</a>
  8356. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  8357. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  8358. <hr /></div>
  8359. <div class="helpfile" id="PROCESS.HLP">
  8360. <a class="helpanchor" name="PROCESS.HLP__prc"> </a>
  8361. <p class="helpcentered"><span class="f9 ">Cycles and Board Scans - How MZX Processes Robots</span></p>
  8362. Knowing MZX's commands is important for coding, obviously, but
  8363. knowing how and when they get executed can be just as
  8364. paramount.
  8365. After executing code in the global Robot, MegaZeux executes
  8366. Robotic code by scanning the board from the top-leftmost Robot
  8367. first, then proceeding from left-to-right, jumping down to the
  8368. beginning of the next line when at the end of its current line,
  8369. and ending at the Robot in the bottom-right corner. This action
  8370. is called a BOARD SCAN. MegaZeux then does a clean-up scan in
  8371. reverse to catch certain actions. This complete act of scanning
  8372. a board and executing any Robotic commands is called a CYCLE,
  8373. and when a Robot completes all of its commands for that cycle,
  8374. it's called ENDING A CYCLE for that Robot. After a cycle is
  8375. executed, the display is updated, so MegaZeux's internal frame
  8376. rate is essentially the same rate as the number of cycles
  8377. executed per second.
  8378. By default, MegaZeux will run up to 40 commands per Robot in a
  8379. cycle. Setting the COMMANDS counter can set the number of
  8380. commands processed per Robot per cycle to be lower or
  8381. (significantly) higher. Some commands, however, have the ability
  8382. to end processing prematurely; these are called cycle-ending
  8383. commands. When the COMMANDS value is very high, MegaZeux can end
  8384. up consuming large amounts of processing power in a single
  8385. cycle. Cycle-ending commands can limit the number of commands
  8386. processed in a cycle to only what is necessary. Otherwise, very
  8387. high COMMANDS values can potentially slow down MegaZeux or even
  8388. cause MegaZeux to trigger safeguards that prevent it from
  8389. freezing.
  8390. The two commands that are best suited for ending the cycle are
  8391. WAIT 1 and CYCLE 1, due to their very low amounts of side
  8392. effects. While WAIT 1 is preferred in most cases, there is a
  8393. subtle difference between processing the two due to a quirk with
  8394. reverse scan detailed later in this section.
  8395. As a simple rule of thumb, commands that move anything on the
  8396. board generally end a cycle, especially moving the player,
  8397. though this is not always the case.
  8398. The amount of cycles MegaZeux processes per second is set by the
  8399. MZX_SPEED value. Speed 1 is completely processor-bound and will
  8400. execute as many cycles per second as possible. Other speeds
  8401. process cycles according to this formula:
  8402. <span class="fE ">62.5 / (MZX_SPEED - 1) = cycles per second</span>
  8403. Simplified, this means that MegaZeux can be set to consistent
  8404. rates ranging from 62 & 1/2 cycles per second (speed 2) all the
  8405. way down to 4 & 1/6 cycles per second (speed 16).
  8406. The CYCLE command dictates how often a Robot is active. By
  8407. default, Robots will execute commands on every cycle, but the
  8408. CYCLE command can cause a Robot to spend a certain number of
  8409. cycles idling before executing commands. Robots can go from
  8410. executing 1 out of every 1 cycles (i.e. every cycle) to 1 out
  8411. of every 255.
  8412. Special care should be given to the scan that happens in reverse
  8413. to clean up certain actions. This scan ensures that if a Robot
  8414. sends a Robot that has already executed its commands to a label,
  8415. then the target Robot can actually be sent to the proper label.
  8416. Certain commands in the target Robot - specifically, the
  8417. cycle-ending commands that can act across multiple cycles - can
  8418. cause that Robot to execute the new label commands in the very
  8419. same cycle. The global Robot is exempt from this process.
  8420. Commands that can prompt this behavior are:
  8421. <a class="helplink" href="#COMMANDR.HLP____5">/ "string"</a>
  8422. <a class="helplink" href="#COMMANDR.HLP___e1">END</a>
  8423. <a class="helplink" href="#COMMANDR.HLP___g4">GO [dir] #</a>
  8424. <a class="helplink" href="#COMMANDR.HLP___t7">TRY [dir] "label"</a>
  8425. <a class="helplink" href="#COMMANDR.HLP___w1">WAIT #</a>
  8426. For more detailed information about what commands end cycles and
  8427. when, read cycles_and_commands.txt in the additional
  8428. documentation.
  8429. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  8430. <hr /></div>
  8431. <div class="helpfile" id="PARTIAL.HLP">
  8432. <a class="helpanchor" name="PARTIAL.HLP__par"> </a>
  8433. <p class="helpcentered"><span class="f9 ">Partial Character Sets</span></p>
  8434. Partial character sets are smaller than full sets, as the name
  8435. definitely implies, but they only overwrite the characters they
  8436. are told to when loaded. This leaves the rest of the characters
  8437. intact. Heavy animations and changes that keep part of the
  8438. character set intact (such as the alphanumeric characters) are
  8439. two issues best tackled with partial character sets.
  8440. One can save a partial character set in the editor by selecting
  8441. a starting character value (aka "offset") and a length value.
  8442. These fields show up when you export a character set, under the
  8443. filename input.
  8444. To load partial character sets into your current set, you have
  8445. two options. You can firstly load it as you would a normal
  8446. character set; this replaces all characters from the start of
  8447. the target character set until the end of the partial set.
  8448. Secondly, you can load the partial set into a non-0 position of
  8449. the target character set. In the editor, this can be done by
  8450. setting the offset field in the import character dialog, under
  8451. the filename input. The @xxxx prefix allows this in Robotic;
  8452. xxxx is the number (in decimal) of the first character to
  8453. replace in the target character set.
  8454. <a class="helplink" href="#ROBOTICR.HLP__087">Robotic Reference Manual</a>
  8455. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  8456. <hr /></div>
  8457. <div class="helpfile" id="UPDATER.HLP">
  8458. <a class="helpanchor" name="UPDATER.HLP__099"> </a>
  8459. <p class="helpcentered"><span class="f9 ">The MegaZeux Updater</span></p>
  8460. Modern MegaZeux versions on supported platforms, such as
  8461. Windows, have the ability to update MegaZeux from MegaZeux
  8462. itself. The updater can be set to run by pressing either F7 or U
  8463. on any title screen, and can also be configured to check for
  8464. updates every launch in config.txt settings.
  8465. MegaZeux checks the sites listed under the config.txt settings,
  8466. in order. By default, the updater checks the Stable branch of
  8467. MegaZeux, but can be set in config.txt to other branches (such
  8468. as Unstable or Debytecode).
  8469. If a host reports back that your version of MegaZeux is current,
  8470. the next host can be checked to see if they differ.
  8471. If a new version of MegaZeux is detected, MegaZeux offers the
  8472. user these choices:
  8473. -Upgrading to the new version using the "Upgrade" button.
  8474. -Updating the current version to whatever minor "refreshed"
  8475. version may exist (where the version number remains the same,
  8476. but a small issue or two not caught before release is fixed)
  8477. using the "Update Old" button.
  8478. -Cancelling out of the update process with the "Cancel" button.
  8479. No changes are made.
  8480. Once the option is chosen, MegaZeux lists what files will be
  8481. added, changed, or deleted by the pending update. At this point,
  8482. the user can still cancel out of updating with the Escape key.
  8483. Pressing Enter at this point begins the updating process.
  8484. The updater will then attempt to download the necessary files
  8485. for the update. The download indicator lists the current file
  8486. being downloaded, its size in bytes, and current file number
  8487. out of total files to be downloaded. If all files are properly
  8488. downloaded, MegaZeux will apply the update and notify the user
  8489. of a restart. Click "OK" and MegaZeux will restart, fully
  8490. updated.
  8491. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  8492. <hr /></div>
  8493. <div class="helpfile" id="NEWINVER.HLP">
  8494. <a class="helpanchor" name="NEWINVER.HLP__1st"> </a>
  8495. <p class="helpcentered"><span class="f9 ">NEW in MegaZeux!</span></p>
  8496. February 20th, 2019 - MZX 2.91j
  8497. Here's a huge collection of bugfixes and a couple of features
  8498. that needed to be split off from 2.92.
  8499. Features: every release has an HTML copy of the help file now,
  8500. the editor keeps separate board/overlay/vlayer buffers now, and
  8501. anyone who still uses scrolls/sensors can view their info in the
  8502. counter debugger. The global volume settings use an exponential
  8503. curve now, range from 0 to 10, and have updated UI elements.
  8504. Fixes in this release include: the updater won't complain about
  8505. mzx_help.fil anymore, the NDS and 3DS ports have keyboards that
  8506. work again, several bugs that would lead to worlds/saves with
  8507. "Robot # does not exist on board #" errors have been fixed, and
  8508. several crashes have been fixed.
  8509. USERS
  8510. + A complete HTML copy of the MegaZeux help file is now packaged
  8511. with releases for all platforms. It can be found in the docs/
  8512. folder.
  8513. + Nvidia and AMD switchable graphics drivers should now detect
  8514. MegaZeux and MZXRun properly on Windows.
  8515. + The editor now remembers the contents of the buffer when
  8516. switching between board, overlay, and vlayer editing. For
  8517. example, if a robot is selected on the board before switching
  8518. to overlay mode, the robot will still be in the buffer when
  8519. the user switches back to board mode.
  8520. + The editor now remembers the last filename for importing and
  8521. exporting MZM, MZB, CHR, PAL, and PALIDX files.
  8522. + Scrolls and sensors can now be viewed in the counter debugger.
  8523. They can be found by expanding the Board list (when present).
  8524. + Readded "#version 110" directives to all GLSL shaders, fixing
  8525. warnings on some Intel HD drivers. OpenGL ES builds should now
  8526. comment out these directives.
  8527. + Fixed bug where using Modify+Grab on built-ins could clear the
  8528. floor under the built-in.
  8529. + Fixed bug where key repeat wouldn't work for any text field in
  8530. the NDS/3DS/Wii ports. This also affected the robot editor in
  8531. Wii builds.
  8532. + Fixed NDS touch screen support. Touching the screen no longer
  8533. acts like escape and the keyboard properly works again.
  8534. + Fixed a bug where the NDS keyboard would drop keypresses on
  8535. games not running at speed 2.
  8536. + The counter debugger now correctly displays the value of
  8537. local0.
  8538. + Fixed a bug where the counter debugger would not reopen to
  8539. the correct robot local# value.
  8540. + MZX now attempts to retry removal of an old file when updating
  8541. if deletion fails initially. Error messages related to the
  8542. failed deletion of "mzx_help.fil" or "assets/help.fil" are now
  8543. suppressed as they are caused by a bug in older MZX versions.
  8544. + The help file is now closed before the updater restarts MZX.
  8545. + Fixed crash bug that could occur when removing old files after
  8546. an update.
  8547. + Improved manifest validity checks.
  8548. + Fixed board editor crash caused by invalid thing IDs.
  8549. + Player movement key repeat no longer resets when the player is
  8550. locked. It will reset for a direction only when the arrow key
  8551. corresponding to that direction is released. This fixes a bug
  8552. in Brotherhood where the player would move at a fraction of
  8553. the speed they were supposed to while swimming.
  8554. + Added version checking for legacy IF c?? Sprite behavior. In
  8555. versions 2.82b and prior, c?? would make this command ignore
  8556. the provided param and use SPR_NUM instead. This fixes Project
  8557. MoveZig.
  8558. + Fixed spelling error in missile param dialog.
  8559. + Switching boards in the editor now properly translates the new
  8560. board's mod name, fixing cases where board mods would restart
  8561. sometimes.
  8562. + Fixed a bug where the current board mod wouldn't play after
  8563. starting a listening mod, testing, returning to the editor,
  8564. and then disabling the listening mod.
  8565. + Replaced the linear volume setting curve with an exponential
  8566. curve to make lower volumes less loud. The volume settings can
  8567. now be set from 0 to 10 instead of from 1 to 8.
  8568. + The config file setting pc_speaker_on=0 no longer prevents
  8569. turning on PC speaker SFX at runtime.
  8570. + Added temporary workaround for numpad 5 key detection when
  8571. numlock is disabled.
  8572. + "Forest to floor" and "Collect bombs" are properly enabled
  8573. again for new boards by default. This fix doesn't alter config
  8574. settings or saved .editor.cnf defaults.
  8575. + The "Downver. world (MZX)" option in the "Export as" dialog
  8576. is now completely highlighted when selected. (Lancer-X)
  8577. + Starting MegaZeux with "startup_editor=1" no longer loads the
  8578. default palette over the startup world's palette.
  8579. + The move block action and undo/redo operations should now
  8580. preserve the element beneath the player.
  8581. + Fixed crashes caused by using block actions or COPY BLOCK on
  8582. the player while the player is standing on a sensor.
  8583. + Fixed several bugs where editor block actions and the commands
  8584. COPY/COPY BLOCK would not check for the player or clean up
  8585. robots/scrolls/sensors. Worlds/saves saved after these bugs
  8586. occured could display "Robot # does not exist on board"
  8587. errors when loaded.
  8588. + The DUPLICATE SELF x y and DUPLICATE SELF dir commands now
  8589. properly check for the player before attempting to duplicate
  8590. a robot. This fixes a bug where MZX could create saves with
  8591. "Robot # does not exist on board" errors.
  8592. + Fixed a crash that could occur when importing a new board.
  8593. + Fixed a bug where the 3DS onscreen keyboard would send key
  8594. releases instead of key presses.
  8595. + The 3DS onscreen keyboard now returns shifted chars when shift
  8596. is active.
  8597. + Fixed a bug where the libxmp implementation of MOD_ORDER and
  8598. JUMP MOD ORDER could not restart the current order.
  8599. + Fixed a crash with the libxmp implementation of MOD_POSITION
  8600. when providing an out-of-bounds value.
  8601. + Fixed a bug where Ctrl+[key] shortcuts would not work while a
  8602. dialog list element was active on the Wii.
  8603. + Fixed a bug where setting the board mod/charset/palette could
  8604. truncate the first letter of the path on the Wii.
  8605. + "mask_midchars" no longer masks the non-text char 127.
  8606. + The message box title and the command [ now properly display
  8607. the graphic for char 9 instead of a tab.
  8608. + Added newline escaping to robot, counter, and string names in
  8609. the counter debugger to work around formatting bugs.
  8610. DEVELOPERS
  8611. + Added the hlp2html utility, which can be used to convert
  8612. WIPHelp.txt into web and printable HTML files.
  8613. + Updated to latest NDS ARM7 template.
  8614. + Updated SDL2 for Windows release builds to SDL 2.0.9.
  8615. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  8616. December 9th, 2018 - MZX 2.91i
  8617. A small release with a bunch of fixes for bugs introduced mostly
  8618. within the past few versions. Other highlights: joysticks should
  8619. be hot pluggable now and Alt shortcuts now also work with the
  8620. command key in Mac builds.
  8621. USERS
  8622. + MZX now properly detects when joysticks are connected and
  8623. disconnected at runtime for platforms using SDL 2.
  8624. + Fixed bug where the robot editor would open with the cursor at
  8625. the end of the line instead of the start of the line.
  8626. + Fixed a bug where the robot box could display using MZX mode
  8627. but SMZX colors if opened on the first frame SMZX was enabled.
  8628. + The built-in text box title should display correctly again in
  8629. SMZX modes.
  8630. + Fixed regression where keys could trigger wrong "keyN" labels.
  8631. + Alt+F2 can now be used to open the settings dialog.
  8632. + Mac users can now optionally use command in place of alt.
  8633. + Improved editor cursor color selection for SMZX modes 2 and 3.
  8634. DEVELOPERS
  8635. + Fixed make test for SDL 1.2 builds.
  8636. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  8637. November 14th, 2018 - MZX 2.91h
  8638. A minor release primarily focused on improving counter/string
  8639. lookups and fixing bugs in the robot editor and counter debug
  8640. menu.
  8641. USERS
  8642. + auto_glsl correctly switches to glsl on startup now.
  8643. + Fix bug where "(editor)" wouldn't always display in the
  8644. caption when editing.
  8645. + The single line macro dialog now allows the full size of the
  8646. single line macros to be edited. This fixes a crash caused by
  8647. having a macro configured to be longer than the edit box could
  8648. display.
  8649. + Setting a counter to a string no longer duplicates the entire
  8650. string in memory.
  8651. + Fixed faulty BOARD_X and BOARD_Y bounding for values greater
  8652. than the board width or height. Fixes potential crashes with
  8653. BOARD_CHAR, BOARD_COLOR, BOARD_ID, and BOARD_PARAM.
  8654. + The value of SPR_YORDER is now correctly displayed in the
  8655. counter debug menu.
  8656. + Improved the performance of the counter debug search.
  8657. + Fixed cosmetic counter debug menu issue where the the "String"
  8658. tree appeared to be expandable/collapsable when empty.
  8659. + Fixed faulty substring searching algorithm used in the counter
  8660. debug menu search and for breakpoints.
  8661. + Added "Search" and "Cancel" buttons to the counter debug menu
  8662. search so it can be used with the mouse.
  8663. + When testing from the editor, if "__test.mzx" exists MegaZeux
  8664. will now choose a numbered name for this world backup (e.g.
  8665. "__test2.mzx") instead of potentially overwriting work.
  8666. + Fixed bug where six-digit line numbers would display in the
  8667. robot editor incorrectly.
  8668. + Inserting text in the robot editor using the F2/F3/F4/F5
  8669. shortcuts can no longer exceed the line length limit, fixing
  8670. related crashes.
  8671. + Using F5 in the robot editor generates decimal numbers instead
  8672. of hex numbers now.
  8673. + Fixed robot editor bug where pressing delete at the end of a
  8674. line wouldn't join lines unless the current line was empty.
  8675. + Restored the ability to use the F7/F8 cheats outside of the
  8676. editor. This feature was broken in 2.91g. To enable cheats
  8677. outside of the editor, the config option "allow_cheats" must
  8678. now be set to "mzxrun" or 1. The former will enable them for
  8679. MZXRun only (same as from 2.82b to 2.91f) and the latter will
  8680. enable them for both executables (same as the -t flag in DOS
  8681. versions).
  8682. + Fixed bounding bug on the "board_default_width" and
  8683. "board_default_height" config file options.
  8684. + Separated robot editor "Search and Replace" dialog into a
  8685. "Search" dialog and a "Replace" dialog. Both dialogs are
  8686. smaller in size than the original. The order of the elements
  8687. in these dialogs has also been altered to be more user-
  8688. friendly. The hotkey for the new replace dialog is Ctrl+H.
  8689. + Fixed Ctrl+R repeating for the "Replace All" robot editor
  8690. search operation. Previously, it would act like "Replace".
  8691. + Canceling the robot editor search/replace menus no longer
  8692. disables the repeat feature.
  8693. + Searching in the robot editor now properly preserves the case
  8694. of the search string if case sensitive search is disabled.
  8695. + Fixed bug where toggling the robot debugger position wouldn't
  8696. take effect immediately.
  8697. + Exiting the editor with the "startup_editor" config setting
  8698. enabled should no longer inappropriately close MZX.
  8699. + Selecting "tile" for the char editor import mode works again.
  8700. + The bounds for the main editor charset import/export offsets
  8701. and size have been increased to allow for extended charset
  8702. values.
  8703. + Fixed the "KEY?" labels for keys that no longer have a unicode
  8704. representation in SDL2.
  8705. + Fixed SET "$string" "FWRITE#" bug where, if # exceeded the
  8706. length of $string, the output would be clipped to the wrong
  8707. length.
  8708. + The missile color ID char is now correctly set back to its
  8709. default value when a new world is created from the editor.
  8710. DEVELOPERS
  8711. + Cleaned up the counter debug menu code.
  8712. + Switched from uthash to a modified version of khash for
  8713. counter and string lookups. Counters/strings now consume less
  8714. memory and counter/string lookups should perform slightly
  8715. better on most platforms.
  8716. + Replaced toupper/tolower in memcasecmp and substring searching
  8717. with a lookup table-based implementation of tolower.
  8718. + Refactored the following contexts to use the main loop: robot
  8719. editor, intake, thing menu. For compatibility purposes the old
  8720. intake still exists, but all robot editor hacks have been
  8721. removed from it.
  8722. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  8723. October 7th, 2018 - MZX 2.91g
  8724. This bugfix release fixes various minor-to-moderate bugs in
  8725. various areas of MegaZeux. The title/game update code has gone
  8726. through a fairly major overhaul and several parts of MegaZeux
  8727. have been combined to use the same loop. The conversion of
  8728. MegaZeux's interfaces to be compatible with this loop is an
  8729. ongoing process expected to occur over several versions.
  8730. USERS
  8731. + Added "allow_screenshots" config file option. Setting this
  8732. option to 0 will disable the built-in screenshot feature.
  8733. + The F12 key can now be detected by Robotic.
  8734. + Loading saves from the title screen no longer resets TIME.
  8735. + Loading saves from the title screen no longer erroneously
  8736. changes the player restart position.
  8737. + Swapping worlds now sets the correct TIME and player restart
  8738. position values.
  8739. + Fixed a bug where the fade out effect from COLOR FADE OUT
  8740. would be reset after any Robotic dialog.
  8741. + Undo for overlay and vlayer mouse drawing now works properly.
  8742. + Mouse drawing in the editor now draws smooth lines instead of
  8743. lines with gaps.
  8744. + Fixed move block bug when the source and destination both
  8745. overlapped the player.
  8746. + Palette editor component entry now accepts most of the same
  8747. inputs as dialog number boxes.
  8748. + The board name in the caption now updates to reflect the
  8749. current board while testing.
  8750. + Fixed bug where TIME would either decrement normally or not
  8751. decrement at all while the slow time effect was active.
  8752. + Added compatibility for pre-port endgame teleport behavior.
  8753. In DOS versions of MZX, the endgame teleport would disable
  8754. itself after being triggered for the first time and any
  8755. following endgame would instead trigger a game over.
  8756. + Reduced stutter in NDS and 3DS main screen scrolling.
  8757. + Fixed a bug where creating a string MZM would not correctly
  8758. set the string's length for preexisting strings.
  8759. + Fixed a bug where loading robot source code from a string
  8760. wouldn't work correctly with the robot debugger.
  8761. + The help system is now accessible from the main menu and game
  8762. menu.
  8763. + The settings screen is now accessible from the main menu, game
  8764. menu, editor, and palette editor.
  8765. + The shortcut Ctrl+F2 can be used to open the settings screen
  8766. from anywhere the settings screen is accessible. This shortcut
  8767. works even if F2 is used for a different feature and will also
  8768. ignore the value of the F2_MENU counter.
  8769. + Fix a crash that would occur decrypting a world with a
  8770. password exactly 15 chars long.
  8771. + The label for the INPUT STRING command should no longer be
  8772. able to overflow outside of the window.
  8773. + Fix a crash that would occur attempting to open the help file
  8774. from the world decryption confirm dialog.
  8775. + Fix bug where saved layer MZMs and board MZMs without robots
  8776. would have useless extra data at the end of the file.
  8777. + Scroll contents properly display game colors during gameplay.
  8778. + An error message is now displayed for failed board exports.
  8779. + Enabled writing zip data descriptors on the 3DS to decrease
  8780. saving time.
  8781. - The "password protected" error message has been removed as it
  8782. was redundant with the confirmation dialog following it.
  8783. - The "disassemble_extras" and "disassemble_base" options no
  8784. longer affect Robotic output during gameplay. SAVE_ROBOT will
  8785. always output extra words and base 10 numbers regardless of
  8786. user configuration.
  8787. DEVELOPERS
  8788. + Implemented a main event loop to replace the various separate
  8789. event loops scattered around MegaZeux. See core.h and core.c
  8790. for more info.
  8791. + Refactored the following contexts to use the main loop:
  8792. titlescreen, gameplay, main menu, game menu, editor, palette
  8793. editor.
  8794. + When enabled, the debug FPS display will now update from any
  8795. interface using the main loop. If fullscreen mode is active,
  8796. the FPS display will now appear in the top-left corner of the
  8797. screen for any main loop interface aside from the editor.
  8798. + The --disable-screenshots config.sh option can be used to
  8799. disable screenshot support. This allows platforms that don't
  8800. use render_layer.c to stop building and linking it.
  8801. + Cleaned up m_show()/m_hide() overuse.
  8802. + Replaced all uses of "bool" with "boolean" to avoid potential
  8803. C/C++ compatibility issues.
  8804. - Removed most old/unused source code in contrib/unzip, src/old,
  8805. and src/vfs.
  8806. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  8807. September 17th, 2018 - MZX 2.91f
  8808. A bugfix release focusing primarily on renderers, the 3DS and
  8809. Wii ports, and the Makefile build system. Highlights: the 3DS
  8810. port should perform better now, the Wii port's GX renderer has
  8811. been restored, the 'darwin' platform has more Unix-like options
  8812. now, and several crashes have been fixed.
  8813. USERS
  8814. + The config setting 'audio_buffer' can also be specified with
  8815. 'audio_buffer_samples' now. The default value for this setting
  8816. is now 1024 (instead of 4096).
  8817. + Fixed a crash that could occur in the counter debugger.
  8818. + Fixed a crash that occurs when attempting to add a watchpoint
  8819. for robot local counters, loopcount, etc. Using these counters
  8820. as watchpoints will watch the global robot's instances of
  8821. these variables (for other robots, use e.g. r#.local1).
  8822. + Using SMZX_INDICES or LOAD_ROBOT on an unset string no longer
  8823. causes a crash.
  8824. + png2smzx is now properly bundled with Linux builds.
  8825. + Improved the performance of loading partial charsets for the
  8826. glsl, opengl2, and 3DS renderers. Other renderers were not
  8827. affected by this issue.
  8828. + Fix opengl2 unbound sprite regression introduced in 2.91e.
  8829. + The opengl2 renderer now correctly draws unbound sprites
  8830. containing chars with a transparent foreground color.
  8831. + 3DS renderer optimizations. (asie)
  8832. + 3DS screen focusing now mimics the NDS port's behavior. (asie)
  8833. + Fixed bug where games could fail to open files on some
  8834. platforms if the paths contained duplicate slashes. (asie)
  8835. + Added a Wii software layer renderer. This renderer can be
  8836. selected with "video_output = xfb" in the config file.
  8837. + Wii GX renderer optimizations.
  8838. + Added layer rendering support to the GX renderer.
  8839. + The Wii GX renderer now uses the gl_vsync config option to
  8840. toggle vsync. For the Wii, this feature is on by default.
  8841. Disabling it may increase the framerate of some games but may
  8842. also cause other problems.
  8843. + The loading bar on console platforms now redraws the screen
  8844. less often.
  8845. DEVELOPERS
  8846. + GAMESDIR/BINDIR/SHAREDIR now properly apply PREFIX when they
  8847. are not explicitly set by config.sh.
  8848. + LIBDIR is now user-definable like BINDIR et al. Variations
  8849. such as "lib64" currently must be explicitly provided for
  8850. platforms that still use them.
  8851. + Remove src folder from CFLAGS to fix a bug where system
  8852. includes could be mistaken for MegaZeux headers. All includes
  8853. of MegaZeux headers must be done using relative paths now.
  8854. + Fixed include bugs for X11 and Carbon clipboard handlers.
  8855. + Makefile now attempts to respect the prefix when running
  8856. sdl-config, sdl2-config, and libpng-config.
  8857. + Renamed the "darwin" config.sh platform to "darwin-dist".
  8858. + Added "darwin" and "darwin-devel" config.sh platforms. These
  8859. act like Mac OS X versions of the "unix" and "unix-devel"
  8860. options.
  8861. + The darwin-dist build system and instructions are now somewhat
  8862. more clear and robust.
  8863. + Fixed a bug where zlib wouldn't necessarily be linked to
  8864. png2smzx.
  8865. + Renderers will now use render_layer to draw the text_video
  8866. fallback if no render_graph function is present.
  8867. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  8868. September 3rd, 2018 - MZX 2.91e
  8869. Bugfix release fixing some crashes, port bugs, and some other
  8870. significant issues affecting a variety of things.
  8871. USERS
  8872. + Fixed bug where loading a board charset would also clear all
  8873. of the extended charsets.
  8874. + Fixed bug where loading a default charset in the editor would
  8875. also clear all of the extended charsets.
  8876. + Loading a 2.91 world when a renderer with no layer support is
  8877. active no longer triggers an error message.
  8878. + Fixed a memory corruption bug in the non-SDL Wii port caused
  8879. by faulty threading code.
  8880. + Fixed crash that could occur when updating a board undo frame.
  8881. + Fixed crash when changing to a board with overlay disabled in
  8882. overlay editing mode.
  8883. + Fixed a bug where the protected charset could get cleared for
  8884. renderers without layer rendering support.
  8885. + Enabled C99-compliant stdio functions for mingw, fixing at
  8886. least one crash bug and possibly improving performance.
  8887. + The NDS port now attempts to detect argv[0].
  8888. + The 3DS port now attempts to detect argv[0] and otherwise will
  8889. start in /3ds/megazeux instead of /.
  8890. + The 3DS port .3dsx file is now located in /3ds/megazeux.
  8891. + The MOVE PLAYER [dir] and MOVE PLAYER [dir] [label] commands
  8892. now update the commands cycle and commands total values.
  8893. + Fixed a bug where MZX and checkres wouldn't accept some
  8894. DEFLATE-related ZIP flags.
  8895. + checkres no longer crashes on failing to open a resource zip.
  8896. + The window caption now updates correctly when using either of
  8897. the overlay renderers.
  8898. + Update checking will now display an error instead of silently
  8899. hiding the updater when the updater fails to initialize.
  8900. + Fixed an issue where UIs would execute redundant frames.
  8901. + Fixed a bug where string comparison would not order strings of
  8902. different lengths correctly. (GreaseMonkey)
  8903. DEVELOPERS
  8904. + Code style has been cleaned up in numerous files.
  8905. + Moved GLSL shaders from assets/shaders/ to assets/glsl/.
  8906. + Added missing GPL headers to GLSL shaders and added slightly
  8907. better documentation to them.
  8908. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  8909. July 12th, 2018 - MZX 2.91d
  8910. This is a minor bugfix release to get a handful of fixes out
  8911. primarily concerning the updater. The NDS/3DS/PSP/Wii ports now
  8912. include a copy of Caverns of Zeux.
  8913. USERS
  8914. + Added timeouts to updater network operations.
  8915. + Fixed bug where the updater would retry downloads without
  8916. regard to the status code.
  8917. + The updater is now force-disabled for all non-Windows
  8918. platforms in config.sh.
  8919. + Fixed bug where breakpoints could trigger on the wrong line.
  8920. + Amended VOLUME/MOD FADE # # bounding to clamp values in port
  8921. versions. DOS versions will still wrap between 0 and 255.
  8922. + Added DOS compatibility fix for sprN_off.
  8923. + Window caption is now properly updated when loading a world
  8924. from an unedited world in the editor.
  8925. + Fixed bug where ".." would change to the current directory if
  8926. the current path ended in a path separator.
  8927. - Removed undocumented support for "title.cnf", "game.cnf", and
  8928. "editor.cnf" config files, which would have been loaded from
  8929. the same directory as the main config (not to be confused with
  8930. world-specific config files, which are still supported).
  8931. DEVELOPERS
  8932. + The MSYS2 buildscripts have been overhauled to work with the
  8933. new devkitPro pacman repositories.
  8934. + Added config options to select vorbis, tremor, tremor-lowmem,
  8935. or to disable ogg vorbis file support. The 3DS and Wii ports
  8936. now use tremor instead of tremor-lowmem.
  8937. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  8938. March 4th, 2018 - MZX 2.91c
  8939. This release contains an assortment of bugfixes ranging from
  8940. player clone fixes to obscure compatibility patches. A handful
  8941. of updater issues have been fixed (or at least addressed).
  8942. MegaZeux can now automatically check for updates on startup on
  8943. Windows platforms. This behavior can be configured, and by
  8944. default will simply leave a message in the window caption.
  8945. USERS
  8946. + MegaZeux can now automatically run the updater on startup
  8947. on applicable platforms. This can be configured with the
  8948. 'update_auto_check' config file option.
  8949. + Fixed a bug where several .MOD variants stopped working with
  8950. libxmp enabled.
  8951. + Sound effects in subdirectories can now be used in the SFX
  8952. editor.
  8953. + Fixed a bug where checkres would fail on legacy worlds with
  8954. very long custom SFX.
  8955. + Checkres no longer ignores the SFX tables of 2.90+ worlds.
  8956. + Fixed a bug where interpolated expressions containing ternary
  8957. operators could terminate counter names early.
  8958. + Fixed faulty IF ANY compatibility behavior.
  8959. + Fixed a bug where FWRITE functions could change the case of
  8960. user-defined filenames when creating new files on non-Windows
  8961. platforms.
  8962. + SMZX mode 1 palettes are now exported correctly as 16 colors
  8963. instead of as 256 colors.
  8964. + Fixed subtly inconsistent timing in certain built-ins.
  8965. + Fixed bug where wind and transporters could clone the player.
  8966. + MegaZeux now restarts correctly in paths containing spaces
  8967. when the updater is run.
  8968. + Subroutines in pre-port MZX worlds now always return to the
  8969. command after the subroutine was sent.
  8970. + Typed color components now wrap from the maximum value to zero
  8971. like dialog number inputs, and pressing minus will now negate
  8972. the input number.
  8973. + Copying chars in the char editor between regular and SMZX
  8974. screen modes now works properly.
  8975. + Fixed a crash that could occur when placing things on a vlayer
  8976. larger than the current board.
  8977. + Sharks and SpittingTigers with firing rates greater than 4 now
  8978. retain their firing rate when edited.
  8979. + Fixed a bug where world decryption could crash. (Revvy)
  8980. + If the glsl renderer is selected by default, the detection of
  8981. a software opengl driver will result in falling back to
  8982. software. (Lancer-X)
  8983. + Fixed a bug in the GLSL renderer where an additional window is
  8984. created if the OpenGL version is low enough to cause a
  8985. fallback to software. (Lancer-X)
  8986. DEVELOPERS
  8987. + Added .MZX-based unit testing system. Run with "make test".
  8988. See testworlds/README.md for more information.
  8989. + The default renderer is now auto_glsl, which turns into glsl
  8990. if not using a blacklisted opengl driver. (Lancer-X)
  8991. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  8992. January 6, 2018 - MZX 2.91b
  8993. Here's a fairly significant update for MegaZeux 2.91, fixing
  8994. several major Robotic, audio, and editor related bugs, as well
  8995. as issues that mostly affected Linux platforms. Also of note is
  8996. the updated MSVC and Xcode support by Spectere.
  8997. USERS
  8998. + Added the config file option "editor_thing_menu_places". When
  8999. set to 0, selecting an object from the thing menus (F3-F10)
  9000. will place the object in the buffer but not on the board.
  9001. Defaults to 1.
  9002. + Fixed a bug where MZMs could sometimes fail to load in the
  9003. editor.
  9004. + MZMs loaded in the editor now behave correctly when undone.
  9005. + Fixed bug where GOOP_WALK wouldn't always be 0 when loading
  9006. old worlds.
  9007. + Values of GOOP_WALK greater than 1 no longer cause issues.
  9008. + Board time limits greater than 255 are no longer truncated
  9009. when saving worlds/saves.
  9010. + Fixed bug where "robot not found" errors could result from
  9011. using backspace on robots in the editor.
  9012. + Fixed backwards string inequality evaluation.
  9013. + String inequality compares are now endian-safe.
  9014. + Fixed a bug where certain mods (e.g. FR_TOWER.MOD, Neve.s3m)
  9015. could repeat to the wrong order after reaching the end.
  9016. + Fixed a bug where certain .it channels could partially ignore
  9017. the volume command.
  9018. + Setting mod_position in libxmp now works for positions in the
  9019. middle of orders (NoSuck).
  9020. DEVELOPERS
  9021. + Updated MSVC for Visual Studio 2017. (Spectere)
  9022. + Added xcode support. (Spectere)
  9023. + "make clean" now deletes ccv. (pgimeno)
  9024. + Fixed creeping CRLF usage. (Lachesis, pgimeno, Spectere)
  9025. + Fixed a bug where the MSYS2 build scripts could inadvertently
  9026. include non-portable SDL2 binaries in Windows builds.
  9027. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  9028. November 22, 2017 - MZX 2.91
  9029. This release introduces mostly new editor features, but also a
  9030. a few Robotic features to note. It also fixes over 30 bugs.
  9031. MegaZeux now features a palette editor for SMZX modes 2 and 3,
  9032. and worlds can be saved and loaded in SMZX mode. The char editor
  9033. has been changed to allow preview palettes (mostly to aid with
  9034. SMZX editing), and can now access the extended character sets.
  9035. The new vlayer editor allows the vlayer to be edited directly.
  9036. On the Robotic side of things, LOAD_COUNTERS actually works now,
  9037. SMZX mode 3 indices can be loaded from a file, the message line
  9038. can be configured to use normal MZX mode in SMZX modes, and new
  9039. string features such as simple wildcard matching and negative
  9040. offsets have been added. String support has been improved to
  9041. disallow invalid or nonsense string splices that previously had
  9042. undefined behavior.
  9043. Additionally, asie's new Nintendo 3DS port has been merged into
  9044. MZX, and optional SDL support has been added for the Wii.
  9045. FEATURES
  9046. + Added SMZX_INDICES special counter to load SMZX indices. This
  9047. counter works with either a filename or a string, e.g.
  9048. set "file.palidx" "SMZX_INDICES", and will do nothing outside
  9049. of mode 3.
  9050. + Added MOD_LENGTH counter. The value of this counter is length
  9051. of the current playing music in rows for modules, or in
  9052. samples for PCM audio.
  9053. + Added MAX_SAMPLES counter. When set, MegaZeux will limit the
  9054. maximum number of samples that will play simultaneously. Set
  9055. to -1 to disable the sample limit.
  9056. + Added 'max_simultaneous_samples' config file option. This
  9057. behaves the same as the MAX_SAMPLES counter, but applies
  9058. globally.
  9059. + Added SMZX_MESSAGE counter. When set to 0 with SMZX active,
  9060. messages will display in normal MZX mode instead of SMZX
  9061. using the first 16 colors of the SMZX palette.
  9062. + Added 'random_seed#' counters to read and write the random
  9063. seed, 32 bits at a time (random_seed0 controls the low 32 bits
  9064. and random_seed1 controls the high 32 bits. (Lancer-X)
  9065. + Added a case-sensitive string equality operator:
  9066. IF "$string" === "ABC" then "label".
  9067. + Added wildcard-matching string equality operators:
  9068. IF "$string" ?= "a?%" then "label"
  9069. IF "$string" ?== "a?%" then "label" (case-sensitive).
  9070. The character '?' will match exactly one of any character in
  9071. $string, and '%' will match any number of any character in
  9072. $string (including no characters).
  9073. + Added negative indexing for strings, e.g. SET "$string.-X" 32.
  9074. This manipulates the string at the Xth character starting from
  9075. the end of the string (with -1 for the final character).
  9076. + Added negative offsets for strings, e.g. SET "$string+-X" "a".
  9077. + Added multiple character indexing for strings. When a length
  9078. is provided with a string index, e.g. SET "$string.X#Y" 12345,
  9079. the characters at positions X, X+1, ..., X+Y-1 will be treated
  9080. as a single 8*Y bit number. This works for values of Y between
  9081. 1 and 4, with 4 characters providing the same functionality as
  9082. a counter.
  9083. + The palette editor and character editor are now accessible
  9084. while testing. Press Alt+E or Alt+C respectively to access
  9085. them from the counter debugger.
  9086. + Extended the palette editor to SMZX modes 2 and 3. The updated
  9087. palette editor allows the editing of all 256 SMZX mode 2/3
  9088. colors and editing color indices for SMZX 3.
  9089. + Component numbers can now be typed in the palette editor by
  9090. clicking the component name or its number, e.g. clicking "Red"
  9091. allows you to type a red value.
  9092. + SMZX indices can now be imported/exported while editing in
  9093. mode 3 using import/export palette.
  9094. + Added a new vlayer editor. In the world editor, press Alt+V to
  9095. switch to the vlayer editor. The vlayer is something like an
  9096. invisible global overlay that can be used to store and
  9097. retrieve graphical data through Robotic. See the editor help
  9098. and the Robotic reference manual for more details.
  9099. + Added color selection to the character editor. Press C to
  9100. choose a color to preview and edit chars with, and press Alt+C
  9101. to revert back to the default grey.
  9102. + Added extended charset support to the char editor. Extended
  9103. charsets can be selected during char selection. Note that in
  9104. gameplay these chars can be accessed only by unbound sprites.
  9105. + Selected blocks of chars with a height greater than one
  9106. (before selecting a subdivision) are now properly supported.
  9107. Using -/+ with these selections will move in a tiled manner,
  9108. with no overlap between chars in "tiles". Charsets can also be
  9109. exported/imported using this tiling behavior.
  9110. + The -/+ keys now behave the same in the char selection screen
  9111. as they do in the char editor.
  9112. + The character editor help now covers several shortcuts that
  9113. were previously missing (Alt+B, Shift+Arrows, etc...).
  9114. + The undo/redo shortcuts in the character editor are now Ctrl+Z
  9115. for undo and Ctrl+Y for redo.
  9116. + Added undo/redo functionality to the world editor. Use Ctrl+Z
  9117. to undo changes to the board/overlay/vlayer and Ctrl+Y to
  9118. redo.
  9119. + The default editor undo history stack size has been extended
  9120. to 100 levels.
  9121. + The editor will now prompt the user to create a new starting
  9122. board when opened. If a new board is created, the global first
  9123. board will be set to the new board and the title board will be
  9124. renamed.
  9125. + Saved positions now have confirmation dialogs. Saved positions
  9126. are saved to/loaded from the editor.cnf file for each world.
  9127. + Pressing Enter/Return on the overlay (and vlayer) now acts the
  9128. same as on the board, changing both the buffer and the current
  9129. layer being edited.
  9130. + Pressing P on the overlay (and vlayer) now acts the same as on
  9131. the board, changing the character in the buffer but NOT on the
  9132. current layer. This is equivalent to the original overlay
  9133. behavior for Enter.
  9134. + Block tiling movement (Ctrl+Arrows) now works with most block
  9135. actions, and does not require an initial block placement to
  9136. activate.
  9137. + Restoring its DOS functionality, Alt+D now toggles the default
  9138. colors of built-in types in the editor. When disabled,
  9139. built-ins placed from thing menus will use the buffer color
  9140. instead of their default colors, and a red dot will appear on
  9141. the right side of the status bar.
  9142. + Color selection now supports typing in the hex value of a
  9143. color/subpalette to select the given color/subpalette. For
  9144. example, typing "4c" will select background color 4 and
  9145. foreground color 12.
  9146. + Readded the downver utility.
  9147. - Removed the undocumented Shift+F7 shortcut in the editor. This
  9148. shortcut was redundant with F11.
  9149. FIXES
  9150. + Fixed a bug that would cause Linux binaries to fail to find
  9151. most resources.
  9152. + Fixed a bug where loading a save from the titlescreen, exiting
  9153. gameplay to a world that doesn't exist, and then loading a
  9154. second save would corrupt the counter and string hash tables.
  9155. + Fixed crash that would occur when loading a saved position on
  9156. the same board referring to out-of-bounds coordinates.
  9157. + Fixed a freeze that could occur opening the counter debugger
  9158. to an empty list or searching for a counter in an empty list.
  9159. + LOAD_COUNTERS now works as intended.
  9160. + Fixed a bug where key repeat would be prematurely terminated
  9161. when releasing a key while holding another key.
  9162. + Attempting to open the robot validator with no errors will no
  9163. longer crash MegaZeux.
  9164. + Backspace now mirrors delete in overlay mode instead of
  9165. affecting the board.
  9166. + Moving an overlay block partially out of bounds in the editor
  9167. will now correctly clear the block's original position.
  9168. + The color selector will now correctly display SMZX palettes in
  9169. SMZX mode instead of the default char 254.
  9170. + Fixed bug where the mouse cursor would vanish after using the
  9171. robot debugger configuration dialog in the editor.
  9172. + Fixed a bug where the counter debugger could sometimes display
  9173. behind the robot debugger after exiting the counter debugger.
  9174. + Undo in the char editor now works correctly with the mouse.
  9175. + The char editor no longer forces the screen to SMZX mode 1
  9176. when editing in SMZX modes 2 or 3.
  9177. + Fixed screen corruption bug when resizing the char editor in
  9178. SMZX modes.
  9179. + Fixed a bug where multichar editing wouldn't correctly wrap to
  9180. the start of the charset.
  9181. + The editing area outside of the current board is now correctly
  9182. drawn when SMZX is enabled.
  9183. + The viewport is now correctly drawn when SMZX is enabled and
  9184. the UI or unbound sprites are active.
  9185. + The editor bar no longer appears while SMZX is enabled in view
  9186. mode.
  9187. + Messages are now drawn correctly in SMZX mode.
  9188. + Fixed bug where centering the viewport could change the width
  9189. and height of the viewport.
  9190. + Unbound sprites are now clipped correctly against the viewport
  9191. when the viewport origin is not 0,0. (Lancer-X)
  9192. + The VLAYER_SIZE counter now clears new vlayer area added when
  9193. it is increased. This applies only to 2.91+ worlds.
  9194. + The VLAYER_WIDTH and VLAYER_HEIGHT counters now preserve data
  9195. on the vlayer when set. This applies only to 2.91+ worlds.
  9196. + Fixed several bugs with string length and offset parsing that
  9197. would allow invalid string accesses to work in certain cases.
  9198. + COPY BLOCK $string now works correctly with string splices.
  9199. + Fixed a bug where saving and loading 2.90X files wouldn't work
  9200. on the Nintendo DS.
  9201. + Fixed a bug where mouse clicks would carry through from the UI
  9202. into games.
  9203. + Invalid gl_scaling_shader values should no longer appear as
  9204. the current loaded scaler.
  9205. + MegaZeux now falls back to the default scaling shader when a
  9206. selected scaling shader fails to compile.
  9207. + Blank sprite chars are now drawn when ccheck is 3. (Lancer-X)
  9208. + The sprite color is used with ccheck 3 collisions. (Lancer-X)
  9209. + When spr_yorder is enabled, sprites with the same (sprN_y +
  9210. sprN_cy) value are now consistently ordered by their sprite
  9211. numbers.
  9212. + The collision rectangles of ccheck 3 sprites now constrained
  9213. to the sprite dimensions (Lancer-X).
  9214. + MZX no longer crashes when a line of length 512 characters or
  9215. longer is pasted into the robot editor.
  9216. + Fixed a crash bug when trying to swap a sprite with an
  9217. invalid sprite index.
  9218. DEVELOPERS
  9219. + Added Nintendo 3DS port. (asiekierka)
  9220. + Added "make uninstall" option to the Linux makefile.
  9221. + Added devkitPro portlibs paths to the NDS and Wii Makefiles.
  9222. - Removed the depackers and non-MegaZeux formats from libxmp.
  9223. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  9224. September 4, 2017 - MZX 2.90d
  9225. Here's another bugfix release. This is mostly assorted small
  9226. fixes, but there are also a couple of major fixes here: first,
  9227. the ternary operator now works correctly when nested both with
  9228. and without expressions, and second, sprN_setview does not break
  9229. in conjunction with certain unbound sprites. Additionally, SAMs
  9230. will not be converted to WAV files anymore (and are now natively
  9231. supported) and the robot debugger config is accessible from the
  9232. editor.
  9233. FEATURES
  9234. + The current MegaZeux version is now visible from the enter
  9235. menu on the title screen. This is to assist identifying the
  9236. version on platforms that don't respect window title changes
  9237. or have no window border.
  9238. + Updated checkres.bat and checkres documentation.
  9239. + The robot debugger configuration screen is now accessible from
  9240. the editor via Alt+F11.
  9241. + Removed SAM to WAV converter. MegaZeux now has native SAM
  9242. support. (asiekierka)
  9243. + Added crt-wave.frag, updated crt.frag. (astral)
  9244. FIXES
  9245. + Fixed a bug where MegaZeux would crash when editing a robot
  9246. with an invalid IF command operator.
  9247. + Fixed a bug where the ternary operator would fail to find the
  9248. correct colon when the middle term contained a second ternary
  9249. operator in a nested expression.
  9250. + Nested ternary operators should now behave as expected.
  9251. + Fixed a bug where the built-in cursor would disappear after
  9252. exiting testing with EXIT_GAME.
  9253. + Fixed a bug where the listening mod would not restart after
  9254. exiting testing.
  9255. + Fixed a bug where the robot debugger would not wrap long lines
  9256. of Robotic code correctly.
  9257. + Attempting to save a world in a write-protected location
  9258. correctly displays an error message again.
  9259. + Fixed a bug where key repeat would not work when scrolling
  9260. through the counter debugger tree list.
  9261. + checkres will no longer report empty filenames as dependencies
  9262. e.g. SET "" TO "FWRITE_OPEN".
  9263. + The -q flag in checkres will now correctly output filenames
  9264. instead of nothing.
  9265. + Fixed a bug where sprN_setview would scroll the viewport to
  9266. the wrong side of the screen if the sprite is unbound and is
  9267. close to the top or left edge of the board. (Lancer-X)
  9268. DEVELOPERS
  9269. + Fixed PSP and NDS ports. (asiekierka)
  9270. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  9271. July 25, 2017 - MZX 2.90c
  9272. This is a small fix release mostly cleaning up issues from the
  9273. previous release.
  9274. Notable fixes include a crash on certain instances of string
  9275. interpolation into counters/labels/text. Playing mods as sound
  9276. effects works again, and the audio_sample_rate config file
  9277. option now works correctly.
  9278. This release also includes support for loading save files from
  9279. MegaZeux 2.84X and experimental editor behavior for handling
  9280. board charsets and palettes.
  9281. FEATURES
  9282. + Save files from 2.84X worlds can now be loaded.
  9283. + The editor can be configured to automatically load board
  9284. charsets and palettes now. Use the 'editor_load_board_assets'
  9285. config file option to enable this behavior. This behavior is
  9286. disabled by default. Note that this will OVERWRITE THE CURRENT
  9287. WORLD CHARSET AND PALETTE and your changes will NOT be saved
  9288. automatically.
  9289. + GLSL is now the default renderer. (Lancer-X)
  9290. FIXES
  9291. + Fixed bug where --disable-modular builds would fail to link.
  9292. + Fixed bug with libxmp integration where mods could not be
  9293. played as sound effects.
  9294. + Fixed bug with libxmp integration where MZX would assume
  9295. audio_sample_rate was 44100, causing mods to play at incorrect
  9296. pitches with other rates.
  9297. + Fixed bug where editor config file options would be ignored at
  9298. the command line.
  9299. + Fixed bug where string interpolation into a label/counter name
  9300. could cause MZX to crash with very long strings.
  9301. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  9302. July 16, 2017 - MZX 2.90b
  9303. It's been two weeks, so here's a bugfix release for MZX 2.90.
  9304. There isn't a whole lot that's new to talk about.
  9305. Firstly, the palette editor has gone through an overhaul. This
  9306. is mostly internal preparation for an eventual SMZX palette
  9307. editor, but the new features include the partial restoration of
  9308. mouse input (which was removed in 2.80X), the addition of color
  9309. sliders, the ability to hide the palette editor help, and two
  9310. new colorspaces (HSL and CIELAB) to aid in the selection of
  9311. palette colors.
  9312. Next, the robot debugger introduced in 2.90 has new features.
  9313. You can now set "watchpoints" to watch the status of particular
  9314. variables, and you can send labels/goto from the robot debugger.
  9315. The robot debugger config screen has been visually improved, and
  9316. line number breakpoints can be defined. Another notable feature
  9317. is that KEY_PRESSED and KEY_CODE values are now displayed in the
  9318. debug window during gameplay.
  9319. libxmp is now the default sound engine for modules, fixing a
  9320. longstanding bug where certain S3Ms would have muted channels.
  9321. GDM modules are now supported by MZX again. If you notice any
  9322. inaccuracies with mod files, please report them to the tracker.
  9323. Fixed bugs include a major overhaul of the glsl shaders for
  9324. compatibility with almost any system, various sprite, text box,
  9325. and input bugs, a crash fix when MZMs were saved from out of
  9326. bounds board locations, and a bug where opening worlds or
  9327. testing from the editor could cause MegaZeux to exit.
  9328. FEATURES
  9329. + The "shaders/extra" folder is now "shaders/scalers". The
  9330. default vertex shader is still located in the shaders folder.
  9331. + The default scaling shader can now be set in the config file
  9332. using the gl_scaling_shader option. If not defined, MegaZeux
  9333. will load assets/shaders/scalers/semisoft.frag.
  9334. + The robot debugger now supports monitoring the values of
  9335. counters and strings. Use the config menu/breakpoint editor to
  9336. add watchpoints; when the debugger detects a change in a
  9337. watchpoint counter/string AFTER a command has been executed,
  9338. the robot debugger will open.
  9339. + The robot debugger can now send robots labels. Use 'G' or
  9340. select 'Goto' in the robot debugger to use this feature. The
  9341. name and label inputs support expression parsing and string/
  9342. counter interpolation.
  9343. + The robot debugger can now use line numbers in breakpoints.
  9344. + The palette editor help can now be hidden with Alt+H. The
  9345. default behavior for this can be set in the config file. The
  9346. palette editor help is visible by default.
  9347. + The palette editor's mouse functionality has been improved.
  9348. Behavior when clicking the palette has been restored, and
  9349. component sliders have been added.
  9350. + The palette editor now supports alternate color spaces.
  9351. + The debug window now displays the last key_code (green) and
  9352. key_pressed (magenta) values detected during gameplay. These
  9353. values are located in the bottom right corner of the window.
  9354. + The default fullscreen resolution for scalable renderers is
  9355. now 1280,720. The default fullscreen resolution for 'software'
  9356. is still 640,480. The default aspect ratio is now 'modern'.
  9357. + The checkres utility has been updated to support 2.90X worlds,
  9358. worlds in subdirectories of zip archives, multiple input files
  9359. to test, and the ability to specify secondary directories and
  9360. zips to search (e.g. for games with separate music zips).
  9361. BUGFIXES
  9362. + Fixed a bug where certain "keyN" labels, such as "key$", would
  9363. not work correctly.
  9364. + Integer comparisons between numbers greater than 2^31-1 apart
  9365. now work correctly. (Lancer-X)
  9366. + The palette editor now displays the SMZX mode 1 palette
  9367. correctly.
  9368. + Sprite collisions now correctly ignore the sprite's visual
  9369. width and height.
  9370. + Blank lines are no longer skipped when copy-pasting text into
  9371. the robot editor. (Lancer-X)
  9372. + Fixed a bug where key presses in dialogs could be detected in
  9373. games, and keypresses could still carry between other dialogs.
  9374. + [ message boxes now use the same screen mode as everything
  9375. else. Same with scrolls. (Lancer-X)
  9376. + spr#_setview now works with unbound sprites. It's pretty nasty
  9377. as the viewport can't scroll with pixel precision, but the new
  9378. behavior should still be better than the old. (Lancer-X)
  9379. + Fixed a bug affecting certain Intel HD Graphics cards and the
  9380. GLSL renderer that appears to have been around since that
  9381. renderer was first introduced. (Lancer-X)
  9382. + Fixed a bug where the numeric numpad keys were inappropriately
  9383. translated to regular keys based on numlock when they were
  9384. read from KEY_PRESSED. This behavior is now locked to worlds
  9385. from 2.82X through 2.84X.
  9386. + Fixed a bug where warping the mouse on one axis would snap the
  9387. mouse to the nearest pixel on the other axis, causing problems
  9388. for upscaled windows.
  9389. + Fixed a bug where mouse control would not respect video_ratio
  9390. settings aside from "stretch".
  9391. * Fixed a bug where MZX would attempt to load certain invalid
  9392. worlds that should have been caught by validation.
  9393. + Copy block to MZM no longer crashes when the MZM is partially
  9394. overlapping the board edge. (Lancer-X)
  9395. + Fixed bug where MegaZeux would sometimes exit immediately on
  9396. loading a game or would immediately exit testing.
  9397. DEVELOPERS
  9398. + libxmp is now the default module sound engine. Use "make xmp"
  9399. to make and install libxmp if it is not available on your
  9400. platform.
  9401. + Mac OS X portability improved. (Spectere and Why-Fi)
  9402. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  9403. June 29, 2017 - MZX 2.90
  9404. Hey, it's been a while! Didn't mean to keep everyone waiting.
  9405. To make up for it as much as possible, we've prepared an extra
  9406. special release of MegaZeux here for you. Yeah, you!
  9407. I don't even know where to start with this release, as there's
  9408. simply a lot to talk about. MZX's world formats and rendering
  9409. architecture have gone through major overhauls, and a multitude
  9410. of bugs have been fixed (60+). Particularly the MZX UI graphical
  9411. glitch that occurred when an SMZX mode was enabled.
  9412. Some notable new features are unbound sprites (MZX's new native
  9413. pixel precision support), loading character sets/palettes/source
  9414. code/MZMs from strings, saving MZMs to strings, a new Robotic
  9415. debugger, the SAVE_COUNTERS and LOAD_COUNTERS function counters,
  9416. options to help create standalone game releases, the ability to
  9417. assign character sets/palettes to a board to load on entry, and
  9418. resetting boards on entry. The size limit of Robotic bytecode
  9419. has been increased to 2MB.
  9420. Other important mentions: MegaZeux has been updated to use
  9421. SDL 2.0 and libmodplug 0.8.9.0. The SAVE_WORLD function counter
  9422. has been permanently removed. The downver utility has been
  9423. temporarily discontinued, as adapting it to this release would
  9424. have been a considerable amount of work. Instead, there is a new
  9425. option in the Export menu in the editor to export a 2.84 world.
  9426. Enjoy, and try not to get overwhelmed by all of the new stuff!
  9427. FEATURES
  9428. + Added a built-in robot debugger. See the Debug Mode section of
  9429. the help file for details.
  9430. + Added the COMMANDS_STOP special counter to MegaZeux. When a
  9431. robot executes a number of commands exceeding this value while
  9432. testing, the robot debugger will be enabled automatically and
  9433. will open. During regular gameplay, it will be ignored. The
  9434. default value of COMMANDS_STOP is 2000000.
  9435. + The counter debugger now remembers its previous position after
  9436. being reopened.
  9437. + Added commands_cycle and commands_total variables to the Robot
  9438. section of the counter debugger. See the Debug Mode section of
  9439. the help file for details.
  9440. + Certain types specified as 255 on the char ID table are now
  9441. treated as Custom* types when placed and selected in the
  9442. editor. If you switched a type to char ID 255 in a game that
  9443. already had that type, the parameters will not be changed
  9444. (and the types will still be char 0 if they were already
  9445. placed in the world). When making a type a Custom* type from
  9446. the global chars dialog, it will appear visually different in
  9447. the list and in the character selection window, and also ask
  9448. for confirmation.
  9449. + The enter menu can be closed with escape now.
  9450. + In the editor, the Backspace key now removes the top layer
  9451. and brings the under layer to the top, as a compliment to Del.
  9452. This does not affect the text entry behavior.
  9453. + Seeking in the String section of the counter debugger will now
  9454. ignore the $ prefix.
  9455. + Tentative joypad POV hat support added: joyNhat = U, D, L, R
  9456. + The BUTTONS counter has been extended to support the mouse
  9457. wheel and X1/X2 buttons.
  9458. + Strings can now be used in the LOAD PALETTE "file" command in
  9459. place of a file name, i.e. LOAD PALETTE "$string+10".
  9460. + Strings can now be used in the LOAD CHAR SET "file" command in
  9461. place of a file name, i.e. LOAD CHAR SET "@240$chars".
  9462. + Strings can now be used for the special counter LOAD_ROBOT in
  9463. place of a file name, i.e. set "$str" "LOAD_ROBOT".
  9464. + Strings can now be used for saving and loading MZMs in place
  9465. of a file name, i.e. put "str" image_file... (Lancer-X)
  9466. + Added ESCAPE_MENU counter. When set to 0, this counter will
  9467. prevent pressing escape from opening the exit gameplay menu.
  9468. This will not affect any other escape menus in MZX, and the
  9469. exit gameplay menu can still be opened by other means, such as
  9470. ALT+F4, CTRL+C, the window close button, etc.
  9471. + Added EXIT_GAME function counter. When set to anything but 0,
  9472. this will cause MegaZeux to exit to the title screen. This has
  9473. no effect on the title screen.
  9474. + Added the ternary operator (?:) to expressions. If the value
  9475. to the left of ? is not equal to zero, the expression between
  9476. the ? and the : will be evaluated. If the value to the left of
  9477. ? is equal to zero, the expression to the right of : will be
  9478. evaluated.
  9479. + Added SAVE_COUNTERS and LOAD_COUNTERS special counters. These
  9480. will save and load files containing every counter and string
  9481. from the world they're used in, respectively. These files are
  9482. not version checked, and may be used like save files.
  9483. + Robots now keep their robot IDs after reloading saves.
  9484. + Added standalone mode. The config parameters standalone_mode
  9485. and no_titlescreen can now be used (from MZXRun only) to
  9486. create standalone versions of MZX with the ability to fully
  9487. customise the player's experience. See config.txt for details.
  9488. (Lancer-X)
  9489. + The minimal help bar now displays robot memory and the current
  9490. board mod when contextually appropriate.
  9491. + The minimal help options for the board and robot editors are
  9492. now enabled by default.
  9493. + Shaders can now be changed from the F2 menu when using the
  9494. GLSL renderer. The user can select a fragment shader from the
  9495. assets/shaders/extra/ directory. If a matching vertex shader
  9496. exists, it will be loaded alongside the fragment shader.
  9497. Otherwise, MZX will fall back to the default vertex shader.
  9498. + On Linux and Mac OS X the configuration file will be copied
  9499. into the user's home directory and given the name
  9500. .megazeux-config if it is not already present. This config
  9501. file will then be used instead of the global one. (Lancer-X)
  9502. + Added unbound sprites. Sprites can be unbound from the grid by
  9503. setting spr#_unbound to 1. Their coordinates will now refer to
  9504. the sprite's location in pixels, not tiles. spr#_width,
  9505. height, refx and refy still refer to chars; however, spr#_x,
  9506. y, cx, cy, cwidth and cheight are all in pixels. Unbound
  9507. sprites do not work with all renderers; currently, out of the
  9508. renderers available on the PC platforms, the overlay2 renderer
  9509. lacks this functionality. (Lancer-X)
  9510. + Unbound sprites do not let char 32 or blank characters (when
  9511. in ccheck 2) through like regular sprites do. Instead, set
  9512. spr#_tcol to a color that will be transparent when the unbound
  9513. sprite is drawn. (Lancer-X)
  9514. + Unbound sprites can make use of additional hidden charsets.
  9515. There are an additional 14 charsets beyond the default that
  9516. can be modified through using load char set or char edit.
  9517. (e.g. load char set "@256charset.chr")
  9518. A sprite can be set to refer to these later chars with the
  9519. spr#_offset counter. The offset value is then added to each
  9520. char in the sprite. You can use this to refer to higher char
  9521. sets.
  9522. (e.g. set "spr0_offset" 256)
  9523. Offset values can also be set to locations within a char set.
  9524. (Lancer-X)
  9525. + To allow you to access the extended charsets, the option to
  9526. load char set now takes up to 4 digits, rather than merely 3.
  9527. The + option still only allows 2 hex digits. (Lancer-X)
  9528. + The colors used by tiles of a given color # in SMZX mode 3
  9529. can now be rebound using the "smzx_idx#,#" counters.
  9530. (e.g. set "smzx_idx7,0" 32)
  9531. Now if you put down a c07 tile, all 00 pixels will refer to
  9532. color 32 (as opposed to color 0 in SMZX mode 2 or color 7 in
  9533. SMZX mode 1). These values are reset whenever the SMZX mode is
  9534. changed. Once again, this is only available to renderers that
  9535. support unbound sprites. (Lancer-X)
  9536. + Edited worlds now retain their world version until resaved.
  9537. Before, they would lose their world version after testing.
  9538. + Added world version display to the debug window.
  9539. + Added GOOP_WALK counter for robots.
  9540. + Added "Reset board on entry" parameter for boards. When set,
  9541. the board will reset to its original state when the board is
  9542. entered during gameplay. This setting can be saved as a board
  9543. default.
  9544. + Added "Load charset on entry" parameter for boards. When set,
  9545. MegaZeux will load the selected charset file when the board
  9546. is entered during gameplay. This setting can be saved as a
  9547. board default.
  9548. + Added "Load palette on entry" parameter for boards. When set,
  9549. MegaZeux will load the selected palette file when the board
  9550. is entered during gameplay. This setting can be saved as a
  9551. board default.
  9552. + Maximum robot size has been increased from 64kb to 2mb.
  9553. (Lancer-X)
  9554. + Debytecode: the LOAD_SOURCE_FILE special counter can now be
  9555. used to load and compile a robot program from source code.
  9556. This can be used with either a file or a string as input.
  9557. + Debytecode: the robot editor's import robot menu now supports
  9558. loading legacy source code.
  9559. BUGFIXES
  9560. + Fixed crash bug when using ALT+Z (Clear Board).
  9561. + Fixed crash bug when attempting to view the help file in the
  9562. updater.
  9563. + Fixed crash bug when attempting to use SMZX_R/G/B with out-of-
  9564. range indexes.
  9565. + Fixed crash on exit when the config file did not explicitly
  9566. specify update hosts.
  9567. + Fixed memory leak involving bounds-breaking FREADn calls.
  9568. + Fixed counter debugger issue where counters and strings
  9569. starting with chars over 'Z' would cause everything in their
  9570. section to be placed into the '#' list.
  9571. + Dialog window labels can not be put into focus by clicking
  9572. them with the mouse anymore.
  9573. + Dialog windows closed by pressing escape will now close only
  9574. on a new press instead of whenever the key is held.
  9575. + Load (F4)/quickload (F10) on invalid save files in-game leaves
  9576. the current game running instead of exiting to the titlescreen
  9577. or editor.
  9578. + Fixed issue where counter debugger would display wrong values
  9579. for the robot LOCAL counters.
  9580. + Fixed robot editor issue where global robot coords would be
  9581. reloaded as 65535.
  9582. + Fixed issue where board defaults would be reset after leaving
  9583. testing until the world was manually reloaded.
  9584. + Fixed issue where the Board Info dialog would not close when
  9585. 'Cancel' was selected.
  9586. + Fixed bug where chars 254 and 255 would not be reverted back
  9587. to their defaults via F4/F5.
  9588. + Fixed bug where player would move onto goop when walking into
  9589. enemys on top of goop.
  9590. + Fixed bug where 'enter' would be detected in loaded save files
  9591. when loading from a title screen.
  9592. + Fixed issue where MZX was using the world file version instead
  9593. of the internal MZX version when saving MZMs and determining
  9594. whether it could load MZMs both within the editor and in game.
  9595. + Changed the caption behavior in the world editor as to refresh
  9596. only when board values are synchronized.
  9597. + Fixed bug where, when exiting gameplay, the world would keep
  9598. running on the title screen if MegaZeux lost read access to
  9599. the world file.
  9600. + Fixed minor bug where trying to load a nonexistant mod would
  9601. change MOD_NAME's output while the previous mod still played.
  9602. + Fixed a Windows-only bug, where attempting to load a Robotic
  9603. file in the Robot Editor or with LOAD_ROBOT would not load the
  9604. entire file if the file contained 0x1A (char 26).
  9605. + Fixed a bug where the lazer animation would fail to complete.
  9606. + Fixed bug where the VOLUME # and MOD FADE # # inputs could go
  9607. out of range, resulting in ear-piercing white noise. Inputs
  9608. now wrap between 0 and 255 for compatibility reasons.
  9609. + Fixed bug where certain unicode values could crash MZX in the
  9610. character selection dialog.
  9611. + Fixed bug where : "keyN" would not work on the Pandora.
  9612. + Fixed a bug where FREAD could create a string larger than the
  9613. maximum string size.
  9614. + In the sprite section of the counter debugger, the spr_clistN
  9615. values were incorrectly labelled as "spr_collisionN". Fixed.
  9616. + Fixed counter debugger crash when selecting certain strings
  9617. containing escaped values.
  9618. + Added compatibility for the cycle-ending SHOOT, SHOOTMISSILE,
  9619. SHOOTSEEKER, and SPITFIRE commands from MegaZeux 2.83.
  9620. + Fixed crash bug when attempting to use file counters with
  9621. paths equal to or longer than 512 chars in length. MegaZeux
  9622. will now ignore such paths.
  9623. + Fixed bug where MZX would crash with out-of-bounds joystick
  9624. key mappings.
  9625. + Fixed a bug where robots could not push the SliderNS type to
  9626. the south.
  9627. + Fixed a bug where a robot using #return or #top multiple times
  9628. within a single command could cause a crash.
  9629. + Fixed a port regression where IF ANY would continue to iterate
  9630. over the board after finding a match, potentially triggering
  9631. multiple subroutines, #return, or #top labels.
  9632. + Fixed a bug where MZM error messages could repeat indefinitely
  9633. and lock up MZX.
  9634. + Fixed a bug where the (#)PUSHED label would not be sent to the
  9635. first object in a row of pushed objects if that object was a
  9636. robot.
  9637. + Fixed support for PPC Linux builds. (Insidious)
  9638. + Fixed a bug where a robot sent a subroutine would restart the
  9639. command it was executing upon #return if the command was a
  9640. multi-cycle command. This fix applies to worlds saved in 2.90
  9641. and later only.
  9642. + Fixed a bug where ALT+F4 would cause menus to open instead of/
  9643. in addition to triggering an exit event.
  9644. + Fixed a bug where subdirectory mods with different types of
  9645. slashes in their names would fail to be recognized as the same
  9646. mod.
  9647. + Fixed a bug where SMZX palette intensities were not saved.
  9648. + Made the opengl2 and glsl renderers endian-correct. (Lancer-X)
  9649. + Fixed a bug where keystrokes were getting lost during event
  9650. processing. (Lancer-X)
  9651. + The UI now uses the regular MZX mode and the protected palette
  9652. when playing SMZX games. This is only available to renderers
  9653. that support unbound sprites. (Lancer-X)
  9654. + Changing from SMZX mode 1 to 0 correctly restores the palette.
  9655. (Lancer-X)
  9656. + Fixed a bug where the tree list in the counter debugger would
  9657. rapidly scroll through elements when clicked.
  9658. + Fixed a bug where the updater, on failing to receive data from
  9659. the server, would consume large amounts of CPU before timing
  9660. out. (Lancer-X)
  9661. + Fixed various bugs related to the pushing of sensors.
  9662. (Lancer-X)
  9663. + Fixed a bug where MZX would crash in some cases when testing
  9664. after adding/importing new boards into a world.
  9665. + Made KEY a board counter <=2.70. Also added masking <=2.62 to
  9666. make Oath Demo work again. (Lancer-X)
  9667. + Bullet types shot by robots clamped to 0-2. (Lancer-X)
  9668. + SAVE_GAME and SAVE_WORLD now happen at the end of a cycle, not
  9669. immediately. (Lancer-X)
  9670. + SAVE_WORLD no longer exists. (Lancer-X)
  9671. + Labels at the end of a program no longer get randomly sorted
  9672. first and stop the actual first instance of that label being
  9673. called. This fixes a bug in the Dark Corner 'Zane' demo.
  9674. (Lancer-X)
  9675. + Copy and copy block in pre-port MZX games now preserves the
  9676. state of any robots copied. (Lancer-X)
  9677. + Copying and pasting robot code with LF line endings on Windows
  9678. now works. (Lancer-X)
  9679. + MegaZeux can now be exited during an infinite loop. (Lancer-X)
  9680. + Fixed a bug where SAVE_GAME on the first cycle of a board
  9681. would cause the game to be faded out on load. This still
  9682. affects legacy worlds. (Lancer-X)
  9683. + Fixed a bug where trying to create new counters called "fread"
  9684. or "fread_counter" in the counter debugger would cause the
  9685. file being read to advance.
  9686. + Fixed a bug where the numpad was unable to be used to control
  9687. the player, despite being identical to the cursor keys for
  9688. every other situation. (Lancer-X)
  9689. + Fixed a bug where pre-port worlds could play any number of
  9690. concurrent samples. This makes portions of Bernard the Bard
  9691. quite cacophonous. (Lancer-X)
  9692. + Fixed a bug where per-game config files could set options they
  9693. weren't supposed to be able to.
  9694. DEVELOPERS
  9695. + Fixed linking bug when attempting to make a modular build of
  9696. MegaZeux in Debian/armhf. -fPIC is now enabled for modular
  9697. builds on all platforms. (Insidious, ajs)
  9698. + Added SDL 2.0 support. At the moment, the overlay renderers
  9699. are not accelerated by SDL 2.0 and may be slower than their
  9700. SDL 1.2 counterparts. Other minor inconsistencies may exist
  9701. between the two versions. (ajs)
  9702. + Keycode help diagram replaced with an HTML file (from the
  9703. older PNG file). This will make future updates much easier.
  9704. + Updated NDS, Wii and PSP ports to latest devkitpro toolchains.
  9705. + Updated libmodplug to version 0.8.9.0. (asiekierka)
  9706. + Added experimental libxmp support. (asiekierka)
  9707. + Added experimental libopenmpt support. (asiekierka)
  9708. + New rendering architecture that mostly sits alongside the old
  9709. rendering architecture. There is a new function implemented by
  9710. supporting renderers: render_layer(). This provides a layer
  9711. in a similar form to the text_video array in graphics and
  9712. expects that to be drawn on the screen. This is called once
  9713. for each layer that is drawn- this means the board, overlay,
  9714. UI and sprites. Each layer can have a different SMZX mode,
  9715. although at the moment this is only used to allow the UI to
  9716. remain in regular MZX mode while the game or editor is in SMZX
  9717. mode. The render_layer() function is only called if it is
  9718. implemented by the renderer and if there is something on the
  9719. screen that can only be drawn by the renderer (e.g. unbound
  9720. sprites, or UI elements in an SMZX game) (Lancer-X)
  9721. + LibSDL2 support is now the default. It can still be disabled
  9722. by passing --disable-libsdl2 to config.sh. (Lancer-X)
  9723. <a class="helplink" href="#284CLOG.HLP__284">New in Versions 2.84 to 2.84c</a>
  9724. <a class="helplink" href="#2823CLOG.HLP__283">New in Versions 2.82 to 2.83</a>
  9725. <a class="helplink" href="#281CLOG.HLP__281">New in Versions 2.81 to 2.81h</a>
  9726. <a class="helplink" href="#280CLOG.HLP__280">New in Versions 2.80 to 2.80h</a>
  9727. <a class="helplink" href="#OLDERVER.HLP__260">New in Versions 2.60 to 2.70</a>
  9728. <a class="helplink" href="#OLDESVER.HLP__201">New in Versions 2.01 to 2.60</a>
  9729. <a class="helplink" href="#NEWIN200.HLP__1st">New in Version 2.00</a>
  9730. <a class="helplink" href="#ANCENVER.HLP__1xx">New in Versions Through 1.03</a>
  9731. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  9732. <hr /></div>
  9733. <div class="helpfile" id="284CLOG.HLP">
  9734. <a class="helpanchor" name="284CLOG.HLP__284"> </a>
  9735. <p class="helpcentered"><span class="f9 ">New in Versions 2.84 to 2.84c</span></p>
  9736. December 24, 2012 - MZX 2.84c
  9737. Hey all, new version of MegaZeux here! And hopefully without any
  9738. crashes this time around! Haha yeah right.
  9739. The most notable thing this release (besides fixed crash bugs,
  9740. as usual) is the new counter debugger! Give it a try and tell us
  9741. what you think!
  9742. Counter binary search has been replaced with a hash table in
  9743. versions of MegaZeux for most platforms. This has resulted in
  9744. slightly faster counter lookups, and MUCH faster creation of
  9745. counters, since MegaZeux doesn't have to keep the list ordered.
  9746. The hash table is turned off for NDS builds for now due to tight
  9747. memory constraints.
  9748. Otherwise, most of the new features are editor enhancements and
  9749. modifications. Notable mentions are reordering the board list
  9750. with 'M' and a custom undo history size.
  9751. FEATURES
  9752. + The functionality of the F11 counter/string debugger has been
  9753. expanded to include sprites, robots, and miscellaneous world
  9754. and board variables. The ability to modify many of these vars
  9755. is limited and a large portion are read-only. In addition, you
  9756. may add new counters and strings, hide empty counters/strings
  9757. (does not affect built-in variables), and search by name and
  9758. contents. Export is still limited to counters and strings.
  9759. + Max string length has been increased from 1MiB (1048576 bytes)
  9760. to 4MiB (4194304 bytes).
  9761. + Board mods may now be selected from subdirectories of the game
  9762. folder in the ALT+N dialog.
  9763. + The title bar now displays the world and editing board/robot
  9764. names based on context.
  9765. + Fire Burns Space and Fire Burns Forever are off by default.
  9766. + You may now specify the size of the undo history in the char
  9767. editor, and the history affects the entire char set. Undo is
  9768. still ALT+U, redo is now ALT+R.
  9769. + You may now use the -/+ keys in the world editor to move to
  9770. the previous/next boards in the board list, and Shift+Arrows
  9771. to change to the boards linked by board edge.
  9772. + You may now move the current board anywhere in the board list
  9773. with M. You may not move the title screen board.
  9774. + View mode in the board editor (V) will start from the current
  9775. location of the screen now rather than at the top-left corner.
  9776. + Config file options for default board settings added, as well
  9777. as the ability to save these per-world from the editor.
  9778. + Ctrl+G - Goto board position at X,Y.
  9779. + png2smzx now requires less arguments and has an option to skip
  9780. a char (generally char 32 will be useful to skip).
  9781. + Debytecode: The robotic editor now asks for a confirmation to
  9782. save the program on exit.
  9783. BUGFIXES
  9784. + Fixed a bug in the 'glsl' renderer that caused the cursor
  9785. color to be ignored (always white). This caused the cursor to
  9786. not be visible if shown on a white background. (ajs)
  9787. + Setting $string.length will not cause memory corruption now.
  9788. In addition, its pre-2.84 behavior of intentionally allocating
  9789. the string past the set length has been restored, but the
  9790. length itself will still be set to the correct value.
  9791. + Added bounds check to INC "$string" "value". Attempts to
  9792. increase a string past its maximum length (4 MiB, or 4194304
  9793. bytes) will now fail.
  9794. + Fixed MegaZeux crash that could sometimes occur when a string
  9795. was increased by itself.
  9796. + Fixed MegaZeux crash that could occur when exiting the editor
  9797. to a world file that failed validation.
  9798. + Rolled string->storage_space into string->name to prevent
  9799. buffer overflow errors and crashes. (Mr_Alert)
  9800. + Fixed crash that would occur when attempting to type in a dir
  9801. in the ALT+N dialog.
  9802. + Fixed a bug where copy block $string would apply REL twice.
  9803. + Thanatos Insignia (DoZ Q1 2011, 98485) will now play without
  9804. freezing both normally AND after loading a save. Robots will
  9805. not be incorrectly versioned with the save format magic now.
  9806. + Fixed bug where ALT+M wouldn't always edit non-stored types.
  9807. + Fixed bug where ! could not be used as a substitute for
  9808. + Fixed a bug where tab-draw and block actions would carry
  9809. between board and overlay editing. ALT+O now sets the drawing
  9810. mode back to normal on a switch.
  9811. + ALT+M now edits the overlay instead of the board while editing
  9812. the overlay.
  9813. + Quick-load (F10 during gameplay) will not work if the load
  9814. menu (F4) has been disabled with the LOAD_MENU counter.
  9815. + Fixed a bug where the listening mod directory would stay the
  9816. same as the directory the editor was opened in.
  9817. + The listening mod now continues to play after world and board
  9818. changes, and also after the board mod has been changed by
  9819. ALT+N or Shift+8/*.
  9820. + LOAD_GAME will not incorrectly trigger JUSTENTERED anymore.
  9821. + Palette/intensity changes made on the same cycle as a teleport
  9822. player command are now properly taken into account. This fixes
  9823. a game-stopping regression in Sponkgo's Legendary Journey
  9824. where leaving the second stage's bonus area would leave the
  9825. color intensity at 0.
  9826. + SMZX mode is now disabled when leaving the editor if it was
  9827. enabled in the editor via F11.
  9828. + Fixed potential crash bug where robot bytecode files were not
  9829. being validated before being loaded with LOAD_BC.
  9830. + Fixed minor message box bug dating back to DOS where a message
  9831. box starting with an unavailable option would begin with the
  9832. cursor on a blank line.
  9833. + Fixed crash that happened when typing over bounds while
  9834. renaming a file in a file manager dialog. File and directory
  9835. renaming now use a popup dialog akin to ALT+N.
  9836. + Files with names longer than 55 chars may now be selected in
  9837. file managers. The limit for typing in a file name is still 55
  9838. chars. You may not enter a blank line as a file name anymore.
  9839. + Fixed segfault when attempting to read THIS_COLOR for the
  9840. global robot. It will now always return -1.
  9841. DEVELOPERS
  9842. + Overhauled txt2hlp. Error messages now differentiate between
  9843. hyperlinks and labels and will take the display chars and &
  9844. into account. Eventually, the goal should be to get rid of
  9845. txt2hlp altogether and have MZX load straight from the .txt
  9846. file.
  9847. + Added compile option to use uthash for counter/string lookups
  9848. as opposed to binary search. Ideally, this will vastly improve
  9849. lookup speeds for large numbers of counters/strings, but will
  9850. consume more memory. (thanks to Lancer-X for the modified
  9851. uthash header file)
  9852. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  9853. June 20, 2012 - MZX 2.84b
  9854. Less than three weeks after the last one, MegaZeux 2.84b is
  9855. here a few weeks early to fix a key regression regarding the
  9856. use of REL commands with the COPY x y dx dy command. While
  9857. several new features have been added, this release was mostly
  9858. about rooting out as many crash bugs from MegaZeux as possible.
  9859. An official public beta release of debytecode has been pushed
  9860. off once again due to time constraints.
  9861. Most notable as far as new features go, pressing 'E' while a
  9862. game's title screen is running will now take you directly to
  9863. that world in the editor. A blank new world may still be
  9864. created with 'F8', and now with the 'N' key. The function key
  9865. corresponding to the new 'E' functionality is 'F9'.
  9866. A major new aspect of this version, which could be seen as a
  9867. bugfix or as a new feature, is MegaZeux's ability to validate
  9868. the MZX, MZB, MZM, and SAV file formats. Validation has been
  9869. rigorously tested and refined, and a comprehensive list of most
  9870. world files that fail any check is available on the MZX Wiki.
  9871. File load crashes and force-quit "Out of memory" errors in
  9872. these instances are nearly a thing of the past.
  9873. One final major change regards the file manager dialogs (Load /
  9874. Save Game, etc). These dialogs have been internally overhauled
  9875. to avoid permanent directory changes unless a valid world or
  9876. save file has been loaded. If any bugs are experienced using
  9877. these, they should be reported to the MZX Bug Tracker.
  9878. FEATURES
  9879. + Pressing 'E' or 'F9' on a title screen will now open the
  9880. current world for editing. Press 'N' or 'F8' to create a new
  9881. world.
  9882. + Multiple hosts may now be defined in config.txt. Update
  9883. attempts will be carried out in the order they are defined.
  9884. + A startup path may be defined in config.txt ("startup_path").
  9885. + Specifying the backup filename with a directory, ex.
  9886. "backup/file", will now silently attempt to create the
  9887. directory if it does not exist.
  9888. + MZM3 is now forward compatible (robots will be dummied out).
  9889. BUGFIXES
  9890. + World validation has been strengthened, preventing
  9891. disasterous loads of most non-world files. Mostly
  9892. intact/valid worlds, such as HUNTDRAK.MZX, can be loaded --
  9893. corrupt/missing boards will be replaced with blank boards,
  9894. corrupt robots will be replaced by robots with empty
  9895. programs, and so on. If more robots/scrolls/signs are found
  9896. on a board than their data suggests there should be, the
  9897. extras will be replaced with customblocks. Back up the
  9898. version of the world with errors in this instance, as the
  9899. robots' code or scroll text may still be salvageable from the
  9900. world data.
  9901. + Fixed a long-standing memory corruption bug in the shoot
  9902. command introduced by the port.
  9903. + Mac OS X: MegaZeux now uses /Users/[username] as the default
  9904. starting directory. Apps previously would always start at the
  9905. filesystem root. (ajs)
  9906. + Fixed dangerous crash-causing bug where the editor would not
  9907. chdir back to the correct directory after testing.
  9908. + MegaZeux, after saving a world to a new directory, now chdirs
  9909. to the new current world file's directory.
  9910. + Changed behavior where a failed save file load would fade the
  9911. still-running world out of focus. MegaZeux now leaves the
  9912. world in focus.
  9913. + All failed world/save loads leave the current world running
  9914. and in the same working directory.
  9915. + When startup_file is defined as a directory at the command
  9916. line, MZX chdirs to the directory instead of attempting to
  9917. open it as a world file. In the config file, the directory
  9918. is pruned off since there's a new config option for the
  9919. startup path.
  9920. + Fixed regression where the rel commands would be ignored for
  9921. board to board copy x y dx dy.
  9922. + Updated MZX_SPEED in the counter debugger, where it was still
  9923. getting clamped from 1 to 9.
  9924. + COLOR FADE IN and COLOR FADE OUT (and all built-in uses of
  9925. them) now correctly respect any COLOR INTENSITY changes made
  9926. before they are used.
  9927. + In file selection dialogs, when attempting to make a
  9928. directory that already exists with ALT+N, MZX now shows the
  9929. correct file name and does not force the user to quit
  9930. MegaZeux.
  9931. + In file selection dialogs, when pressing ALT+D with a
  9932. directory selected, MZX now correctly prompts to delete the
  9933. selected directory instead of a file.
  9934. + The option to import world files in the board editor now
  9935. correctly takes the world version into account.
  9936. + Savegame MZMs loaded into the editor now have their robots
  9937. dummied out for safety purposes.
  9938. + Fixed bug where INPUT STRING would not terminate lines longer
  9939. than 71 chars after clipping them.
  9940. + INPUT STRING and ASK do not allow either tabs (INPUT only) or
  9941. line breaks (both) anymore.
  9942. + Fixed bug where putting a scroll/sign in the editor buffer
  9943. and then selecting something else could cause a crash on
  9944. leaving the editor.
  9945. + Temporary fix for MSVC bug where all window dialogs would
  9946. freeze. (MZXGiant)
  9947. + Temporary fix: board block actions will not corrupt robot
  9948. source code in DBC anymore. (MZXGiant)
  9949. DEVELOPERS
  9950. + Switched debian prereq. and darwin libpng12 to libpng,
  9951. switched darwin and default ldflags to use '--ldflags'
  9952. instead of '--libs'.
  9953. + Darwin CC/CXX compiler can now be specified on the command
  9954. line. (ajs)
  9955. + Cleaned up broken ifeq structure in darwin Makefile.in so
  9956. ARCHes other than i686 can be built.
  9957. + Updated MSVC dirent.h to the latest version (MZXGiant)
  9958. + Added updated MSVC dependencies. (MZXGiant)
  9959. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  9960. June 01, 2012 - MZX 2.84
  9961. The first version of MegaZeux to be released in two and a half
  9962. years, this time with a vast number of bugfixes, several new
  9963. features, and hopefully no new bugs.
  9964. There's a new port to the Pandora platform from Exophase. There
  9965. are no binaries for this platform yet, as ajs has not had time
  9966. to set up the cross-compiler. Same goes for Android.
  9967. Another major (internal) change this time around is that
  9968. Exophase's experimental "debytecode" language modification has
  9969. been merged. This still has some major bugs open against it,
  9970. and missing features, so I won't be doing official releases
  9971. yet. You can add support for this feature by passing
  9972. "--enable-debytecode" to config.sh on all platforms.
  9973. Thanks to Terryn, Exophase and MZXGiant for their contributions
  9974. and to Lancer-X, Old-Sckool and Lachesis who reported and
  9975. tracked the majority of bugs this time round.
  9976. FEATURES
  9977. + Added experimental port to Pandora. See arch/pandora/README
  9978. for more information. (Exophase)
  9979. + Directories may now be opened with FREAD_OPEN. This
  9980. functionality can be used in conjunction with FREAD_POS and
  9981. SET "$str" FREAD. FREAD will set the string to "" when it has
  9982. reached the end of the file listing.
  9983. + MZX_SPEED can now be set up to 16 by a robot or from the F2
  9984. dialog menu. (Lachesis)
  9985. + Numbers can now be temporarily backspaced past their minimum
  9986. value to make typing a new number more intuitive in dialogs.
  9987. (Lachesis)
  9988. + Chars 0 and 255 can now be selected from the Edit Chars
  9989. submenu of the Global Info menu. Using char 255 on a kind
  9990. that would have previously denied it now gives a warning
  9991. dialog. (Lachesis)
  9992. + New Counter: SPACELOCK represents the default space
  9993. functionality for the built-in player. Setting this counter
  9994. to 0 disables it, allowing the player to move as normal when
  9995. space is pressed. Setting it back to 1 enables it again.
  9996. Defaults to 1. (Lachesis)
  9997. + New Counter: FREAD_DELIMITER allows you to change the
  9998. terminating char for the string FREAD function. The
  9999. terminating char still defaults to '*'. A complementary
  10000. FWRITE_DELIMITER function has been added as well. (Lachesis)
  10001. + New Counter: ARCTANdy,dx takes two values and returns the
  10002. angle with corrected quadrants as an alternative to using
  10003. ATANdy with DIVIDER as dx, which was less intuitive and never
  10004. documented properly. (Lachesis)
  10005. + New Counters: MINv1,v2 and MAXv1,v2 return the minimum or
  10006. maximum value between two inputs, respectively. Chain several
  10007. of these in an expression or a loop for more arguments.
  10008. (Lachesis)
  10009. + New Counters: bchX,Y; bcoX,Y; bidX,Y; and bprX,Y are new
  10010. shorthand access counters for BOARD_CHAR, BOARD_COLOR,
  10011. BOARD_ID, and BOARD_PARAM. The same limitations to those
  10012. counters apply to the new ones. (Lachesis)
  10013. + New Counters: uchX,Y; ucoX,Y; uidX,Y; and uprX,Y are new
  10014. shorthand access counters for the board's under layer. The
  10015. same limitations apply to these as to their board
  10016. counterparts. Additionally, these counters will fail if the
  10017. same spot on the normal board is occupied by a floor-type
  10018. (space, [dir]water, lava, fake, etc...). (Lachesis)
  10019. + New Counters: ochX,Y and ocoX,Y are new shorthand access
  10020. counters for the overlay. Like OVERLAY_CHAR and
  10021. OVERLAY_COLOR, these are read-only to discourage the user
  10022. from writing to these instead of using the much faster PUT
  10023. [color] [char] OVERLAY [x] [y]. (Lachesis)
  10024. + Pressing ALT+G from the world editor now goes directly to the
  10025. Global Robot without having to skip through the Global Info
  10026. menu. (Lachesis)
  10027. + MZM3 has been enabled for 2.84 and all following versions.
  10028. The difference between MZM3 and MZM2 is that MZM3 stores a
  10029. copy of the world version, allowing the robot format to
  10030. change. (Lachesis)
  10031. + COPY can now take + and # prefixes to its arguments. COPY
  10032. BLOCK and COPY OVERLAY BLOCK can now take + prefixes to their
  10033. first set of coordinates. (Lachesis)
  10034. + Subroutine versions of TOUCH, BOMBED, INVINCO, PUSHED,
  10035. PLAYERSHOT, NEUTRALSHOT, ENEMYSHOT, SHOT, PLAYERHIT, LAZER,
  10036. SPITFIRE, GOOPTOUCHED, PLAYERHURT, KEY[char], KEYENTER, THUD,
  10037. and EDGE have been added. These should ALWAYS be used in
  10038. conjunction with LOCKSELF/ZAP and #RETURN or #TOP to keep the
  10039. robot stack under control. Please remember that THUD and
  10040. EDGE ignore LOCKSELF and their subroutine versions must be
  10041. ZAPped. JUSTENTERED, JUSTLOADED, and the sensor labels have
  10042. been excluded from this due to various reasons. (Lachesis)
  10043. BUGFIXES
  10044. + Fixed a bug where LOAD_ROBOT or LOAD_BC would not reset the
  10045. stack pointer for newly loaded programs. This could cause
  10046. crashes if a robot popped the stack in the new program.
  10047. + Fixed a bug where range checking of BOARD_X and BOARD_Y would
  10048. sometimes not be done correctly, leading to crashes.
  10049. + Strings in the debug menu list no longer interpret any color
  10050. codes they may contain.
  10051. + Fixed a bug where a string would not be interpreted correctly
  10052. if it used a '.' character in a splice parameter expression.
  10053. Expressions such as IF "$str#('$str2.length'-4)" = "blah"
  10054. THEN "label" will now work correctly.
  10055. + Fixed negative sprN_cheight et al from crashing. (Exophase)
  10056. + Placement of objects on the player will be blocked with an
  10057. error dialog like DOS versions, instead of silently failing
  10058. after setup. (MZXGiant)
  10059. + Fixed a bug where LOAD_ROBOT would not properly parse lines
  10060. of imported code that had leading whitespace. (MZXGiant)
  10061. + Fixed an integer wrapping bug in debytecode, disallowed
  10062. numeric literals outside of the bounds of a signed short.
  10063. (MZXGiant)
  10064. + Fixed a bug that would corrupt the UI palette if "set color"
  10065. was run against a color index over 15. (MZXGiant)
  10066. + If either board dimension is less than the editor viewport,
  10067. the character and colors used to indicate space outside of
  10068. the board are taken from protected sets. In game, they are
  10069. taken from the game's sets.
  10070. + Increase limit on difference for RANDOM "A" TO "B" to
  10071. UINT_MAX rather than INT_MAX - 1 as it was previously. Since
  10072. the entire range represented by a counter is now usable,
  10073. there are no cases where RANDOM will "break".
  10074. + Fixed avalanche rings and potions to limit boulder placement
  10075. to 1/18, matching the AVALANCHE command.
  10076. + Fixed corruption and possible crashes when using VIEWPORT
  10077. SIZE to set the viewport to a size less than 80x25 but
  10078. greater than the current board dimensions. The viewport will
  10079. now always be clamped to board size.
  10080. + Fixed incorrectly changing horizontal mouse position on
  10081. setting MOUSEY. (Mr_Alert)
  10082. + Fixed overflow into protected character set when "Revert
  10083. to..." is selected in the character editing dialog.
  10084. (MZXGiant)
  10085. + Music and SFX now mute when the updater launches and are
  10086. restored when it is complete. (MZXGiant)
  10087. + Fixed odd string behaviour when copying between strings that
  10088. happen to be stored close to each other in memory. This fixes
  10089. a regression introduced by the "crash when pasting to and
  10090. from the same string" fix in 2.82b.
  10091. + The size/offset parameters for strings can now be specified
  10092. in either order (#+ vs +#) and will behave correctly.
  10093. + Reverted bogus cycle-ending behaviour for SHOOT,
  10094. SHOOTMISSILE, SHOOTSEEKER and SPITFIRE.
  10095. + Improved cycle-ending compatibility with MZX versions prior
  10096. to 2.80. Fixes games such as Kya's Sword and Stones & Roks
  10097. II.
  10098. + Restored shark's ability to move in goop.
  10099. + MZX now clears SPR_YORDER upon loading a new world.
  10100. + When transitioning between boards, MZX now compares the
  10101. module filenames of the source and destination boards
  10102. case-insensitively. A difference in case will no longer cause
  10103. the board module to be incorrectly restarted.
  10104. + Fixed rare rendering corruption in the load game dialog.
  10105. + Fixed a bug where SEND "robot" TO "#return" could corrupt the
  10106. program counter of the target robot if it had a stack pointer
  10107. of zero.
  10108. + Fixed some security issues with SMZX_PALETTE and LOAD_BC
  10109. counters.
  10110. + MZX now only lists/opens regular files or symlinks to regular
  10111. files in file dialogs. Special files are now ignored.
  10112. + Opening directories with FWRITE_OPEN is now rejected properly
  10113. on all platforms.
  10114. + Fixed a bug where a file would be re-opened for read/write,
  10115. even if the file was missing or an I/O error occurred before
  10116. saving.
  10117. + Fixed a bug where MZX could occasionally crash due to label
  10118. list corruption when copying robots from heap locations
  10119. greater than 2^32 bytes apart (only affected 64bit builds).
  10120. + Stopped SET "var" <command> from assembling. Some invalid
  10121. uses of command tokens were already being ignored, but this
  10122. was just luck.
  10123. + Sprites with color c?? (inherited "natural" colors) will
  10124. correctly inherit the colors of special characters such as
  10125. the player and other self-colored built-ins.
  10126. + Debytecode's legacy expression converter should use
  10127. is_string() instead of its own (buggy) hand-rolled version.
  10128. Fixes crash when converting CoAZ.
  10129. + The editor no longer incorrectly clamps the intelligence of
  10130. sharks, spitting tigers and spiders to <=4, and no longer
  10131. clamps the HP of dragons to <=4. (Lancer-X)
  10132. + MZX now accepts SET EDGE COLOR "string" in addition to SET
  10133. EDGE COLOR c??.
  10134. + Fixed NDS port initialization on DSi devices. (asiekierka)
  10135. + Fixed a bug in the joystick code where centering an axis
  10136. clears the previous axis button. (iamgreaser)
  10137. + Fixed a bug that allowed vlayer->board COPY BLOCK to
  10138. overwrite the player. Blocks that would overwrite the player
  10139. are now ignored.
  10140. + Fixed a 2.81e regression that allowed SENDs to self to ignore
  10141. LOCKSELF.
  10142. + Setting $str.length now makes $str the length specified.
  10143. (Lachesis)
  10144. + Caps Lock no longer interferes with dialog box text input.
  10145. (Lachesis)
  10146. + Increasing the size of a string with $str.length, $str.N, or
  10147. with a splice now wipes old string data with char 32s.
  10148. + Dialogs (especially "Exit gameplay - Are you sure?") now
  10149. require the user to have actually hit ESC to close, making
  10150. escaping busyloops and message loops much easier. (Lachesis)
  10151. + Added a compatibility fix for different label caching in 2.80
  10152. through 2.83 that allowed constructs such as : "LABEL" / SEND
  10153. "ALL" "LABEL" on an unlocked robot to continue instead of
  10154. getting caught in a loop. The altered label caching caused
  10155. #98485 Thanatos Insignia to lock up in an unescapable
  10156. busyloop in GIT versions. (Lachesis)
  10157. + MOD "[lead-in file]*" now works properly. In previous
  10158. versions of the port, this construct would result in the
  10159. lead-in file failing to play and the wildcard mod restarting
  10160. when the player re-entered and re-exited the board.
  10161. (Lachesis)
  10162. + Fixed a bug where mod "*" would cause the mod to restart when
  10163. entering another board with the same playing mod. (Lachesis)
  10164. + ALT+D (Default palette) now requires a confirmation.
  10165. (Lachesis)
  10166. + The COMMANDS counter is now saved as a 32-bit variable.
  10167. (Lachesis)
  10168. + The LOOPCOUNT counter has been moved to save-only data and is
  10169. now saved as a 32-bit variable. (Lachesis)
  10170. + Fixed a bug where not all whirlpools were being considered as
  10171. such, notably during the transport board scan. (Lachesis)
  10172. + The abilities of PLAY "&file&" to play at multiple
  10173. frequencies and to parse multiple files have been restored.
  10174. (Lachesis)
  10175. + As of MZX 2.84, BOARD_COLOR will now ignore the under color
  10176. of any object with a BG color of 0 that is on top of
  10177. something. Worlds that relied on this between 2.80 and 2.83
  10178. are unaffected. (Lachesis)
  10179. + Setting BIMESG to 0 will now disable Game Over's
  10180. auto-centering of the message row. (Lachesis)
  10181. + The DIVIDER counter's documentation has been updated to
  10182. explain its true purpose.
  10183. + Fixed an editor bug where canceling a world load could cause
  10184. MZX to forget the filename of the current world. (Lachesis)
  10185. + Pressing ALT+M in the world editor now edits anything with
  10186. parameters, not just Robots, Signs/Scrolls, and Sensors.
  10187. DEVELOPERS
  10188. + Source tarballs are now generated in XZ (LZMA2) format.
  10189. + Make hlp2txt utility work correctly on Windows platforms.
  10190. + Updated and repaired MSVC project for Visual Studio 2010.
  10191. (MZXGiant)
  10192. + Win32 binaries are built ASLR-capable (via pefix).
  10193. + Version control was changed from SVN to Git; the repo is at:
  10194. http://github.com/ajs1984/megazeux
  10195. + The EGL backend now supports Mesa's EGL implementation on
  10196. X11.
  10197. + Imported libmodplug 0.8.8.4 and rebased all patches.
  10198. + Introduced SOCKS4/4a/5 support transparently into the network
  10199. layer. (MZXGiant)
  10200. <a class="helplink" href="#NEWINVER.HLP__1st">NEW in MegaZeux!</a>
  10201. <a class="helplink" href="#2823CLOG.HLP__283">New in Versions 2.82 to 2.83</a>
  10202. <a class="helplink" href="#281CLOG.HLP__281">New in Versions 2.81 to 2.81h</a>
  10203. <a class="helplink" href="#280CLOG.HLP__280">New in Versions 2.80 to 2.80h</a>
  10204. <a class="helplink" href="#OLDERVER.HLP__260">New in Versions 2.60 to 2.70</a>
  10205. <a class="helplink" href="#OLDESVER.HLP__201">New in Versions 2.01 to 2.60</a>
  10206. <a class="helplink" href="#NEWIN200.HLP__1st">New in Version 2.00</a>
  10207. <a class="helplink" href="#ANCENVER.HLP__1xx">New in Versions Through 1.03</a>
  10208. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  10209. <hr /></div>
  10210. <div class="helpfile" id="2823CLOG.HLP">
  10211. <a class="helpanchor" name="2823CLOG.HLP__283"> </a>
  10212. <p class="helpcentered"><span class="f9 ">New in Versions 2.82 to 2.83</span></p>
  10213. December 29, 2009 - MZX 2.83
  10214. It's been a year since the last release, due in part to my
  10215. reduced free time, and less contribution from other developers
  10216. in 2009. I'd also like to believe that 2.82b was such a good
  10217. release, there was no need to rush.
  10218. There's over 30 bugs fixed this time. A few features I had to
  10219. withhold for 2.82b have been added; sample loop markers and
  10220. some changes to the board file format necessitated the bump to
  10221. 2.83. Logicow's GLSL renderer has finally made it in (various
  10222. bits had to be re-written to extend portability to other
  10223. platforms).
  10224. There's a new (semi-complete) Android port this time; I hope to
  10225. complete it, and provide binaries for Android 2.0 phones, in
  10226. 2.83b.
  10227. Thanks go out to the usual suspects -- Terryn, Mr_Alert,
  10228. Logicow, kvance, Lancer-X, revvy and Exophase -- for supporting
  10229. development this year.
  10230. USERS
  10231. + Added support for loop markers in WAV and OGG files. The WAV
  10232. loop support uses the "smpl" chunk used by ModPlug Tracker
  10233. and Wavosaur among others. Only the first loop is used, and
  10234. only forward looping is supported. The OGG loop support uses
  10235. the "LOOPSTART" and "LOOPLENGTH" tags as used by RPG Maker
  10236. VX. (Mr_Alert)
  10237. + Added OpenGL Shader Language (glsl) renderer which uses
  10238. shaders to render and scale the video. This renderer is
  10239. compatible with Open GL >=2.0 and Open GL-ES 2.0 video cards
  10240. only. A variety of shader programs have been provided and
  10241. these can be customized. Performance of all MZX modes
  10242. (including SMZX) is excellent. (Logicow, ajs)
  10243. + Files will no longer be silently overwritten by save dialogs
  10244. if the user enters an existing filename without the default
  10245. extension. (revvy)
  10246. + The string editor in the counter debug menu (F11) now escapes
  10247. newlines and backslashes to prevent UI corruption.
  10248. + Fixed a bug where the LOAD_GAME counter handler could
  10249. continue to use the old board state after load, causing
  10250. crashes. (Lancer-X)
  10251. + Fixed a bug where status counters containing numbers >6
  10252. characters would cause MegaZeux to crash or behave strangely.
  10253. + Fixed a bug in the robot editor's find/replace function that
  10254. caused crashes when replacing a string with another longer
  10255. string, with a replacement at the end of a line.
  10256. + Programmatically writing to a read-only "built-in" counter
  10257. will no longer allocate it general heap space. This prevents
  10258. writes from showing up in the F11 counter debugger that are
  10259. inaccessible from robotic.
  10260. + Fixed a bug that caused the SMZX mode 3 palette to become
  10261. corrupted upon entering the char editor (the editor would
  10262. re-write colours 2-4 and not restore them from backup
  10263. correctly).
  10264. + Fixed a bug where a robot program would never progress if the
  10265. subroutine stack was popped more times than it was pushed
  10266. (via return or top).
  10267. + On UNIX platforms a desktop/menu entry is now installed by
  10268. default, using the existing icon. (Sci-freak)
  10269. + Clamp score to >= 0 if world <= 2.70. Fixes "Gates: The
  10270. Puzzles" and possibly other old titles depending on this
  10271. behavior. (Exophase)
  10272. + Fullscreen modes will now automatically use your current
  10273. desktop resolution if using any hardware renderer (i.e. not
  10274. the default software renderer). To get the old behaviour back
  10275. you must set fullscreen_resolution explicitly.
  10276. + Fixed a bug where web and thick web would be treated the
  10277. same.
  10278. + Fixed a bug in the updater where modified/replaced files
  10279. would be considered for deletion.
  10280. + Fixed a bug on case-sensitive filesystems where saving a
  10281. game, world or MZM could fail to overwrite any existing file
  10282. by the same name (if matched case insensitively).
  10283. + MZX no longer applies masking to chars 32-127 in signs or
  10284. scrolls when playing a world. Previously, even the
  10285. mask_midchars option would have no effect on the display of
  10286. signs or scrolls. This has been broken since 2.80g.
  10287. + Re-worked board editor's Alt+H option to provide minimal
  10288. editor (one row) status info, rather than completely hiding
  10289. the help.
  10290. + The checkres utility now checks the global robot for missing
  10291. resources too.
  10292. + Chests can be added with Hi Bombs (omission noted by zzo38).
  10293. + Fix IF c?? Sprite p?? # # "label" so that a non-wildcard
  10294. parameter is respected (previously it would always just check
  10295. sprite 0).
  10296. + NDS port updated from dsmzx2 release. (kvance, ajs)
  10297. + Updated SDL to 1.2.14 in Windows x86, Windows x64 and Mac OS
  10298. X builds.
  10299. + Security checks are no longer applied to filenames in module
  10300. or sample playback in "listening only" modes in the editor.
  10301. + Module volume is applied immediately before playback upon
  10302. switching boards. This prevents one cycle of audio "leaking"
  10303. at the wrong volume.
  10304. + Prevent crash with negative string clip where clip + offset =
  10305. 0. Clip is now correctly limited to total string length.
  10306. + Help file is now optional for MZXRun, even with
  10307. CONFIG_HELPSYS=1 builds.
  10308. + Fixed crash when robot editor macros expanded other macros.
  10309. + The lock icon is no longer missing from the Items THING menu
  10310. (F4).
  10311. + A world to start up with can now be passed to MegaZeux
  10312. without the startup_file= prefix. This makes megazeux
  10313. consistent with other applications.
  10314. + SHOOT, SHOOTMISSILE, SHOOTSEEKER and SPITFIRE now end the
  10315. cycle, to restore compatibility with pre-port MZX and fix
  10316. games such as Kya's Sword and Stones & Roks II.
  10317. + Have IF [dir] PLAYER [color] [thing] [param] "label"
  10318. interpret SEEK direction wrt robot coordinates, rather than
  10319. player coordinates. Other directions are not affected.
  10320. + Zapping a label at the end of a robot program will no longer
  10321. corrupt the robot list (which usually caused crashes).
  10322. + Entering lines in the robot editor with leading or trailing
  10323. spaces will be trimmed before the line is compiled.
  10324. + The single quote characters encasing S_CHARACTER parameters
  10325. in the robot editor will now use the protected (GUI) charset
  10326. rather than the game one.
  10327. + Added a "system_mouse" config.txt option that allows the
  10328. mouse cursor to be replaced with the system mouse cursor,
  10329. rather than being drawn by MegaZeux.
  10330. + Disallowed placing player clones with SET "board_id" 127.
  10331. + Relaxed file name limit on board MOD file. The board MOD can
  10332. now be as long as the limit imposed by file dialog's input
  10333. box (previously limited to 12 characters).
  10334. + Truncation of currently open input/output file names will now
  10335. only occur at MAX_PATH bytes (typically 512 characters). The
  10336. previous limit was 13 characters.
  10337. + Relaxed limit of INPUT string and bottom ("*") messages from
  10338. 80 characters to ROBOT_MAX_TR (512) characters. In the case
  10339. of bottom messages this can be usefully exploited to ~200
  10340. characters.
  10341. + Progress meter will be shown for world decrypt on console
  10342. platforms.
  10343. + Fixed a bug where a malformatted BMP header would be written
  10344. (length too short, didn't include dummy channel in BMP
  10345. palette). (Mr_Alert)
  10346. + Optimized audio locking; do file I/O outside of critical
  10347. sections to decrease stalling, particularly on platforms with
  10348. slow I/O. (Mr_Alert)
  10349. + Added support for MacOS 10.6 (Snow Leopard) and removed
  10350. support for 10.3.
  10351. + Loading a save game from robotic will now correctly restore
  10352. intensities to their saved values.
  10353. + Copy/pasting a block either with COPY BLOCK or the editor,
  10354. where the copy would exceed the limit on robots/signs/scrolls
  10355. /sensors, will no longer place junk at the target
  10356. co-ordinates. Instead, the object's background will be copied
  10357. in isolation.
  10358. + Pasting from the clipboard, expanding a macro, or importing
  10359. .txt or .bc files that would cause a robot to exceed the 64k
  10360. limit now has the operation ignored at the point it exceeds
  10361. the limit, rather than adding an unlimited number of
  10362. unrecognized lines.
  10363. DEVELOPERS
  10364. + MZXRun compilation can now be disabled. Compilation of
  10365. pre-2.82b style non-modular builds requires
  10366. `--disable-modular --disable-mzxrun'.
  10367. + Disabling SDL can now be done with --disable-sdl and the
  10368. resulting configuration will automatically disable any
  10369. SDL-dependent components. This is useless to anybody except
  10370. developers doing new ports.
  10371. + Game directory, utility directory and resource directories
  10372. can now be specified and will be respected on "make install".
  10373. (Sci-freak, ajs)
  10374. + Added experimental port to Android. See arch/android/README
  10375. for more information.
  10376. + Ported opengl1 and opengl2 renderers to OpenGL ES 1.x and
  10377. glsl renderer to OpenGL ES 2.0, used increasingly by mobile
  10378. devices.
  10379. + Removed SDL dependency from NDS port. It only used it for
  10380. timing and stuffed events.
  10381. + On Windows platforms, binaries are processed with the `pefix'
  10382. in-tree tool to eliminate data section differences in
  10383. programs with identical texts. This minimizes the amount of
  10384. content required to be sent for updates.
  10385. + Updated Wii port: improved audio and video support, added USB
  10386. mouse support, numerous optimizations and improved file
  10387. selector. (Mr_Alert)
  10388. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  10389. December 29, 2008 - MZX 2.82b
  10390. This release contains plenty of important bug fixes, ranging
  10391. from regressions such as the broken command-line editor macro
  10392. expansion to third party bugs like the Windows "directx" SDL
  10393. video driver breakage.
  10394. There are also some new ports and features. MegaZeux now runs
  10395. on the Wii (port by Mr_Alert) and AmigaOS 4.x (port by myself
  10396. and Spot from os4depot). The Windows x64 port has matured
  10397. immensely and can now be considered stable. MacOS X builds now
  10398. have clipboard support. The hardware stretching renderers now
  10399. have a couple of fixed aspect ratio modes.
  10400. The biggest feature of this release is the introduction of a
  10401. portable network layer, which is currently being tested by the
  10402. new built-in updater (F7/U).
  10403. Internally, MegaZeux is now modularized and builds as several
  10404. DLL and EXE files, which should make redesigning parts like the
  10405. help system and editor a little easier, as well as allowing us
  10406. to ship a "mzxrun" executable for the first time since 2.69c.
  10407. This "mzxrun" executable is now used by a majority of the
  10408. console ports.
  10409. Contributions from Revvy, Mr_Alert, Terryn and Exophase have
  10410. helped make this another solid release.
  10411. USERS
  10412. + Writing to $str.length (which previously did undefined
  10413. things) will now truncate or enlarge the string to the size
  10414. specified.
  10415. + Removed filename size limit for FWRITE_MODIFY and
  10416. FWRITE_APPEND. (Revvy)
  10417. + Added support to the checkres tool to check worlds in
  10418. non-local directories. (Revvy)
  10419. + Fixed an old bug with saving games and worlds from Robotic
  10420. where a board could be prematurely "optimized", renumbering
  10421. robot IDs within the same cycle. For commands like DIE this
  10422. could cause unpredictable behaviour or simply crashes (if
  10423. invoked in the same cycle). As a special case, end the cycle
  10424. if either of these SET specials are used.
  10425. + Mistaken or malicious file I/O such as set "$test" to
  10426. "fread(-1>>1)" will no longer crash MegaZeux. The read size
  10427. will be truncated to a contextual maximum for the current
  10428. file.
  10429. + Fixed a crash using "fwrite0" in conjunction with an empty
  10430. string.
  10431. + Fixed a bug where checking sprite_collisions on a disabled
  10432. target sprite would unconditionally trigger (regardless of
  10433. whether a collision was present or not).
  10434. + Un-grouped the handling of the KEY and KEYn counters so that
  10435. different compatibility checks can be applied to either
  10436. counter. Fixes "Bocco Chronicles 1" and probably several
  10437. other titles.
  10438. + Fixed a crash when using RIDn or ROBOT_ID_n in the same cycle
  10439. as DIE for another robot positioned earlier in the board
  10440. scan.
  10441. + Fixed poor sanity checks on BOARD_ID counter writes. Illegal
  10442. character IDs such as -1 can no longer be used to bypass the
  10443. check (causing subsequent crashes).
  10444. + Windows builds now use a patched version of SDL 1.2.13
  10445. containing a fix for the directx+F10 issue.
  10446. + Fixed a bug where one robot could send another robot to
  10447. "#return", with an address outside its program. In such
  10448. cases, the robot will now terminate.
  10449. + An "mzxrun" binary is now shipped alongside the
  10450. editor-capable MZX binary.
  10451. + Fixed TIME/TIMERESET overflows with very large values. Board
  10452. timeout is now programmatically limited to 32767, which is
  10453. consistent with the Board Info control.
  10454. + Clamped CHAR_X/CHAR_Y properly so that negative numbers can
  10455. no longer be used to corrupt the editor charset and
  10456. potentially other process memory.
  10457. + Fixed recent breakage of SHIFT+F{1,2,3,4} so that the
  10458. percentage of time spent displaying the original character
  10459. and the '!' are equal.
  10460. + Removed some bogus handling of lines containing "only" ';',
  10461. ',' or ' '.
  10462. + Honor user's robot character selection if they are holding
  10463. shift when pressing return or space (would previously always
  10464. return char 247).
  10465. + Backspacing a line and then expanding a macro no longer
  10466. restores the original line contents immediately after the
  10467. expansion.
  10468. + MacOS 10.x clipboard support (via Cocoa Pasteboard). Alt+Ins
  10469. can be entered with Fn+Alt+Numpad0 on a Macbook or Powerbook
  10470. keyboard.
  10471. + Robot editor S_CHARACTER fields no longer bogusly escape
  10472. characters such as ". In addition, rendering glitches are no
  10473. longer encountered when using the ' S_CHARACTER (which is
  10474. completely reasonable).
  10475. + Fixed robot editor glitches where the game charset SPACE
  10476. would be used in places where the protected UI charset should
  10477. be used instead.
  10478. + The introductory help message is displayed if the load dialog
  10479. is cancelled prior to loading a game. Hopefully the screen is
  10480. now never totally blank.
  10481. + The F7/F8 cheats can now be used freely in MZXRun (in
  10482. MegaZeux proper they remain usable only in editor tests).
  10483. + Saving to a directory above the MegaZeux startup directory,
  10484. then attempting to save to this location again, will no
  10485. longer crash MegaZeux. Instead, the parent directory will be
  10486. changed into before the dialog is displayed.
  10487. + Fixed numerous crash bugs with the scroll editor; it should
  10488. be relatively usable now.
  10489. + Writing to $str+0 is no longer interpreted in the same way as
  10490. a plain write to $str. Instead, it behaves like writes to
  10491. non-zero offsets (as more of a paste than a replace).
  10492. + Display of current X,Y position of robot in the robot editor
  10493. status bar.
  10494. + Fixed directory rename so that it no longer displays garbage
  10495. and/or crashes MegaZeux (Alt+R to rename a directory in any
  10496. file picker).
  10497. + In the robot editor, lines can now be split at a midpoint
  10498. with enter and two consecutive lines merged together with
  10499. backspace. (Exophase)
  10500. + Fixed use of status counter 6 and display of status counters
  10501. in general, which has been broken since 2.80.
  10502. + Fixed swapping to encrypted worlds if initially the user
  10503. decides to not decrypt the world. Previously, this would
  10504. either crash, or loop forever.
  10505. + When using the OpenGL or overlay renderers, in either
  10506. windowed or fullscreen mode, the aspect ratio can now be
  10507. preserved as either 4:3 (most similar to DOS) or 64:35 (most
  10508. similar to the port). The display will be letterboxed or
  10509. margins applied as appropriate. See the "video_ratio"
  10510. configuration option for more information.
  10511. + Fixed a bug on some systems where numlock could not be used
  10512. as a key, only as a flag. The numlock "key" is now masked out
  10513. of "key_code" and similar; hopefully this won't break any
  10514. games.
  10515. + Restored the meter widget from the old DOS MZX for use with
  10516. the world loader and saver routines. This reassures users,
  10517. especially on consoles, where loading a world can take a long
  10518. time. (Mr_Alert)
  10519. + On Windows, directx.bat now passes %cd% through to `start' so
  10520. that features such as the updater continue to work.
  10521. (MZXGiant)
  10522. + Pasting into a string with set "$str+N" with an N >
  10523. str.length will no longer crash MZX.
  10524. + "Exit to DOS" is now "Exit MegaZeux" to reflect the
  10525. multi-platform nature of the program.
  10526. + Setting a substring size to zero with $string#0 will no
  10527. longer return the whole string; it will instead return the
  10528. empty string.
  10529. + Accessing a substring with an offset >= $string.length will
  10530. no longer return the last character from the string; it will
  10531. instead return the empty string.
  10532. + Writing beyond MAX_STRING_LEN (1MB) or using negative offsets
  10533. (which has the same effect) no longer crashes. Instead, the
  10534. write is ignored.
  10535. + Fixed crash when pasting to and from the same string,
  10536. specifically in conjunction with $str+offset.
  10537. - Removed the legacy "force_resolution" option which was
  10538. replaced long ago by the more accurate
  10539. "fullscreen_resolution" option.
  10540. DEVELOPERS
  10541. + Ported to OpenSolaris. You need to install `SUNWxorg-headers'
  10542. if you want X11 clipboard support.
  10543. + Removed dependency on SDL_image on non-win32 platforms when
  10544. enabling the icon branding feature (see pngops.c).
  10545. + Ported to AmigaOS. You need to install the clib2 version of
  10546. libSDL and miniGL, and the build system assumes you are using
  10547. a cross compiler.
  10548. + Added experimental port to the Wii. See arch/wii/README for
  10549. more information. (Mr_Alert)
  10550. + get_path() in util.c now returns <0 for failure, or the
  10551. length of the path for the given file. (Revvy)
  10552. + Added the make time WHOLE_PROGRAM=1 flag which enables
  10553. compilation of the core binary in GCC's "-fwhole-program
  10554. --combine" mode. This makes all symbols static and improves
  10555. optimization, somewhat like MSVC's LTO does.
  10556. + Added a valgrind.supp file to suppress bugs in third party
  10557. libraries when valgrinding MegaZeux.
  10558. + Cleaned up all the ports and documented making new ports. The
  10559. platforms "linux", "solaris" and "obsd" are now called
  10560. "unix", and the "linux-static" platform is now "unix-devel"
  10561. and available on all UNIX derivatives/clones.
  10562. + Added a special hack to enable linking with --as-needed for
  10563. DT_NEEDED link optimization for GNU ld platforms.
  10564. + Updated MSVC projects. Fixed all warnings emitted by MSVC
  10565. 2008, and implemented icon support with existing mingw
  10566. resource files.
  10567. + Now uses the GNU ld "debuglink" feature on all platforms to
  10568. enable shipping of a side-by-side symbol package. Optimized
  10569. release builds can now be debugged with minimal user effort.
  10570. + MegaZeux now provides the option for "modular" linkage,
  10571. factoring out the "core", "editor" and "network" features to
  10572. shared objects that other binaries can link against. This
  10573. feature works on the unix, mingw, amiga and darwin ports.
  10574. + Added RPM .spec file. Capable of building (at least) Fedora
  10575. 10 RPMs.
  10576. - Removed HOST_CC feature for cross compilation; since the
  10577. utilities now intimately depend on the MZX runtime, they must
  10578. be built with the same compiler.
  10579. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  10580. June 10, 2008 - MZX 2.82
  10581. Despite the increase in minor version, this release mostly
  10582. targets bug and regression fixes. However, there ARE some
  10583. additional new features, such as the introduction of the
  10584. LOAD_MENU and mouse pixel counters, and refinement of the
  10585. {FREAD,FWRITE}_COUNTER counters. (There are several other
  10586. smaller features that are documented in the changelog.)
  10587. SAVs from older worlds (requiring compatibility hacks) no
  10588. longer fail to play (Darkness, etc. are affected). We've also
  10589. done a good bit to fix compatibility with 2.70 and older.
  10590. A new tool, "checkres", is now routinely packaged, allowing you
  10591. to check your games for missing resource files (PALs, CHRs,
  10592. etc.) before passing them on to other people. This should be
  10593. especially handy for DoZ game submissions.
  10594. The Nintendo DS port (Kevin Vance's "DsMZX") has been merged
  10595. into this release. I'll provide binaries for GP2X, PSP and NDS
  10596. this time, but I can't guarantee they'll work.
  10597. Both of the snags from the last DoZ have been addressed -- the
  10598. help system should no longer crash and the Block Action crashes
  10599. should be reduced in frequency. However, there are still issues
  10600. with pasting in the robot editor that remain unfixed (they're
  10601. just really hard to reproduce). With your bug reports, I look
  10602. forward to fixing this.
  10603. As usual, thanks go out to Revvy and Mr_Alert for their
  10604. contributions to the bug-fixing effort, and to Terryn for his
  10605. unwavering dedication to creating and organising bug reports,
  10606. and for testing our bug fixes.
  10607. USERS
  10608. + Fixed and improved quality of the half-width renderer for the
  10609. GP2X port (Mr_Alert).
  10610. + The numpad now works correctly when numlock is disabled. Keys
  10611. are no longer ignored by the MZX editor, and games should
  10612. recognize them as before.
  10613. + Added a tool, "checkres", which extracts all resources from a
  10614. MegaZeux world or board file and lists them (or lists only
  10615. those which are not found in the game directory). ZIP files
  10616. are also supported (to a more limited extent). (ajs & Revvy,
  10617. ideas from Exophase & Terryn).
  10618. + Removed the bogus "F1 for Help" option from error dialogs,
  10619. and finally got rid of the "** BETA **" banner on title
  10620. boards in play mode.
  10621. + Obsoleted support for the AMS, DBM, DMF, MDL, MT2, PSM, PTM
  10622. and UMX module formats. As noted for several versions in the
  10623. help file, these are not loadable by MikMod. It is extremely
  10624. unlikely any game uses these obscure formats, but denying
  10625. their use is now enforced (at a robotic level).
  10626. + Fixed crash when writing to an MZX string at an illegal
  10627. offset (< 0).
  10628. + Fixed returning from a subroutine invoked by a jump from a
  10629. MZX text box class command so that it no longer skips the
  10630. next impending line (after the text box).
  10631. + Assembled single non-alphanum/punctuation characters as
  10632. bytecode CHARACTER instead of bytecode STRING. Fixes bogus
  10633. auto-quoting for commands like SCROLL CHAR (Revvy).
  10634. + Switched the Win32 package back to using the "windib" SDL
  10635. video driver, instead of the "directx" SDL video driver. The
  10636. windib.bat file has been replaced with directx.bat, which has
  10637. opposing semantics.
  10638. + SAM/GDMs with converted WAV/S3M counterparts of zero length
  10639. will be automatically re-converted. This hack can be used to
  10640. procedurally regenerate WAV files from SAMs, or transparently
  10641. work around on-disk corruption.
  10642. + Strings are now limited to a maximum length of 1M. I'm open
  10643. to suggestions over a better limit, but there must be a limit
  10644. (set "$string.X" notation grows a string arbitrarily, so
  10645. robotic can crash MZX when a string is resized beyond a
  10646. reasonable limit).
  10647. + Strings, when grown, will fill gaps with ' ' instead of
  10648. garbage. This can be useful when the string grows after using
  10649. the set "$string.X" notation; the rest of the string is no
  10650. longer garbage, allowing the debugger to be used.
  10651. + A robot that does a "put c?? Thing p?? [dir] player" and
  10652. overwrites itself will no longer leak commands. Instead, if
  10653. the robot overwrites itself, its program will end.
  10654. + Fixed message edges always showing up black, instead of
  10655. whatever color 0 is. (Revvy)
  10656. + Changed starting/max health and lives minimum to 1 instead of
  10657. 0. (Revvy)
  10658. + Some help system (F1) bugs have been fixed, hopefully
  10659. mitigating some of the crashes people have been seeing.
  10660. + Fixed a bug on Linux where fclose() on a robot-opened file
  10661. could, on world reload, occassionally crash (due to a stale
  10662. handle). Fixes loading Taoyarin saves multiple times in a
  10663. row.
  10664. + The new option "gl_vsync" has been added to allow the SDL
  10665. "flip on vsync" in the OpenGL renderers to be forcibly
  10666. enabled or disabled. This fixes a problem where speed 1 would
  10667. only be as fast as the video refresh rate.
  10668. + Setting the music volume to 0 (when using the ModPlug engine)
  10669. now ensures that no music is audible. Previously, setting the
  10670. volume to 0 would be equivalent to setting the volume to 1,
  10671. which was still audible.
  10672. + Upon exiting the initial load screen, and not entering the
  10673. editor, the screen is now updated. This fixes rendering
  10674. glitches in the MZX game window when overlapping the window
  10675. with another, at the slight expense of CPU time.
  10676. + If loading a save game from the title screen (or when no
  10677. world has been loaded) MZX no longer sends JUSTENTERED to all
  10678. robots. This restores compatibility with MZX 2.70 and is
  10679. consistent with loading a save from another board.
  10680. + Counters with 10 digits and a negative sign are no longer
  10681. truncated in the debug menu.
  10682. + Correctly clamped (rather than truncating) the value passed
  10683. through to a SET COLOR. Restores compatibility with 2.70, and
  10684. fixes Xenogenesis.
  10685. + Improved clipboard copy behaviour on Linux. Some actions are
  10686. still mysteriously broken.
  10687. + Fixed replacing with a blank string in conjunction with the
  10688. replace all Ctrl+F action in the robot editor. The cursor can
  10689. now no longer become negative, fixing numerous possible
  10690. crashes on search/replace.
  10691. + Fixed loading the intrinsic SMZX palette when switching to
  10692. SMZX modes from a game not in the same directory as the
  10693. "smzx.pal" file.
  10694. + Reloading a world that requires switching between SMZX and
  10695. non-SMZX modes will now respect the world's intrinsic palette
  10696. on the title screen. Fixes problems loading non-SMZX games
  10697. after having an SMZX game loaded.
  10698. + Clamped array offsets on boards. Some older MZX worlds are
  10699. corrupted and have the endgame_{x,y} coordinates outside of
  10700. the limits of the endgame board. Fixes "Fourth Power".
  10701. + Where possible, versioned all counters that the port
  10702. understands. This ensures that in the unlikely case that a
  10703. game made with an older version of MZX (actually, with an
  10704. older world magic) uses a counter that did not exist in that
  10705. game's era, the port will no longer try to interpret it.
  10706. Previously, only rid? and key? were versioned.
  10707. + SAV files will now be stamped with the world magic of the
  10708. world they were loaded from. This allows compatibility hacks
  10709. to apply to SAV files as they would to worlds (ajs, Terryn,
  10710. Mr_Alert).
  10711. + Added LOAD_MENU counter like ENTER_MENU, F2_MENU et al. to
  10712. allow control (from Robotic) over whether the LOAD_MENU can
  10713. be brought up.
  10714. + Made FREAD_COUNTER and FWRITE_COUNTER read in a DOS dword
  10715. (32bit) instead of a DOS word (16bit). This allows modern
  10716. post-port MZX counters to be fully represented in files.
  10717. Compatibility with older worlds is preserved.
  10718. + Added a new config option "board_editor_hide_help" which
  10719. changes the default hide setting of the help text on the
  10720. primary board editor.
  10721. + Numerous fixes for bugs found by valgrind. (Nightwatch)
  10722. + Icon support is now fixed and works on all platforms. On
  10723. Windows, the icon cannot currently be changed (it is loaded
  10724. from the EXE's resource section). Use ResHacker if you really
  10725. want to change it.
  10726. + Fixed a bug where either LOAD_ROBOTn or LOAD_BCn (where n was
  10727. equal to ROBOT_ID) would alter the robot's line number rather
  10728. than completely restart it. Due to complexities in robot
  10729. context, this lead to the first line being skipped.
  10730. + Added a new tool "downver" which supports drag-and-drop
  10731. downgrading of a world or board from the version of MZX it is
  10732. packaged with to the previous version of MZX. This tool may
  10733. be unsafe to use -- be careful.
  10734. + Fixed a bug in the robotic assembler which would
  10735. occassionally emit corrupt programs with SAVE_ROBOT. These
  10736. programs, if loaded by LOAD_ROBOT, could cause a crash.
  10737. + Added a config.txt (or command line) option "startup_editor"
  10738. which, if set to a non-zero value, will start MegaZeux in the
  10739. editor with a blank world.
  10740. + Fixed a bug where a robot's WALK processing, on entering a
  10741. transporter, could allow subsequent commands (such as GO) to
  10742. corrupt the board. WALK now ends the cycle in the special
  10743. case that a robot goes through a transporter.
  10744. + You can now directly import bytecode into the robot editor
  10745. via the Alt+I menu. The extension for the bytecode file must
  10746. be .bc for it to be loaded.
  10747. + A game loading SAVs via the LOAD_GAME counter will no longer
  10748. crash MZX if the SAV attempted is from an incompatible
  10749. version of MZX, or in any way corrupted.
  10750. + Fixed a crash when auto-completing lines that were greater
  10751. than 241 characters in length after completion.
  10752. + Added mouse pixel counters MOUSEPX and MOUSEPY. (Mr_Alert)
  10753. + Commenting a line of maximum length (241 characters) can no
  10754. longer grow the length of the line beyond this limit.
  10755. + Fixed a bug causing the software renderer to fail to center
  10756. when using a boxed fullscreen resolution. Also fixes a bug
  10757. where the PSP platform would ignore an override of the
  10758. force_bpp option. (Mr_Alert)
  10759. + Fixed a bug causing macros loaded from config.txt to be
  10760. expanded incorrectly. Relatedly, fixed a bug where #<string>
  10761. in the robot exitor would "disappear" on entry, if there was
  10762. no correspondingly named macro.
  10763. DEVELOPERS
  10764. + Builds no longer initialize the SDL audio subsystem if audio
  10765. is permanently disabled with --disable-audio.
  10766. + Added fixes for OpenBSD to allow PNG screenshots and X11
  10767. clipboard support to work. Tested with OpenBSD 4.2 and
  10768. GCC 3.3.5.
  10769. + Updated Win32 builds with SDL 1.2.13.
  10770. + Build and package two utilities, txt2hlp (for helpfile
  10771. generation) and checkres, on Win32.
  10772. + Dependencies are now correctly tracked in the build system.
  10773. Modifying a header will automatically regenerate the minimal
  10774. set of object files that depend on this header.
  10775. + Out of the box MSVC support. The file "msvc.zip" in the root
  10776. of the source package now provides a Visual Studio 2005
  10777. project and pre-compiled dependencies. There may be stability
  10778. issues with the resulting binary. See also the documentation
  10779. in arch/msvc/README.txt.
  10780. + The Nintendo DS port (a.k.a. 'dsmzx') has been merged. This
  10781. is the most exotic port thus far, and adds features such as
  10782. player focus (on the second display). Sound isn't working
  10783. yet, and large games still won't play (due to lack of
  10784. memory). See docs/nds.txt for more information. (kvance)
  10785. + Many stack-heavy functions have been de-bloated and allocate
  10786. large storage on the heap (if performance is not critical).
  10787. This helps out platforms with a small, fixed stack size (such
  10788. as NDS).
  10789. + The built-in help system can now be disabled for embedded
  10790. platforms. The startup check for the help file will not be
  10791. performed if the help system is disabled, and so this file
  10792. can be omitted from distributions.
  10793. + The package.sh script now supports OS X, PSP, GP2X and NDS
  10794. packaging.
  10795. + The OS X port no longer requires Xcode. The new build system
  10796. and package.sh can create a universal Application and
  10797. corresponding DMG file. The new infrastructure deprecates the
  10798. old macosx.zip method.
  10799. + Most of the internal dependency on SDL has been removed.
  10800. Therefore, MZX can be built (but not yet work) without SDL
  10801. present. The only remaining component to convert is MikMod,
  10802. but this can be disabled, so port authors can start using the
  10803. feature right away (see config.sh). (Mr_Alert)
  10804. <a class="helplink" href="#NEWINVER.HLP__1st">NEW in MegaZeux!</a>
  10805. <a class="helplink" href="#284CLOG.HLP__284">New in Versions 2.84 to 2.84c</a>
  10806. <a class="helplink" href="#281CLOG.HLP__281">New in Versions 2.81 to 2.81h</a>
  10807. <a class="helplink" href="#280CLOG.HLP__280">New in Versions 2.80 to 2.80h</a>
  10808. <a class="helplink" href="#OLDERVER.HLP__260">New in Versions 2.60 to 2.70</a>
  10809. <a class="helplink" href="#OLDESVER.HLP__201">New in Versions 2.01 to 2.60</a>
  10810. <a class="helplink" href="#NEWIN200.HLP__1st">New in Version 2.00</a>
  10811. <a class="helplink" href="#ANCENVER.HLP__1xx">New in Versions Through 1.03</a>
  10812. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  10813. <hr /></div>
  10814. <div class="helpfile" id="281CLOG.HLP">
  10815. <a class="helpanchor" name="281CLOG.HLP__281"> </a>
  10816. <p class="helpcentered"><span class="f9 ">New in Versions 2.81 to 2.81h</span></p>
  10817. December 8, 2007 - MZX 2.81h
  10818. Another bugfix release with a couple of new features, in time
  10819. for the Winter 2007 Dualstream Day of Zeux. The major new
  10820. features of this release are automatic module renaming in the
  10821. editor, PNG screenshots and many improvements to MZX on
  10822. embedded platforms (like PSP and DS).
  10823. MegaZeux can now be compiled in MZXRun mode (like the old DOS
  10824. implementation) and by disabling features such as unnecessary
  10825. renderers and audio support, can be made approximately 70%
  10826. smaller.
  10827. Thanks again to Terryn for relentlessly tracking down many
  10828. serious bugs; we've tried to fix all the issues that have crept
  10829. up in the last 5 months.
  10830. Thanks too to Exophase, Mr_Alert and Wervyn for contributing to
  10831. this release; your time and help is invaluable.
  10832. Happy Holidays!
  10833. USERS
  10834. + Added a more lenient WAV file loader so that ModPlug isn't
  10835. relied on as much to play malformed WAV files (mostly old SAM
  10836. conversions) (Mr_Alert).
  10837. + Added SCORE and mzx_speed to the counter debugger
  10838. (Mr_Alert, ajs).
  10839. + Added a 16-bit software renderer and a half-width renderer
  10840. for the GP2X port (Mr_Alert).
  10841. + Made the mouse cursor in the "opengl2" renderer look more
  10842. like the mouse cursor in the other renderers (Mr_Alert).
  10843. + Setting vlayer_size, vlayer_width or vlayer_height to values
  10844. less than or equal to zero would crash MegaZeux. Limited the
  10845. smallest vlayer size to 1x1.
  10846. + Setting vlayer_width or vlayer_height to a value larger than
  10847. vlayer_size would crash MegaZeux. Limited the largest size of
  10848. either dimension to a maximum of vlayer_size.
  10849. + If selecting a module with a non 8.3 filename, MZX will now
  10850. ask you if you want to rename it to 8.3, and do so in an
  10851. intelligent way. This means that music can be selected in the
  10852. editor and correctly saved (Wervyn).
  10853. + The OpenBSD compiler detected some serious string bugs in
  10854. MegaZeux. These have now been fixed and should eliminate some
  10855. more potential crashes.
  10856. + Fixed a bug where an ENERGIZER item or use of the INVINCO
  10857. counter would cause the original player color to be corrupted
  10858. at the end of the colour blitz.
  10859. + Fixed a long-standing bug where set "$string" to "FWRITEn"
  10860. would be cheerfully ignored.
  10861. + Fixed a bug where a corrupt robot list could crash MegaZeux
  10862. (e.g. the list from Star Quest from DoZ'02).
  10863. + FEATURE: Screenshots are now saved in a palettized PNG file
  10864. format. For platforms without libpng, PNG support can be
  10865. compiled out, and BMP will be used instead.
  10866. + Fixed a bug where changing boards in the editor could
  10867. sometimes corrupt memory, later causing a crash (either
  10868. testing or coming out of testing a board).
  10869. + Fixed a sensor bug that happens when a sensor can't go
  10870. anywhere it is told to, and the player is on it (Exophase).
  10871. + Fixed using ABORT LOOP in some situations. Using it outside
  10872. of a loop still has undefined semantics and this has been
  10873. documented in the help file (Exophase).
  10874. + Setting a board option below its numeric limit is no longer
  10875. possible (Exophase).
  10876. + Fixed problems with going over Robot name character limits
  10877. using the .@ command (Exophase).
  10878. + Fixed problems with LOAD_ROBOT freezing on a robot with no
  10879. newline at the end of the file.
  10880. + Fixed a problem with "Replace All" in the robotic editor that
  10881. could sometimes cause a line to exceed 240 characters and
  10882. crash the editor.
  10883. + Fixed a problem with "Replace" in the robotic editor which
  10884. could cause a line to temporarily become 241 characters and
  10885. then truncate silently to 240 characters.
  10886. + Fixed a bug that caused the original game palette to be lost
  10887. when testing a game in the editor that switched between
  10888. Regular/SMZX1 and SMZX2/3 modes. MegaZeux should now try much
  10889. harder to preserve the user palette, regardless of game
  10890. edits.
  10891. + Fixed a bug causing board switching to not correctly alter
  10892. the x,y viewport scroll leading to the display of raw memory
  10893. and potential crashes, with differently sized boards.
  10894. + Fixed stack corruption caused by SCROLL CHAR SOUTH, detected
  10895. by Ubuntu's SSP (Stack Smashing Protection) enabled binary.
  10896. DEVELOPERS
  10897. + Made the build system less verbose by default (like Linux).
  10898. This should help make warnings (due to coding errors) easier
  10899. to identify. If you don't like the new syntax, or need the
  10900. command debug, you can build with "make V=1".
  10901. + Updated Win32 builds with SDL 1.2.12.
  10902. + Rewrote the build system to not use recursive Makefiles.
  10903. Variable propagation was starting to be a problem, and
  10904. recursive designs are generally discouraged.
  10905. + Refactored the graphics rendering code to modularize the
  10906. renderers and reduce code duplication (Mr_Alert).
  10907. + GDM2S3M switched over to use inttypes.h instead of home-brew
  10908. types.
  10909. + MegaZeux now compiles on OpenBSD (and probably other BSDs).
  10910. + Made all unnecessary global symbols static. This should
  10911. improve compiler optimisations and correctness (Mr_Alert,
  10912. ajs).
  10913. + Fixed compilation of MegaZeux against SDL 1.3 SVN. However,
  10914. this SDL version is still in development, and MegaZeux does
  10915. not work correctly when compiled against it.
  10916. + MegaZeux now builds with the experimental MINGW-x64 branch,
  10917. enabling x64 binaries for Windows.
  10918. + MegaZeux now builds with MSVC if you apply the patch from
  10919. contrib/,megazeux-r326-replace-c99-variable-arrays-with-
  10920. malloc-free.diff . This patch is required for MSVC because it
  10921. makes non-compiler-specific changes (which involve converting
  10922. from C99 variable length arrays to malloc/free) which are
  10923. slower and should not be used with competent C99 compilers
  10924. like GCC. Microsoft Visual C++ Express Edition 2005 was used
  10925. to build libogg, libvorbis, libsdl and MegaZeux itself. Only
  10926. 32bit builds were tested.
  10927. + MegaZeux now has size optimisations which can reduce binary
  10928. size when features are disabled. For example, all renderers
  10929. can now be disabled, and when module engines are disabled,
  10930. audio will not export any symbols.
  10931. + The entire audio subsystem can now be disabled. This further
  10932. reduces binary size on embedded platforms. However, SFX
  10933. editing still remains enabled (though useless) until editor
  10934. modularity is implemented.
  10935. + The PSP port is now officially supported, and compiles out of
  10936. the box. See docs/psp.txt.
  10937. + Renamed macos platform "darwin", to reflect its true nature
  10938. (use Xcode to build as a real Application, instead of just a
  10939. UNIX binary). Also fixed some bogosities with robo_ed's X11
  10940. includes on OS 10.5.
  10941. + The editor can now be disabled, a la MZXRUN from the old DOS
  10942. versions. Configure with --disable-editor to shrink MZX by
  10943. about 150k.
  10944. + MegaZeux can now be compiled with size optimisations
  10945. (--optimize-size to config.sh) for a 20% space saving.
  10946. + MegaZeux's core now builds with -W (basically all GCC
  10947. warnings) plus some additional warnings that aren't switched
  10948. on by this flag. All warnings have been fixed.
  10949. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  10950. July 4, 2007 - MZX 2.81g
  10951. Again, no significant new features have been introduced in this
  10952. release. However, there have been many essential bugfixes,
  10953. including improved compatibility with games made in older
  10954. versions of MegaZeux.
  10955. Additionally, improvements have been made to the opengl2 and
  10956. overlay2 renderers, improving performance for most users. A
  10957. port of MegaZeux to the GP2X console has been added. MegaZeux
  10958. has been backported to C (rather than C++) and can operate
  10959. correctly on a CPU without a floating-point unit.
  10960. Particular thanks go out to Mr_Alert (for his valuable bug
  10961. fixes), Lancer-X (for fixing what I was too lazy to) and Terryn
  10962. (for finding many annoying bugs that nobody else could).
  10963. USERS
  10964. + Fixed a bug in the audio code. The linear resampler was not
  10965. taking volume into account, which broke changing the volume
  10966. of samples (WAV and Vorbis) which cannot natively alter their
  10967. volumes.
  10968. + Fixed a regression in the overlay editor caused by the new
  10969. editor space semantics.
  10970. + Screenshots are now rendered to a separate texture using the
  10971. 8bit software renderer. This means that the hardware scalers
  10972. will not affect the quality of the screenshot. It also fixes
  10973. a bug when using opengl2, which would dump only a white
  10974. screen.
  10975. + Temporarily reverted a bugfix that broke Zeux IV - Forest of
  10976. Ruin. I'm not dropping the bugfix, I just can't immediately
  10977. see what's wrong.
  10978. + Fixed a bug where setting the viewport to negative
  10979. coordinates would crash MegaZeux. There was code to handle
  10980. this, but it was wrong.
  10981. + Fixed a bug that permitted the mouse y coordinate to be
  10982. warped to row 25, which does not exist. This bug caused some
  10983. of the renderers to crash, and the software renderer to draw
  10984. in memory it did not possess.
  10985. + Fixed a bug where games made before 2.68 could have available
  10986. the "key?" counters, unsupported in that version. This caused
  10987. collisions with counters with the key? name used with
  10988. inc/dec/mul/div/mod. Fixes "Doom Keep".
  10989. + Imported libmodplug 0.8.4, which adds MIDI/PAT and ABC format
  10990. support, fixes some bugs in the mixer, and should build on
  10991. more platforms.
  10992. NOTE: MID files currently cannot be selected in the editor,
  10993. because they do not play correctly.
  10994. + Improved the performance of the "opengl2" renderer, by
  10995. removing the convoluted 3D drawing commands and replacing
  10996. them with 2D ones. Reduced the quad count by using an
  10997. intermediary 80x25 texture. MegaZeux now depends on fewer GL
  10998. features. [LogiCow]
  10999. + Introduced an "fsafegets" to work around problems where
  11000. robots exported by a Windows version of MegaZeux would not
  11001. load on other platforms. This was due to differing EOL style
  11002. and broke at least one game (Termination).
  11003. + Renamed "force_resolution" to "fullscreen_resolution" to
  11004. better match its semantics with the scaling renderers. The
  11005. new name is less accurate for software render modes, but most
  11006. people using software will not want to change it from the
  11007. default anyway.
  11008. + Fixed a bug where the variable-length string allocator would
  11009. prematurely bail out when reading a string (of indeterminate
  11010. length) from a file with the set "$var" to "FREAD" syntax.
  11011. + Fixed a bug where more than 256 errors would crash the
  11012. robotic checker.
  11013. + Improved performance of the overlay2 (faster) renderer
  11014. (Mr_Alert).
  11015. + Made the transparent overlay "really" transparent when used
  11016. in conjunction with sprites (Mr_Alert).
  11017. + Fixed a bug reported by Mr_Alert where MZX would not handle
  11018. short, non-looping mods in the editor. The editor would try
  11019. to destroy the mod again, even after the callback had
  11020. destroyed it (premature termination).
  11021. + Fixed a bug with SWAP WORLD where file translation would
  11022. occur but the result would mistakenly not be used. This broke
  11023. some uses of SWAP WORLD on non-Windows platforms (Mr_Alert).
  11024. + Fixed a bug where using JUMP to MOD ORDER right after
  11025. switching boards would fail due to the board music not having
  11026. been loaded yet (Mr_Alert).
  11027. + Fixed a bug where games made before 2.80 would inadvertently
  11028. trigger "PLAYERHURT" due to using the SET command to reduce
  11029. the amount of health (Mr_Alert).
  11030. + Fixed a bug where player clones were generated when entering
  11031. transports during FREEZETIME (Lancer-X).
  11032. + Debug menu is now eradicated on leaving the editor
  11033. (Lancer-X).
  11034. + Debug menu is now properly painted over when the board size
  11035. is < the editor viewport. Fixes various graphical glitches
  11036. (Lancer-X).
  11037. + Fixed a crash bug when playing older MZX games from read-only
  11038. media (such as a CD) or where file-system permissions
  11039. prohibited creating SAM conversions (Lancer-X).
  11040. + Fixed bug where certain file formats would not be
  11041. automatically converted if their extensions were mixed or
  11042. upper case (e.g. OGG/SAM/GDM).
  11043. + Restored functionality of "if lasttouch DIR" which has been
  11044. broken since MZX 2.02.
  11045. + Fixed a bug where attempting to decrypt a read-only world
  11046. file would result in a crash (Mr_Alert).
  11047. + Fixed several bugs where an error loading a world file would
  11048. result in crashes in several different situations (Mr_Alert).
  11049. + Fixed a bug where a robot using the BECOME command to change
  11050. into a PushableRobot or vice versa would freeze (Mr_Alert).
  11051. + Fixed memory leaks in the file selection dialog, the counter
  11052. debugger, the collision list and the global robot (Mr_Alert).
  11053. + Updated counter list (see docs/counter_list.txt in the
  11054. source) (Terryn).
  11055. + Fixed a bug where pressing escape when editing the effect of
  11056. a ring or potion would result in an invalid parameter which
  11057. would later cause a crash if edited again (Mr_Alert).
  11058. + Fixed a bug in which robot-driven text boxes using option
  11059. commands (the ? command) could overflow by two characters and
  11060. spill over the side (Lancer-X).
  11061. + Fixed the list box searching mechanism (used in the file
  11062. manager and F11 counter list) and made the existing function
  11063. more understandable. (Lancer-X).
  11064. + Fixed a bug in which the message string given to the 'ask'
  11065. command could spill over. Now, the 'ask' dialog resizes if
  11066. possible, and clips when no further resizing can be performed
  11067. (Lancer-X).
  11068. + Clipped the 'input string' message properly, to prevent
  11069. similar overflow.
  11070. + Fixed a bug with the EXPLODE, DIE, DIE ITEM and BECOME
  11071. commands when used with the global robot (would clear the
  11072. global robot, eventually corrupting memory when in the
  11073. editor). Presumably, these commands are bogus for the global
  11074. robot, and have been disabled.
  11075. DEVELOPERS
  11076. + Rewrote config.sh to use POSIX sh compatible functions, so
  11077. that there is no dependency on the BASH interpreter.
  11078. Surprisingly, some distributions still don't enable BASH by
  11079. default (using csh, ash or zsh instead).
  11080. + Ported most of MegaZeux back to C. Many more changes were
  11081. required than I anticipated; MZX was using more C++ features
  11082. than I expected. The only exception is audio.cpp, which
  11083. cannot be ported back to C because it uses ModPlug's C++
  11084. classes directly (but I plan to split this file up shortly).
  11085. NOTE: The changes required were enormous, so I might have
  11086. introduced some weird bugs! Please test!
  11087. + Enabled GCC's -W flag for even more warnings, switching off
  11088. unused parameter warnings (useful for delegates). Mostly
  11089. typing fixes, but it found a bug in string handling.
  11090. + No longer suppresses char-subscript warnings, and fixed up
  11091. any remaining abuses in the tree.
  11092. + Added manpages for 'megazeux' and other binaries for the
  11093. Debian packages. Complied with the Debian packaging
  11094. guidelines by providing a copyright note, listing significant
  11095. contributors to MegaZeux.
  11096. + Added support to the build system for supporting icons
  11097. modularly. See contrib/icons/README for more information.
  11098. + The debug build (make DEBUG=1) now enables GCC 4.x's stack
  11099. protector. This breaks compatibility with GCC 3.x, but you
  11100. can just remove the flag if you don't want to use it (the
  11101. stack protector will improve stack corruption detection and
  11102. provide more usable debug traces).
  11103. + Custom Random() implementation to provide a more uniform
  11104. number distribution. Factored out for future (better)
  11105. implementations.
  11106. + The audio backend (audio.cpp) has been modularised to support
  11107. the use of mikmod instead of modplug. This should enable
  11108. ports of MZX to platforms without an FPU, and improve
  11109. performance on platforms with weak FPUs.
  11110. + Added GP2X port to config.sh, based on work done by Simon
  11111. Parzer.
  11112. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  11113. January 30, 2007 - MZX 2.81f
  11114. This release is mostly about the new renderers, the first of
  11115. which was introduced in the previous version. There's also a
  11116. few important bugfixes, and a lot of internal tidy-up work. I'd
  11117. like to thank Mr_Alert, Quantum P. and LogiCow for contributing
  11118. to this release. Thanks guys.
  11119. USERS
  11120. + Renamed the force_32bpp config option to force_bpp, in
  11121. preparation for 16bit OpenGL render modes. This option now
  11122. takes 8, 16 or 32. 16 is reportedly broken on Windows, so
  11123. stick to 32 for now.
  11124. + Added infrastructure for "pluggable" renderers. This code
  11125. isn't perfect, but it's far better than the mess in 'e'.
  11126. Defaults to the 'software' render mode.
  11127. + Added Logicow's alternative OpenGL renderer. For more
  11128. information about this renderer, see config.txt. NOTE: This
  11129. code may be buggy! Please test!
  11130. + Added Mr Alert's YUV overlay renderers. One does full YUV
  11131. macropixel approximation, the other (faster) render does
  11132. chroma supersampling. See config.txt for more information.
  11133. NOTE: This code may be buggy! Please test!
  11134. + Simplified Exophase's OpenGL renderer present in 'e', and
  11135. fixed a few bugs that caused it to not work for some people.
  11136. + Really made MegaZeux use 'directx' by default on Windows. The
  11137. code in 'e' was non-functional. Use 'windib.bat' to run
  11138. MegaZeux with the SDL windib driver.
  11139. + The OpenGL renderers now have a 'filter' option that allows
  11140. you to choose linear (where pixels are interpolated, looks
  11141. "blurred") or nearest (where nearest-neighbour approximation
  11142. occurs, looks "sharp").
  11143. + Mouse warping was broken when using any of the hardware
  11144. renderers. There should be code in there now to take account
  11145. of this (thanks Mr_Alert).
  11146. + Added an option 'editor_spaces_replace' which allows you to
  11147. revert MZX's space overwrite behavior to the semantics of 'd'
  11148. (the feature was removed in 'e'). By default, the behavior is
  11149. unchanged (the same as 'e').
  11150. + F6 (the debug menu) can now no longer be enabled anywhere but
  11151. in the editor Alt-T test mode. In 'e', it was possible to
  11152. enable on the title screen, but could not be enabled in a
  11153. game. Like the cheats, this option is now visible only in
  11154. test mode.
  11155. + Fixed a bug where the global robot could be exited via some
  11156. legal commands, in an abnormal fashion. The bug resulted in
  11157. all the code up to the offending command being executed over
  11158. and over.
  11159. + Fixed a bug in the audio code. The linear resampler was not
  11160. taking volume into account, which broke changing the volume
  11161. of samples (WAV and Vorbis) which cannot natively alter their
  11162. volumes.
  11163. + Fixed a regression in the overlay editor caused by the new
  11164. editor space semantics.
  11165. + Temporarily reverted a bugfix that broke Zeux IV - Forest of
  11166. Ruin. I'm not dropping the bugfix, I just can't immediately
  11167. see what's wrong.
  11168. + Screenshots are now rendered to a separate texture using the
  11169. 8bit software renderer. This means that the hardware scalers
  11170. will not affect the quality of the screenshot. It also fixes
  11171. a bug when using opengl2, which would dump only a white
  11172. screen.
  11173. - The force_height_multiplier option has been removed. A lot of
  11174. code wasn't properly designed to handle it, there have been
  11175. mouse warp bugs with it for years, and nobody seems to use
  11176. it. If people want stretching, they can choose one of the
  11177. four hardware renderers to achieve this.
  11178. - Removed the 'lame/1337' menu feature.
  11179. DEVELOPERS
  11180. + OpenGL can now be disabled via config.sh. This allows
  11181. MegaZeux ebuilds to be constructed on systems that do not
  11182. have any form of OpenGL support. (Although MZX runtime loads
  11183. the OpenGL library, 'e' required the headers to build
  11184. correctly. This is now no longer the case.)
  11185. + On Windows, due to an ATi driver bug, I have provided a means
  11186. of linking directly to opengl32.dll, instead of relying on
  11187. the dynamic loader. This reduces binary portability, but
  11188. fixes many bug reports of being unable to fullscreen on ATi
  11189. video cards. See OPENGL_LINKING for more information.
  11190. + Improved support for cross compiling with mingw32 on Linux,
  11191. combined the win32 Makefile with this new support.
  11192. + Rewrote the config.sh script. All of the options have
  11193. changed, and the broken platform auto-detection has been
  11194. removed. See ./config.sh for more information.
  11195. + Rejigged MegaZeux's headers so that they can be used in both
  11196. C and C++ mode. Renamed fsafeopen.cpp to fsafeopen.c.
  11197. Hopefully by 'g' most of MegaZeux should be ported back to C,
  11198. instead of the "C++" it is now.
  11199. + Fixed up the 'txt2hlp' utility which Terryn has been using a
  11200. version of to build the internal MZX help system. This binary
  11201. is built in the source distribution, but it is not
  11202. distributed with the MegaZeux binaries.
  11203. + Moved some antiquated Greg code out into 'old'. No attempt
  11204. has been made to make it compile, it is provided purely for
  11205. reference.
  11206. + For the windows binaries, "windib.bat" is now generated by
  11207. package.sh and auto-generated for the name of the MegaZeux
  11208. executable.
  11209. + Updated Xcode package from Quantum P. (see macosx.zip).
  11210. + Fixed an invalid assumption in config.sh where /bin/sh was
  11211. chosen as the shell script interpreter. This should have been
  11212. /bin/bash, as 'sh' is not required to support functions,
  11213. which config.sh uses.
  11214. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  11215. January 19, 2007 - MZX 2.81e
  11216. + Made grabbing in the editor not combine background color
  11217. - only uses "special" in game colors for player. tell me if
  11218. anything ends up being weird because of this.
  11219. + Possibly fixed an obscure bug where moving something happened
  11220. immediately if it was sent to a label by a robot further
  11221. east/south than it and it moved north or west (has to do with
  11222. the way robots are reverse scanned). Tell me if this changed
  11223. any behavior for the worse and I'll change it back or try to
  11224. work out something new.
  11225. + Added GDMs to ctrl + n; this will, of course, auto convert
  11226. and play the s3m.
  11227. + Added ability to preset player locked status from board
  11228. settings.
  11229. + Instead added ability to debug variables (counters and
  11230. strings) ingame with F11. There's also an option to export
  11231. the current variables to Robotic program that sets them.
  11232. + Fixed bug where moving a block with the player into an
  11233. overlapping region leaves a space where the player was.
  11234. + Fixed bug with a robot indirectly sending itself to a
  11235. subroutine via send all or send name causing it to loop the
  11236. send.
  11237. + Added compatability hacks for key# prior to MZX 2.69 worlds
  11238. and ridNAME falling through in MZX 2.70 and earlier worlds.
  11239. + F6, F7, F8, and F11 debug/cheat keys only work in editing
  11240. mode now (as things were prior to the port) You can still
  11241. save/load in the editor so if you want all of these things
  11242. you can play the game from the start there.
  11243. + Space in the editor no longer deletes something of similar
  11244. type that is beneath; not sure what the point of this was
  11245. anyway.
  11246. + Fixed bug causing cursor to clipped be out of bounds in SMZX
  11247. char editor if changing to smaller multichar edit region.
  11248. + Accidentally messed up screen centering in fullscreen for
  11249. 32bpp mode, fixed.
  11250. + Added hardware scaling option. You can now supply a window
  11251. resolution besides 640x350 and allow for window resizing if
  11252. hardware scaling is on; this will also scale fullscreen
  11253. output to fill the entire screen. This can slow down
  11254. rendering somewhat.
  11255. + Fixed bug causing flip block to crash in the editor.
  11256. + Made blocked directions relative to the player for put dir
  11257. player.
  11258. + Fixed bug where putting something to a direction relative the
  11259. player overwriting the robot could crash MZX.
  11260. + Fixed ability to input in input boxes by clicking on their
  11261. question string.
  11262. + Removed the bogus patch to Modplug and correctly fixed it in
  11263. the build system.
  11264. + Added 'debian' subdirectory for building Debian and Ubuntu
  11265. upstream packages. Hopefully MegaZeux will be in the primary
  11266. pool in a few months.
  11267. + Added OS X xcode project files (see 'macosx.zip'). Fixed many
  11268. bugs relating to endian that caused MegaZeux to be buggy on
  11269. big-endian architectures (like PPC). Credit goes to Quantum P
  11270. for finding these bugs and engineering high quality
  11271. solutions.
  11272. + Made 'directx' the default video render again on Windows.
  11273. NOTE: This overrides the default SDL behaviour, but will not
  11274. be applied if you set SDL_VIDEODRIVER yourself.
  11275. + Repaired the 'linux-static' target so that it no longer
  11276. includes a system C++ library, which caused unpredictable
  11277. results on distros without a static version.
  11278. + Fixed a locking bug with the audio code that caused hangs at
  11279. startup on OS X. Also provided a mutex implementation using
  11280. GNU pthreads as a temporary workaround for an SDL bug on the
  11281. Linux platform.
  11282. + Added PlayStation Portable (PSP) port. This code was written
  11283. by Exophase and is highly experimental. It may not work at
  11284. all for you. Please see docs/build.txt for more information
  11285. regarding this port.
  11286. + Fixed mouse movement from being affected by height_multiplier
  11287. when not in fullscreen mode.
  11288. + Fixed height_multiplier config.txt option allowing you to
  11289. enter really stupid values (like negatives, 0, and values too
  11290. large for the resolution).
  11291. + Added in an extra video mode check to stop MZX from crashing
  11292. on video modes that the video card can not reproduce.
  11293. + Fixed Avalanche to a constant placement rate of 1/18 (this
  11294. caused MZX to deliver an uneven number of boulders, and to
  11295. crash with certain board sizes).
  11296. + Fixed sprite collision box to stop MZX from crashing when
  11297. stupid values are entered.
  11298. + Fixed setting the viewport size to weird values like some old
  11299. MZX games do.
  11300. + Default fullscreen resolution is now 640x480; this can be
  11301. changed in config.txt .
  11302. + The config.txt option force_32bpp is now enabled by default.
  11303. + Seeking with mod_position when using a .WAV file as
  11304. background music fixed (thanks Mr_Alert).
  11305. - Removed ability to change SMZX mode ingame (F11).
  11306. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  11307. December 10, 2006 - MZX 2.81d
  11308. NOTE: This release was made by Alistair Strachan (ajs) and not
  11309. by Exophase. As such, any problems present in this
  11310. release that were not present in 2.81c should be reported
  11311. directly to ajs.
  11312. + Fixed a compilation failure on Linux, due to SDL no longer
  11313. depending on libX11. Now we manually link X11 into MZX if
  11314. necessary.
  11315. + Various build system improvements, fixing bugs in the
  11316. prefixing of dependencies.
  11317. + New libmodplug 0.8 imported, fixing many endian problems on
  11318. big-endian machines, integrating all of our local patches to
  11319. 0.7.
  11320. + Fixed bug causing MZX to freeze when starting up on Win9x
  11321. machines.
  11322. + Fixed a warning generated by GCC 4.1.
  11323. + Updated the GPL boilerplates project-wide to the newest FSF
  11324. address.
  11325. + Fixed a string range check causing an obscure crash in
  11326. certain games.
  11327. + Updated the build.txt documentation.
  11328. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  11329. December 14, 2005 - MZX 2.81c
  11330. + Oops, accidentally broke shift + F2. Fixed that.
  11331. + Also accidentally broke &+counter& for full hex
  11332. representation. Fixed.
  11333. + Fixed memory leak problem with playing certain WAVs in a
  11334. loop.
  11335. + Fixed inconsistency of bad viewport sizes behaving
  11336. differently on current versions from old DOS versions.
  11337. + Accidentally broke joystick stuff in config.txt (has to do
  11338. with way configure options were being read), fixed.
  11339. + Fixed bug causing crash when loading MZBs larger than the
  11340. current board size.
  11341. + Made cursor hidden in alt + V in editor.
  11342. + String comparison failed with nulls in the strings, fixed.
  11343. Also should be slightly more optimal.
  11344. + Fixed bug when using negative numbers for
  11345. if sprite_colliding "counter".
  11346. + Fixed math operations (inc, dec, etc) not working on string
  11347. indeces.
  11348. + Added ability to force screen to 32bpp. Fixes some slight
  11349. rendering issues, and if you have problems with fullscreen
  11350. let me know if this helps (try it without first though). See
  11351. force_32bpp in config.txt.
  11352. + Fixed sprite clipping bug with respect to overlay.
  11353. + Fixed bug where pressing enter on things besides robots,
  11354. scrolls/signs, or sensors in the editor would clear whatever
  11355. was underneath it.
  11356. + Accidentally broke SFX with optional PC speaker chains
  11357. (played both, should only play PC speaker when digital music
  11358. is off, fixes Bernard the Bard).
  11359. + Made last character in char selection for F3 and alt + C
  11360. remembered (note that they're remembered in two different
  11361. places for both).
  11362. + Accidentally broke life animations, fixed.
  11363. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  11364. November 26, 2005 - MZX 2.81b
  11365. + Fixed inability to make proper .savs of worlds with strings.
  11366. (they'd crash when loaded..)
  11367. + Fixed PC speaker audio bug causing a constant high pitched
  11368. noise to be played instead of PC speaker audio sometimes.
  11369. + Fixed some issues with long pathnames.
  11370. + Fixed a bug causing Caverns to crash in recent versions (long
  11371. story, it was most likely due to an error in ver1to2).
  11372. + Now when you set mzx_speed in a game you can no longer change
  11373. the speed from the F2 menu. Setting mzx_speed to 0 reallows
  11374. this (and doesn't set the speed).
  11375. + When loading a game its speed is now set to the speed MZX
  11376. started with (whatever's in config.txt, or the default of 4).
  11377. + Added backup_ext config.txt option to specify the extension
  11378. of backup files (default is .mzx).
  11379. + Fixed backup_interval for config.txt possibly being broken.
  11380. + Fixed a bug messing up the death board on some old MZX games
  11381. (like Nick Brick 2)
  11382. + Escaped more things and made displays always in escaped form
  11383. for certain character sequences. It should be impossible to
  11384. type non-escaped forms. The following should be used:
  11385. \0 for 0 (this probably won't work in strings, but in chars
  11386. should)
  11387. \t for tab (character 9)
  11388. \n for newline (character 10)
  11389. \r for carriage return (character 13)
  11390. \" for double quote
  11391. \\ for slash
  11392. + Copy + paste on escaped character won't unescape them
  11393. anymore.
  11394. + Fixed error message for invalid lines in Robotic.
  11395. + Fixed inability to import text files from other directories.
  11396. + Huge overhaul of the source (proper types for things,
  11397. directions, equalities, conditions, chest items, and
  11398. potions), if anything is suddenly broken now let me know.
  11399. + Made scrolls/signs only display text (letters, numbers, etc).
  11400. in the default char set. That should be enough for now.
  11401. + Added mousewheel support for robot editor and robot box
  11402. display.
  11403. + Fixed inability to load MZMs from other directories in the
  11404. editor.
  11405. + Wrapped audio stuff in proper mutex, hopefully this fixes
  11406. some issues (like crashing when changing mod_frequency a
  11407. lot).
  11408. + Long current directory paths no longer write out too much in
  11409. the file loader (instead the last bit is shown with a ...
  11410. prefixing the beginning)
  11411. + Decided to be nice and make board_scan not crash. Don't use
  11412. it. It's only there to make one legacy game work. If you use
  11413. it I will personally scold you. And don't tell other people
  11414. to use it (that means you CJA). Use
  11415. copy block x y w h "$str" t
  11416. instead. If you don't know what that means read the help
  11417. file, it explains everything.
  11418. + Removed ability to copy + paste after changing board
  11419. dimensions of the source under any circumstances (alt + R,
  11420. alt + Z, import world, import board).
  11421. + Fixed appearance of ghosts in F10 menu.
  11422. + Prevented char editor from counting moving the cursor as an
  11423. undo step if nothing was actually drawn.
  11424. + Made pressing escape on initial char selection/board
  11425. selection/param selection for things cause it to cancel
  11426. placing anything.
  11427. + Made it impossible to set board width/height to 0 again
  11428. (oops).
  11429. + Made starting lives and starting health take effect
  11430. immediately for the first alt + t.
  11431. + Added ability to play OGG from alt + l (but not the other
  11432. mods, don't want to clutter that up).
  11433. + Made it so if no note follows an embedded SAM in a play
  11434. string it's played at native frequency.
  11435. + Accidentally made loading worlds in the editor not change the
  11436. current directory, fixed that.
  11437. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  11438. November 20, 2005 - MZX 2.81
  11439. + Fixed a bug where MZX world/save names > 12 chars could cause
  11440. weird things to happen (like doors breaking).
  11441. + Fixed problems with help file/charsets loading when loading
  11442. MZX outside of the directory MZX is in. This should fix file
  11443. associations on Windows as well.
  11444. + Changed board selector so when board 0 is "(no board)" it
  11445. doesn't actually refer to the title but to no board.
  11446. + Made import world not overwrite the title string.
  11447. + Fixed bug that causes crash when trying to flood fill an area
  11448. with the color it already is in the SMZX char editor.
  11449. + Redid audio engine. Everything is unified now, meaning that
  11450. anything you can use as a mod you can use as a sam and
  11451. vice-versa.
  11452. + The new audio engine uses its own master resampler that has
  11453. three interpolation modes - see config.txt for more
  11454. information.
  11455. + sam 0 filename will play a file at its native frequency (note
  11456. that SAMs that have been converted from WAVs are set to be
  11457. played at 8363Hz).
  11458. + Added support for OGG vorbis audio files.
  11459. + Fixed bug causing SFX volume control in F2 menu to not work.
  11460. + Removed limitation on number of SAMs that can be played
  11461. simultaneously.
  11462. + Fixed bug where the mouse got "stuck" in the black border
  11463. edges of non 640x350 fullscreen resolutions.
  11464. + Fixed issues with message boxes being part default palette
  11465. part current palette, they now always use the current
  11466. palette.
  11467. + Added mod_position counter. What these actually set/return is
  11468. dependant on the type of file loaded. Modules use the current
  11469. row, OGGs use the current PCM sample.
  11470. + Added mod_frequency counter. There are a few things to note
  11471. here: Modules have a "nominal" frequency of 44.1KHz. Other
  11472. data types have their own nominal frequency to prevent output
  11473. from sounding differently depending on the audio_sample_rate
  11474. in config.txt. For OGGs and WAVs the nominal frequency is the
  11475. one the file is encoded at. Changing the frequency can cause
  11476. a noticeable one time popping sound, so it might not be
  11477. desirable to slide it. This is much more prominent with
  11478. lowering the frequency than raising it. This value is capped
  11479. so it can't reach below 16.
  11480. + Changed alt + L to play back at natural frequency instead of
  11481. 8363Hz.
  11482. + Fixed bug causing sensor deletion while the player is on top
  11483. to destroy the player.
  11484. + Fixed bug causing imported boards to possibly crash after
  11485. being tested.
  11486. + Fixed bug causing save_game and save_world to not work if a
  11487. file with the given name isn't already present.
  11488. + Changed function counter matching removing restriction on
  11489. number of digits for parameters. 10+ digit inputs should no
  11490. longer fail (for instance, abs-123456789)
  11491. + Made counter/string names internally variable length instead
  11492. of a fixed 14 chars. There is now no longer a name length
  11493. limitation.
  11494. + Changed alt+8 for mod * to just * in the hotkey listing.
  11495. + Fixed crash when referencing (by param) sprites > 256.
  11496. + The string system has been redone. Strings are now
  11497. dynamically sized and don't have an artificial maximum
  11498. length. Writing to string.N will guarantee that the size of
  11499. the string becomes at least N, while reading in this way will
  11500. return 0 if out of bounds to maintain the illusion of null
  11501. termination. Be careful when using this.
  11502. + $str.length returns the length of string $str (this is faster
  11503. than iterating through it to find when chars hit 0).
  11504. + Vlayer is dynamically sized. The vlayer_width/vlayer_height
  11505. counters still work as per usual, but the vlayer_size counter
  11506. has been added to adjust the maximum size. The default is
  11507. 32768.
  11508. + Fixed bug not allowing things to move over goop.
  11509. + Fixed bugs causing current directory to be changed when
  11510. importing things from other directories.
  11511. + Properly implemented support for volume "string".
  11512. + Fixed a few commands not working when they should from the
  11513. global robot (such as put to dir of player).
  11514. + Fixed a bug where going to a label at the end of a robot
  11515. would treat it as if it's the first of its name in a sequence
  11516. of labels.
  11517. + Fixed a bug involving moving the a block with the player not
  11518. moving what was underneath the player.
  11519. + New help file, thanks MUCHLY to Terryn for pulling off this
  11520. enormous effort! (This is what you're reading from.)
  11521. - Save files from 2.80 are not compatible due to several
  11522. changes in the save format.
  11523. <a class="helplink" href="#NEWINVER.HLP__1st">NEW in MegaZeux!</a>
  11524. <a class="helplink" href="#284CLOG.HLP__284">New in Versions 2.84 to 2.84c</a>
  11525. <a class="helplink" href="#2823CLOG.HLP__283">New in Versions 2.82 to 2.83</a>
  11526. <a class="helplink" href="#280CLOG.HLP__280">New in Versions 2.80 to 2.80h</a>
  11527. <a class="helplink" href="#OLDERVER.HLP__260">New in Versions 2.60 to 2.70</a>
  11528. <a class="helplink" href="#OLDESVER.HLP__201">New in Versions 2.01 to 2.60</a>
  11529. <a class="helplink" href="#NEWIN200.HLP__1st">New in Version 2.00</a>
  11530. <a class="helplink" href="#ANCENVER.HLP__1xx">New in Versions Through 1.03</a>
  11531. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  11532. <hr /></div>
  11533. <div class="helpfile" id="280CLOG.HLP">
  11534. <a class="helpanchor" name="280CLOG.HLP__280"> </a>
  11535. <p class="helpcentered"><span class="f9 ">New in Versions 2.80 to 2.80h</span></p>
  11536. June 6, 2005 - MZX 2.80h
  11537. + Fixed a bug which could cause crashes when quitting the game.
  11538. + Fixed some bugs when changing boards and other things that
  11539. can cause duplicate players.. I think.
  11540. + Fixed a bug that could cause crashes when adding boards.
  11541. + Improved response time in editor for slower computers/high
  11542. load situations.
  11543. + Fixed some endian issues with the GUI.
  11544. + Fixed some crash when moving the mouse cursor around in the
  11545. editor.
  11546. + Fixed bug where you if you had a robot whose name is the same
  11547. as the global robot it wouldn't get messages (fixes yoyo in
  11548. Weirdness).
  11549. + Fixed debug box not moving with text input.
  11550. + Fixed bug with duplicate player appearing when killed and a
  11551. new one can't be put at 0, 0.
  11552. + Added copy/paste for outside of MZX to/from the robot editor.
  11553. It only works in Windows and X11, and functionality may be
  11554. limited in X11 right now (currently seems to work in native
  11555. X11 apps and GTK 2.6 apps but not earlier GTK or QT, also try
  11556. shift + insert to paste).
  11557. + Fixed bug in resizing involving overlay blanking.
  11558. + Fixed clear messages/projectiles not working (and damaging
  11559. the game instead).
  11560. + Fixed behavior of P key in editor for wildweasel.
  11561. + Fixed random in Robotic not correctly swapping the range if
  11562. they're given in the wrong order.
  11563. + Fixed clip length in [ messages.
  11564. + Fixed crash when changing volume without a game loaded.
  11565. + Redid internal GUI system, fixes some minor things.
  11566. + New file loading/saving window - press del to delete a
  11567. file/dir, alt + n to create a new directory, alt + r to
  11568. rename a file/dir.
  11569. + Added PC speaker volume control to F2 settings and
  11570. config.txt.
  11571. + Fixed yet another crash bug with resizing boards.
  11572. + Fixed inability to type * in text placement in the editor
  11573. (although this adds inability to turn on mod * while F2 is
  11574. on...).
  11575. + Added ctrl + n in the editor to load a module for listening
  11576. only (won't set the current board's module, and will let you
  11577. choose ones from different directories).
  11578. + Fixed crash on macros with more variables than can be
  11579. displayed in their configuration.
  11580. + Fixed bug that causes char selection cursor to reset to 0 on
  11581. unhandled keys (and continuously do so for lock keys).
  11582. + Tweaked ctrl + dir in text entry boxes.
  11583. + Added gdm2s3m in-tree to the contrib/ directory. gdm2s3m no
  11584. longer needs to be installed on the system before compiling
  11585. mzx.
  11586. + Improved the build system to automatically build .c and .cpp
  11587. files with compound system CFLAGS/CXXFLAGS, respectively.
  11588. + Made package.sh automatically ship the source package with a
  11589. Makefile.dist to warn the user that they need to run
  11590. config.sh before 'make'.
  11591. + Rectified inconsistency in source copyrights.
  11592. + Added multi-character editor. Select multiple keys in the
  11593. character selection with shift. The char editor also now has
  11594. the ability to perform operations (delete, copy, scroll, etc)
  11595. on subblocks. Hold down shift or press alt + b to highlight a
  11596. region (press escape to remove the latter). Blocks copied
  11597. like this will be pasted to where the cursor is at. Other
  11598. small things in chareditor tweaked/changed... No longer press
  11599. tab to toggle through set/clear/toggle draw modes, instead
  11600. tab for set mode and shift + tab for clear (no more toggle).
  11601. Mouse behavior is modified as well. In non-SMZX left click
  11602. sets, right click clears. Shift + F2 will cut a block (clear
  11603. + copy).
  11604. alt + x/alt + i can now be used to import/export partial
  11605. charsets while in the char editor. You can do so for several
  11606. in series: put a # in the name of the charset then set the
  11607. First for the first number # will be replaced with and the
  11608. Count value to indicate how many in series to work with. For
  11609. instance, saving s#.chr with first = 0, count = 3, starting
  11610. at offset 100, with a 2x2 char selection will save charsets
  11611. s0.chr from 100, s1.chr from 104, s2.chr from 108, and
  11612. s3.chr from 112.
  11613. *** NOTE *** Series import/export will only work correctly
  11614. with char selections that are one in height (they can still
  11615. be split up another way in the editor itself). If you want to
  11616. use partial charsets on your edits, it's important that you
  11617. select all the chars in a row.
  11618. + Made characters for the editor/GUI use another charset that's
  11619. protected. Please notify me if any characters are incorrect.
  11620. Modify mzx_edit.chr to change this charset. The same thing
  11621. goes for colors. It doesn't work for SMZX, which also might
  11622. look a bit different in the editor...
  11623. + Added option (defaults on) to protect chars 32-127 in input
  11624. boxes and strings in the robot editor.
  11625. + Mouse warping goes to middle instead of top corner now, so
  11626. there isn't a bias towards moving up.
  11627. + Hopefully fixed another bug with the cursor and changing
  11628. boards...
  11629. + Fixed module looping problem in modplug...
  11630. + Added libmodplug 0.7 with both patches (see contrib/)
  11631. in-tree. Removes system dependency on libmodplug.
  11632. + Made auto-backup on by default. (3 count)
  11633. + Made if touching idle, beneath always false instead of like
  11634. nodir.
  11635. + Fixed bug that caused bad things to happen if you pressed too
  11636. many different keys too rapidly.
  11637. + Made mouse wheel emulate up/down in dialog boxes and list
  11638. menu.
  11639. + Added ctrl + backspace to intake (delete previous word).
  11640. + Made modulo operator use floored instead of truncated mod
  11641. (uses positive remainder instead of negative).
  11642. + Fixed crash when testing after using ctrl + z to clear a
  11643. board.
  11644. + Fixed bug where sending other robots to subroutines caused
  11645. the return address to be to the next instruction like local
  11646. subroutine calling works.
  11647. + Fixed bug where going to a label on the last line of the
  11648. robot could screw the game up.
  11649. + Fixed a bug where the editor froze if you tried to fill the
  11650. board with players. (eheh...)
  11651. + Fixed a bug that could cause crashes when sending all sensors
  11652. something.
  11653. + Fixed some crashes when exporting/saving fails.
  11654. + Fixed import world's ability to go over the board limit and
  11655. cause crashes.
  11656. + Allowed input of decimal numbers for params.
  11657. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  11658. April 1, 2005 - MZX 2.80g
  11659. + Fixed crash on alt + x in robot editor.
  11660. + Fixed missing line on alt + h in robot editor.
  11661. + Introduced incorrect enter action in robot editor (didn't
  11662. reset to beginning of the line), fixed.
  11663. + Fixed garbage appearing when moving from a larger to smaller
  11664. board and being outside of that board's scroll region.
  11665. + Fixed bug that could cause glitches/crashing when resizing
  11666. the board.
  11667. + Fixed error with global next option not retaining the three
  11668. checkmark options correctly.
  11669. + Added work around so that move block moves the player (won't
  11670. move it on inter-board moves).
  11671. + Fixed bad palette loading for Linux introduced in 2.80e or f
  11672. or something
  11673. + Made it so block highlighting doesn't highlight the debug
  11674. window.
  11675. + Made the debug window move if necessary when home/end is
  11676. pressed.
  11677. + Added autorepeat buffering so previous keys can be resumed.
  11678. + Fixed bug with swap world possibly not working (crashing??)
  11679. off Windows.
  11680. + Fixed more problems with garbage/crashes when resizing with
  11681. the cursor in a position causing the scroll to go off the
  11682. edge.
  11683. + Fixed incorrect text cursor offset with
  11684. force_height_multiplier on.
  11685. + Redid way directories are loaded internally so you can load
  11686. dirs with over 4096 entries now. Might be faster (unsure)
  11687. + Chest contents list menu looked funny, fixed.
  11688. + Changed default.spl to smzx.pal so you can load it more
  11689. sanely.
  11690. + Export block wasn't getting the last selected line. Fixed.
  11691. + Hacked scroll editor so it wouldn't crash when removing
  11692. lines. Scroll code either needs to be 100% overhauled or
  11693. replaced by robots somehow...
  11694. + Fixed config files not being closed.
  11695. + Added include file option for config files. Use it like this:
  11696. include "config file"; e.g., "include subconfig.cnf" will
  11697. load subconfig.cnf's options.
  11698. + Fixed freadN not terminating strings.
  11699. + Fixed graphical glitch when using the mouse in the char
  11700. selector.
  11701. + Fixed save games crashing when they can't load fopened files.
  11702. + Fixed some other problems with save games and fopened files.
  11703. + Accidentally had title screen running a bit slow...
  11704. + Value strings starting with ( not parsed as an expression if
  11705. they don't end with the ).
  11706. + Fixed problem with key_code being triggered for keys that
  11707. aren't in-game.
  11708. + Added extended macros. This allows for parameter based macros
  11709. to be entered in the robot editor via a window or by command.
  11710. See macro.txt for more information.
  11711. + Fixed player cloning after flip/mirror and player placing.
  11712. + Added random seeding that was mysteriously missing...
  11713. + Finally added drive changing for Windows builds.
  11714. + Fixed mousex/mousey for resolutions other than 640x350 (only
  11715. applies to fullscreen).
  11716. + Fixed crash on weird invalid death/endgame boards...
  11717. + % and & messages clip correctly now.
  11718. + Fixed potential crash on double closing the files.
  11719. + Fixed crash bugs with placing sensors and maybe scrolls.
  11720. + Fixed sending sensors when you have robots of the same name
  11721. (fixes Weirdness chapter 1).
  11722. - Removed the unimplemented if player dir and if not player dir
  11723. commands from RASM.
  11724. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  11725. December 26, 2004 - MZX 2.80f
  11726. + Fixed a bug that could cause crashes when auto-quoting params
  11727. in the robot editor (eg, set x 1 -> set "x" to 1).
  11728. + Fixed a bug that could crash the robot editor if you added a
  11729. new line prior to the first line of a marked block, then did
  11730. an action on it.
  11731. + Fixed a bug where clearing the first and only line could
  11732. cause it to appear as if it hadn't been cleared at all.
  11733. + Unified global and global next parameter setting so that
  11734. nothing is lost between first/next but information can be
  11735. cancelled without application.
  11736. + Fixed E/S block markers appearing in the robot editor when
  11737. they should be off the screen.
  11738. + Left click position in robot editor mysteriously disappeared
  11739. after having been added somewhere after 2.80d. Re-added.
  11740. + Added option to hide the hotkeys help and horizontal border
  11741. in the robot editor with alt + h. Also added a config.txt
  11742. option to have it default this way.
  11743. + Search/replace in the robot editor. ctrl + f to find or
  11744. replace/replace all, ctrl + r to repeat either search or
  11745. replace (depending the last one you did, if you cancelled
  11746. this does nothing).
  11747. + The load_game counter sequence was broken; fixed.
  11748. + Hopefully fixed all means of overrunning the current line max
  11749. length in the robot editor...
  11750. + Fixed robot editor validation not showing every 13th line.
  11751. + Fixed aesthetic problem with validation report...
  11752. + Fixed crash with setting message column less than 0.
  11753. + A couple things added for 2.80e mysteriously disappeared in
  11754. source handling. Re-added.
  11755. + Changed max board size prevention to auto resize the lower
  11756. dimension to the max that can be handled with the higher
  11757. (ex, 30000x25000 becomes 30000x559).
  11758. + Added flood fill to char editors (alt + f).
  11759. + Added single depth undo to char editors (alt + u).
  11760. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  11761. December 19, 2004 - MZX 2.80e
  11762. + Fixed a bug causing problems with static overlay if a
  11763. non-overlaid sprite is displayed so it's clipped off the edge
  11764. of the screen.
  11765. + Fixed a bug in the display of c?x color boxes in the F2 menu
  11766. in the robot editor.
  11767. + Fixed a bug that caused incorrect thisx/thisy for one cycle
  11768. after copyblock.
  11769. + Fixed a bug preventing calls to nonexistent subroutines from
  11770. passing that point in the robot.
  11771. + Fixed crash on sam 0 "file".
  11772. + Fixed a bug where loading new SFX may not correctly overwrite
  11773. previous ones.
  11774. + Fixed a bug where you could only load/unload so many mods
  11775. before MZX couldn't load anymore.. same bug as the SAMs but
  11776. went unnoticed!
  11777. + Fixed a bug that caused you to be infinitely stuck in the
  11778. global settings dialog box when you press previous on the
  11779. next page.
  11780. + Fixed a bug where going to next then exiting would not save
  11781. the changes from the previous page.
  11782. + Fixed a bug that could cause crashes while ending modules.
  11783. + Fixed a bug that could do the same kind of thing with sams.
  11784. + Fixed an allocation bug when loading MZX worlds that could
  11785. lead to crashes.
  11786. + Fixed a bug that caused MZX to crash if you interpolated an
  11787. expression with a value equal to or greater than 1 billion.
  11788. + Fixed a bug where mixing ccheck1/2 with sprites from board
  11789. and vlayer could cause problems (that's the short version of
  11790. the explanation, I'll spare you the long one).
  11791. + Fixed a bug that could cause certain old MZX games to crash
  11792. after the title screen
  11793. + Somewhere broke missiles between 2.80c and 2.80d. Fixed.
  11794. + Fixed error in lit bomb anim sequence setup in char ID
  11795. editor.
  11796. + Reworked a lot of robot editor code; adding/deleting lines
  11797. while marked areas are active should work more naturally now
  11798. and it's hopefully no longer possible to crash it in the same
  11799. ways it was previously.
  11800. + Fixed crash when setting mesg row to less than 0.
  11801. + Fixed mouse presses not working in the robot editor.
  11802. + Made MZX ignore alt + tab so you can safely switch in your WM
  11803. without it triggering...
  11804. + Added numerical key entry for number boxes. Use 0-9 to add to
  11805. the most significant digit and backspace to take it away.
  11806. + Added config.txt option to make MZX pause when key focus is
  11807. lost (when clicking on another window, perhaps) or when it's
  11808. minimized. Music will still continue.
  11809. + Added save/load position to the editor. Works for loads
  11810. in between boards as well. Press ctrl + num to save to slots
  11811. 0 through 9 and alt + num to load from that slot. Please
  11812. press shift + 8 or the numpad * key instead of alt + 8 to set
  11813. mod wildcard.
  11814. + Fixed a further bug that could cause playing samples to
  11815. crash.
  11816. + Added config file option to revert the robot editor to the
  11817. default palette when loaded.
  11818. + Fixed bug in shoot command.
  11819. + Fixed error when making save name in editor but cancelling.
  11820. + Auto-backup - see config.txt for details.
  11821. + Joystick key mapping - see config.txt for details.
  11822. + You can now load game-specific config files by creating
  11823. game.cnf for the corresponding game.cnf (for instance,
  11824. caverns.cnf). This is mainly useful for joystick key mapping.
  11825. Note that these settings will NOT go away if another game is
  11826. loaded that doesn't have a .cnf.
  11827. + Alt+enter finally works as block action in the robot editor.
  11828. + Loading a .mzx/.sav from another directory indirectly (via
  11829. command-line or robotic) will now actually change the current
  11830. working directory.
  11831. + Fixed bug that crashed MZX with ctrl + i in the robot editor.
  11832. - Fixed maximum board size to about 16.7 million tiles (128MB)
  11833. for now.
  11834. - MZX now ignores the mouse scroll wheel instead of
  11835. interpreting it as a click.
  11836. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  11837. October 9, 2004 - MZX 2.80d
  11838. + Fixed cursor going invisible when escaping from import in the
  11839. editor.
  11840. + Fixed robot editor entry when pressing OK on global info.
  11841. + Fixed lack of name for MZB import/export (any MZB's exported
  11842. in prior beta versions still won't have a name).
  11843. + Fixed some problems with setting the mouse position.
  11844. + Fixed problem with exits not bringing you all the way to the
  11845. edge if width over 400 or height over 200.
  11846. + Fixed bug that cleared too much when increasing both width
  11847. and height while resizing the board.
  11848. + Fixed problem with 1 char shortcut commands with spaces
  11849. immediately after them.
  11850. + Fixed problems with load_robot and load_bc (caused crashes
  11851. and infinite loops).
  11852. + Optimized RASM heavily (this should be most noticeable when
  11853. doing a lot of external robot loading from text files).
  11854. + Fixed inability to use absolute paths in loading a game from
  11855. command line.
  11856. + Fixed lastshot/lasttouch conditions with directions not
  11857. working.
  11858. + Fixed char editor in robots not going into SMZX mode when
  11859. proper.
  11860. + Cleaned up source code so it passes -Wall without complaint
  11861. and in the process corrected some glaring code errors that
  11862. may have corrected random problems.
  11863. + File opening broken in 2.80c, fixed.
  11864. + Implemented MZM2 saving and loading and rewrote mzm.cpp (if
  11865. anything is changed or fixed regarding MZMs, attribute it to
  11866. this). MZM2s can be of larger dimensions, smaller filesize
  11867. for same amount of data, and can store robots.
  11868. + Fixed bug that could cause MZX to crash when making new
  11869. strings.
  11870. + Block operations to overlay when overlay was off caused
  11871. crashes - fixed.
  11872. + Fixed a problem with sprite ccheck2 against other sprites.
  11873. + Optimized function counter lookups a bit; speed gain for all
  11874. counter accesses (especially ones that begin with certain
  11875. characters such as _).
  11876. + Fixed disassembly error with ' ' character.
  11877. + Fixed assembly error where condition extended dir (such as
  11878. blocked opp seek) was not getting compiled with the dir
  11879. extension.
  11880. + Fixed editor bug where the param was not being cleared when
  11881. overwriting things by double placement.
  11882. + Fixed inability to use counters with
  11883. playercolor/bulletcolor/missilecolor.
  11884. + Added ability to use counters in place of p?? in the robot
  11885. editor. Note - even though this expands functionality of the
  11886. editor this does not require a version number change because
  11887. the worlds will still be playable in older MZX versions (and
  11888. will display correctly in the robot editor - you simply won't
  11889. be able to correctly edit the commands).
  11890. + Mouse correctly limited to screen edges now.
  11891. + Fixed inability to overwrite robots with pushable robots and
  11892. vice-versa, as well as scrolls with signs and vice-versa.
  11893. + Possibly fixed problem with windowing error when editing
  11894. global robot (?).
  11895. + Fixed disappearing cursor after color selection box with
  11896. mouse (and other places?).
  11897. + Fixed bug in sprite clipping that caused some to be clipped
  11898. off inappropriately.
  11899. + Made board_id/board_param counters readable.
  11900. + Added bound checks for all counters using
  11901. board_x/board_y/overlay_x/overlay_y.
  11902. + Fixed potential direction corruption bug causing directions
  11903. not to work sometimes even if they display correctly in the
  11904. robot editor.
  11905. + Fixed copy overlay to MZM copying to overlay too.
  11906. + Fixed a bug where debug window could display the wrong amount
  11907. of robot mem and potentially even crash MZX.
  11908. + Fixed help_menu counter not doing anything (durr).
  11909. + Changed sprite draw order so they're drawn underneath the
  11910. message bar, debug box, and time remaining display.
  11911. + Changed put p?? in Robotic so it will put default params if
  11912. available.
  11913. + Fixed a bug that could cause copies from overlay to vlayer to
  11914. not end up at the correct destination.
  11915. + Fixed a bug where c?x and cx? would not display correctly in
  11916. the robot editor.
  11917. + Optimized copy blocks a bit using variable length arrays
  11918. instead of malloc.
  11919. - Removed ability to put robots, scrolls/signs, and sensors
  11920. (with the put command in Robotic).
  11921. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  11922. August 16, 2004 - MZX 2.80c
  11923. + Fixed issues with the commands counter not being reset.
  11924. + Color intensity now gets reset when you enter the editor
  11925. + SAMs got cut off sometimes now.. fixed.
  11926. + Fixed bug where loading a world with empty boards could
  11927. change the starting, endgame, and death boards.
  11928. + Fixed bug where you could text enter off the bottom of the
  11929. board, causing problems.
  11930. + Fixed bug involving cutting/clearing the entire robot in the
  11931. robot editor while not at the first line.
  11932. + Fixed robot name entry for global robot not disappearing on
  11933. small boards.
  11934. + Fixed bug where you could duplicate the player by holding
  11935. down a direction as a saved game loads.
  11936. + Fixed bug where you could go to line 0 in the robot editor.
  11937. + Saving an MZM now auto-adds the .mzm extension...
  11938. + Fixed black screen on quicksave.
  11939. + Fixed bug where opening a file didn't close the old one if
  11940. one was open (so it'd eventually crash MZX).
  11941. + Changed Alt+backspace behavior in intake so it doesn't exit.
  11942. + Added clipping for refx/refy/width/height for sprites (less
  11943. than 0 at initialization, greater than board width/height at
  11944. draw).
  11945. + Fixed direction parsing for move all.
  11946. + Fixed bug where creating things on top of the player would
  11947. use a slot for robots/scrolls/signs/sensors instead of just
  11948. copy to the buffer.
  11949. + Added ability to use chars as immediates in Robotic commands
  11950. (ie, set "$str.0" 'a').
  11951. + Added options to enable oversampling and specify resampling
  11952. mode in the config file (higher quality audio).
  11953. + Building with patched modplug that fixes loading 2-channel
  11954. mods outputted by FT2. If you're building yourself, see
  11955. build.txt.
  11956. + Fixed inability to mouse click in alt + h mode.
  11957. + Fixed ability to mouse click outside of board range.
  11958. + Should work better for Linux users; case insensitivity for
  11959. file opens has been added.
  11960. + Fixed close bug that was affecting Linux builds (may affect
  11961. more).
  11962. + Keypad enter works where normal enter works now.
  11963. + Fixed disappearing cursor when cancelling out of abandon
  11964. changes box when loading a new world in the editor.
  11965. + Fixed problems when loading/saving robots outside of ID range
  11966. (do not hardcode ID's people).
  11967. + Fixed problem with NO BOARD exits being set to something else
  11968. when empty boards were being stripped or when worlds were
  11969. being imported.
  11970. + Fixed bug where auto-decrypting worlds didn't work if the XOR
  11971. value was negative.
  11972. + Fixed problem with rid not working the first cycle.
  11973. + Fixed inability to interpolate (with &&'s) counter names
  11974. larger than 14.
  11975. + Added new robot mem counter in debug box (only kb precise,
  11976. rounds up).
  11977. + Fixed ability to clone the player on non-title board after
  11978. testing.
  11979. + Lengthened size of mod name buffers.
  11980. + Fixed bug where send x y doesn't work from the global robot.
  11981. + Fixed a few bugs that could cause MZX to crash.
  11982. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  11983. August 11, 2004 - MZX 2.80b
  11984. + Made it possible for robots to move through teleporters.
  11985. + Fixed bug with pressing shift in text entry boxes.
  11986. + Made it so alt + tab does not switch draw modes in editor.
  11987. + Fixed a disassembly error for color intensity N percent
  11988. command.
  11989. + Fixed problem with looping on mods that do not loop
  11990. explicitly.
  11991. + Fixed alt + dir scrolling in the char editor.
  11992. + Fixed not being able to click the rightmost char in the char
  11993. editor.
  11994. + Re-added unmark (alt + u) to robot editor (mysteriously
  11995. disappeared??).
  11996. + Fixed key label so it returns proper unicode values.
  11997. + The player and pushable robots can now be pushed by the push
  11998. command.
  11999. + Fixed bug where you could clone the player by switching
  12000. boards.
  12001. + Fixed bug where you could either turn off overlay or switch
  12002. to boards that don't have it while in overlay edit mode...
  12003. + Fixed bug where remains of debug window would not be cleared
  12004. in editor if the board width is too small.
  12005. + Fixed bug where turning off the menu with a board too small
  12006. would mess things up.
  12007. + Fixed bug where run lengths were saved one too large... this
  12008. could fix stability problems in at least occasional cases
  12009. (with saved worlds or save games, at least).
  12010. + Fixed placing solid things beneath robots (like bombs).
  12011. + Added support for a keyboard plus in the char editors.
  12012. + Fixed previous button in SFX editor.
  12013. + Made robot name box disappear when robot char box comes up...
  12014. + Fixed bug where mods restart after pressing P if they're the
  12015. same mod as what was playing before.
  12016. + Fixed problem with changing params (with P) in the editor.
  12017. + Fixed bug where null boards were not being pruned from old
  12018. worlds upon load.
  12019. + Made file name saving box larger (for saving games and
  12020. worlds).
  12021. + Fixed bug where default (100%) palette intensity values would
  12022. not be applied to the palette a game loads with.
  12023. + Fixed bug where exporting char sets that are full size caused
  12024. a 0 byte charset to be exported (8bit wraparound).
  12025. + Added support for forms such as :line.
  12026. + Fixed sporadic incompletion of strings without trailing
  12027. quotes at the end of the line.
  12028. + Fixed bug where clearing/cutting the last line of a robot
  12029. crashed MZX.
  12030. + F4 in robot editor now works more generally.
  12031. + Made line numbers in robot editor error report start at 1.
  12032. + Added ctrl + G to go to a line in the robot editor (ala
  12033. nano).
  12034. + Made it possible to change a robot's color in the editor
  12035. + Fixed bug where spitfire, seekers, and missiles didn't hurt
  12036. something immediate adjacent to whatever shot it.
  12037. + Fixed editing of spitfires.
  12038. + Made default speed 4 again (5, bleh).
  12039. + Re-added quicksave/quickload.
  12040. + Re-added F8 clear (always works - be careful).
  12041. + Fixed autorepeat problems for spacepressed/delpressed.
  12042. + Wrapped around sprite values so LogiCow's bad code would work
  12043. (HTMCIAB).
  12044. + Cleared block commands in between board changing and other
  12045. things like that.
  12046. + Fixed bug where MZX would crash if put dir player overwrote
  12047. the robot doing it.
  12048. + Fixed bug where playing SAMs would eventually crash MZX
  12049. + Fixed some mod * problems (hopefully?).
  12050. + Fixed bug where pasting blocks over the edge of the board in
  12051. the editor would cause MZX to crash.
  12052. + Uses new GDM2S3M source that fixes some bugs. If your
  12053. converted GDM's have problems, delete the S3Ms it generated.
  12054. - Removed export text in the board editor. Don't think anyone
  12055. wanted it...
  12056. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12057. August 9, 2004 - First release, MZX 2.80 BETA
  12058. + All ASM files have been rewritten to ANSI C compliant C++;
  12059. this mainly involves the mammoth game2.asm.
  12060. + Everything graphics related has been replaced with an SDL
  12061. driven engine, including text mode rendering (also capable of
  12062. rendering SMZX modes).
  12063. + All keyboard and mouse events are now also handled by an SDL
  12064. driven engine. All internal keyboard/mouse routines use SDL
  12065. keycodes; no attempt was made to convert to MZX's old format
  12066. at this level.
  12067. + All world/board/robot loading and saving code has been
  12068. entirely rewritten and is more modular now.
  12069. + All robot handling code has been rewritten from scratch, and
  12070. is more sane/efficient now (allocation, message sending,
  12071. sensors, etc.)
  12072. + All counter handling code has also been rewritten from
  12073. scratch. This includes the functionality of builtin and
  12074. "function" counters. It also includes a new string framework.
  12075. + The robot interpreter has been almost entirely rewritten.
  12076. + The main game playing code (game.cpp) has been almost
  12077. entirely rewritten.
  12078. + All module/sample playing code has been rewritten to use
  12079. modplug and SDL. PC speaker effects are emulated.
  12080. + The main part of the editor (edit.cpp) has been almost
  12081. entirely rewritten.
  12082. + The robot editor has been entirely rewritten, utilizing a
  12083. modified (fixed) version of RASM (released by me over a year
  12084. ago)
  12085. + All other source files (for instance, window handling code,
  12086. scroll displaying, char editor, etc.) have been largely
  12087. overhauled, some to more of a degree than others. At the
  12088. very least, everything has been reformatted and made to work
  12089. with the new systems.
  12090. + key_pressed and key_code now return unsigned chars instead of
  12091. signed, so if the game checks for negative values, it won't
  12092. work. The same goes for reading back characters for strings.
  12093. + Boards may now be as large as 32767x32767. Please do not make
  12094. boards this large. :)
  12095. + You may now have up to 250 boards.
  12096. + Boards may have up to 255 robots, 255 scrolls, and 255
  12097. sensors.
  12098. + There is no robot memory per board limit. However, individual
  12099. robots may only be up to 64k large. If you include the global
  12100. robot, this means that you effectively can have up to 16MB of
  12101. robot memory per board.
  12102. + The same applies to scrolls, which have separate memory
  12103. spaces and may only be up to 64k in length each (so you could
  12104. have almost 16MB of scroll text per board, but who would want
  12105. that??).
  12106. + The robot stack need not be initialized, and will be
  12107. dynamically resized as necessary (useful for recursion). This
  12108. refers to lines such as
  12109. . "#*-1-2-3-4-5-6-7-8"
  12110. at the beginning of robots. They're no longer necessary or
  12111. useful (they will be ignored, like any other comment).
  12112. + You may have a virtually unlimited number of counters active.
  12113. The theoretical limit is some 4 billion. The effective limit
  12114. depends on memory available.
  12115. + The same goes for strings, which may now have any name, so
  12116. long as it begins with a dollar sign ($). The same
  12117. conventions regarding strings in 2.68+ still apply (see
  12118. 268_info.txt for more information).
  12119. + Local2 and local3 no longer have dangerous side-effects.
  12120. Local4 through local32 are also available per-robot now.
  12121. + The following are now natively supported: XM, S3M, MOD, MED,
  12122. MTM, STM, IT, 669, ULT, WAV, DSM, FAR, AMS, MDL, OKT, DMF,
  12123. PTM, DBM, AMF, MT2, PSM, J2B, and UMX.
  12124. + You can now perform repeated copies by selecting "Copy
  12125. (repeated)" from the block command window. This will cause
  12126. you to repeat the copy indefinitely until you press escape.
  12127. Also, after the first paste is made, you may press ctrl +
  12128. direction to move in steps that are the size of the copy (you
  12129. really have to try it to get a good idea of what I mean).
  12130. + Press alt + H to hide/unhide the menu/information occupying
  12131. the bottom 6 lines of the screen.
  12132. + Right click is similar to pressing insert (grabs whatever's
  12133. under the cursor).
  12134. + Exporting char sets now gives direct options to set the
  12135. size/offset for partial charsets. The old format (prefixing
  12136. the name) will not work.
  12137. + For saving files, you may make filenames larger and use mixed
  12138. case (as opposed to all caps).
  12139. + Now when you import worlds their exits will actually work.
  12140. + Loading worlds results in all empty boards and empty
  12141. robots/scrolls/sensors within the boards being removed. When
  12142. you delete a board, you won't be presented with a gap in the
  12143. board list anymore.
  12144. + You may once again select ASCII as a default charset and
  12145. revert to it in the char editor. You may also select a
  12146. default SMZX charset.
  12147. + Anywhere you can enter a line of text you can now press ctrl
  12148. + left and ctrl + right to go to the previous/next word.
  12149. + This isn't totally limited to the editor, but now everywhere
  12150. a selection box shows up (such as for files, boards, items)
  12151. you can press multiple keys to seek to a specific entry.
  12152. Furthermore, in file selection boxes you can press backspace
  12153. to go up a directory.
  12154. + The SMZX char editor has been changed quite a bit. First, to
  12155. use, you must be in SMZX modes 1-3 (toggle using F11). Within
  12156. the editor, press keys 1 through 4 to change the "current
  12157. color." You can place this color with space, and you can
  12158. toggle repeated placement on/off using tab (sorry, no
  12159. clear/toggle in this mode, they got in the way far more than
  12160. they helped). You now move in increments of 1 char naturally
  12161. instead of "half chars." Right click grabs the current
  12162. "color" underneath the cursor.
  12163. + You are now able to type invalid code within a robotic line.
  12164. You will see that it's invalid due to the way the line is
  12165. color coded. If you try to escape while any lines are invalid
  12166. or if you press alt + V, a window will be brought up
  12167. describing the nature of all erroneous lines. It will also
  12168. let you mark each line to be deleted or commented out on
  12169. exit. If all invalid lines are marked with anything besides
  12170. ignore, you can exit safely. You may also mark invalid lines
  12171. using ctrl + I, D, and C (to mark as ignore, delete, and
  12172. comment respectively). ctrl + C may also be used to comment
  12173. out a normal line, and then uncomment.
  12174. + alt + O is still available, but you may only change macros
  12175. here (see the config file for the other rarely used options).
  12176. This does give you more room to modify macros, though. They
  12177. may be up to 64 characters in length, and you may set up to
  12178. around 45 or so in this window. (To get larger, you'll have
  12179. to use the config file.).
  12180. + Command line params have changed.
  12181. + MegaZeux configuration information is now stored in a file
  12182. called config.txt.
  12183. - There are some slight discrepancies in robot size; if you
  12184. highlight the last line then leave it, it will register as a
  12185. compilation of that line. Yet, when you exit, the line will
  12186. be discarded, so this addition is not permanent. This
  12187. shouldn't be problematic.
  12188. - alt + enter and alt + escape no longer work; use the
  12189. alternatives (alt + b and alt + u).
  12190. - You cannot click on help options to make it happen (for
  12191. instance, you can't click on L:Load and expect it to bring up
  12192. the load window).
  12193. - You cannot import or export ANS files. Use MZM instead.
  12194. - Some things that worked in the DOS version only worked due to
  12195. chance, such as there being default (but valid) values for
  12196. sprite widths or heights and thus sprites could be displayed
  12197. before new values were set. They will not work here.
  12198. <a class="helplink" href="#NEWINVER.HLP__1st">NEW in MegaZeux!</a>
  12199. <a class="helplink" href="#284CLOG.HLP__284">New in Versions 2.84 to 2.84c</a>
  12200. <a class="helplink" href="#2823CLOG.HLP__283">New in Versions 2.82 to 2.83</a>
  12201. <a class="helplink" href="#281CLOG.HLP__281">New in Versions 2.81 to 2.81h</a>
  12202. <a class="helplink" href="#OLDERVER.HLP__260">New in Versions 2.60 to 2.70</a>
  12203. <a class="helplink" href="#OLDESVER.HLP__201">New in Versions 2.01 to 2.60</a>
  12204. <a class="helplink" href="#NEWIN200.HLP__1st">New in Version 2.00</a>
  12205. <a class="helplink" href="#ANCENVER.HLP__1xx">New in Versions Through 1.03</a>
  12206. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12207. <hr /></div>
  12208. <div class="helpfile" id="OLDERVER.HLP">
  12209. <a class="helpanchor" name="OLDERVER.HLP__260"> </a>
  12210. <p class="helpcentered"><span class="f9 ">New in Versions 2.60 to 2.70</span></p>
  12211. **NEW in 2.70***
  12212. + Robotic code now loadable and savable to files, either to
  12213. text files or compact but human-unreadable bytecode files.
  12214. Other robots' code can be written to or read as well.
  12215. + Defaults changed to more accepted values.
  12216. + The swap world bug should be fixed. You should now be able to
  12217. swap worlds back and forth with no trouble.
  12218. + "atan" now works with any input/output value.
  12219. + The "load_game" command now should work without any problems.
  12220. + It should now be easier to compile MZX from the source.
  12221. + It's not really a bug fix, but the palette is now returned to
  12222. its original colors.
  12223. + Robots can now 'put' things underneath themselves: eg. put
  12224. c04 carpet p?? under.
  12225. + The title screen menu now works: e.g. the menu you get when
  12226. pressing 'Enter' on the title screen.
  12227. + "key_pressed" now returns the twos-complement of the key
  12228. value, i.e. the one used for :key?
  12229. + The mouse can scroll across the whole screen after a screen
  12230. refresh / transition to/from SMZX mode.
  12231. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12232. **NEW in 2.69c***
  12233. + Sprite limit expanded from 64 to 256.
  12234. + New sprite flag added: sprN_ccheck mode 2.
  12235. + Vlayer added. This is a virtual, unseen layer 32767 in size
  12236. used to store graphical data.
  12237. + World loading and saving through Robotic now possible.
  12238. + Special class fwrite_modify; this allows editing of a file as
  12239. opposed to overwriting.
  12240. + File end seeking added.
  12241. + Char file offsetting added.
  12242. + File seeking added to editor.
  12243. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12244. ***NEW in 2.69b***
  12245. + Fixed the fwrite_append problem RoSS mentioned.
  12246. + Fixed the string problem Nanobot mentioned.
  12247. + Added ridNAME as an alternative to robot_id_NAME.
  12248. + Added mouse_mx and mouse_my to determine mouse motion in
  12249. "mickey" units.
  12250. + Added two local counters "local2" and "local3", local2 uses
  12251. walk_dir and is_locked (so walking and locking will affect
  12252. it), local3 uses last_shot_dir and last_touch_dir (so
  12253. shooting and being touched will affect it).
  12254. + Added the builtin string "robot_name" to determine the name
  12255. of the robot invoking it.
  12256. + Reverted back to BWSB 1.20a again, in the hopes that it will
  12257. alleviate swap world crashing a bit.
  12258. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12259. ***NEW in 2.69***
  12260. + if "$stringN" = "literal" should now work.
  12261. + Embedding && or () in names for save/load files for MZM
  12262. saving and the like should work now.
  12263. + Expressions won't be activated in pre-2.68 games, meaning if
  12264. they used the constructs which would be valid expressions
  12265. they should be okay.
  12266. + More minutiae.
  12267. + key_code, a more useful key_pressed alternative, added.
  12268. + SMZX mode 1 returns.
  12269. + SMZX mode 2 added.
  12270. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12271. ***NEW in 2.68***
  12272. + Expressions added.
  12273. + Trigonometric capabilities added.
  12274. + MZM file capabilities added.
  12275. + Board and overlay can now copy block to each other.
  12276. + Saving and loading of SAV files through Robotic added.
  12277. + String commands totally redone.
  12278. + Now, instead of using value/sqrt_value/abs_value you may use
  12279. a value with the counter directly as such:
  12280. * sqrtN
  12281. * absN
  12282. + fread_pos/fwrite_pos and page should work correctly now; when
  12283. you increase the pos it should bump up the page too.
  12284. + pixel_x, pixel_y, char were broken in 2.65; fixed in 2.68
  12285. + strings had some bugs in 2.62b+, should be fixed now because
  12286. of a separate implementation.
  12287. + MZX Robot files are now saved to save files, so if you have a
  12288. read and/or write file open and the game is saved, if the
  12289. game is loaded the file will be restored at the position it
  12290. was at.
  12291. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12292. ***NEW in 2.65***
  12293. + Shows current mod playing in debug window
  12294. + Misc new counters: (ro = read only, wo = write only)
  12295. * fread_counter (ro), fwrite_counter (wo): reads/writes a full
  12296. counter from file
  12297. * board_w (ro), board_h (ro): returns current board
  12298. width/height
  12299. * robot_id_(name) (ro): returns the ID number of robot "name"
  12300. * r(number).(counter) (ro): returns the value of the local
  12301. counter for the robot with the given ID. Note that you
  12302. cannot write to another robot's counter.
  12303. + You can now save partial charsets in the editor.
  12304. + Sprites added; limit set at 64 global.
  12305. + Counters now representable in hex.
  12306. + Subroutines added.
  12307. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12308. ***NEW in 2.62***
  12309. + Strings added; limited to ten strings.
  12310. + "mod_order" counter: reports the current order (that is,
  12311. pattern) the playing module is at. Used in conjunction with
  12312. the jump mod order command it can be used to save/restore a
  12313. mod position between boards...
  12314. - MZX 2.62 files are no longer forward compatible. That means
  12315. that a file made in MZX 2.62 will NOT work in any previous
  12316. versions (but it WILL work in future versions, so long as
  12317. they set the version string correctly).
  12318. - The string reading from files may not work correctly on the
  12319. first read (that is, it might truncate the first character of
  12320. the string). For this reason put a junk string in the first
  12321. part of the file and read it first.
  12322. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12323. ***NEW in 2.61***
  12324. + Game speeds have been normalized.
  12325. + Original startup color scheme implemented!
  12326. + Redocumentation of a few features left undocumented.
  12327. - Password protection has been fully removed.
  12328. <p class="helpcentered">***</p>
  12329. <a class="helplink" href="#NEWINVER.HLP__1st">NEW in MegaZeux!</a>
  12330. <a class="helplink" href="#284CLOG.HLP__284">New in Versions 2.84 to 2.84c</a>
  12331. <a class="helplink" href="#2823CLOG.HLP__283">New in Versions 2.82 to 2.83</a>
  12332. <a class="helplink" href="#281CLOG.HLP__281">New in Versions 2.81 to 2.81h</a>
  12333. <a class="helplink" href="#280CLOG.HLP__280">New in Versions 2.80 to 2.80h</a>
  12334. <a class="helplink" href="#OLDESVER.HLP__201">New in Versions 2.01 to 2.60</a>
  12335. <a class="helplink" href="#NEWIN200.HLP__1st">New in Version 2.00</a>
  12336. <a class="helplink" href="#ANCENVER.HLP__1xx">New in Versions Through 1.03</a>
  12337. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12338. <hr /></div>
  12339. <div class="helpfile" id="OLDESVER.HLP">
  12340. <a class="helpanchor" name="OLDESVER.HLP__201"> </a>
  12341. <p class="helpcentered"><span class="f9 ">New in Versions 2.01 to 2.60</span></p>
  12342. <span class="fE ">2.60 release:</span>
  12343. + File access
  12344. + Menu activation/deactivation
  12345. + Current key pressed detection
  12346. + Easy access to all 16 bits of a counter
  12347. + Pixel editing of a char set
  12348. + Single Byte editing of a char.
  12349. + Real player distance
  12350. + :key# added: gives twos-compliment of key value.
  12351. - SMZX removed.
  12352. - inter robot targeting removed.
  12353. - Random color startup removed.
  12354. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12355. <span class="fE ">2.51ak1.0 release:</span>
  12356. + Added Numerous new Counters
  12357. + Added new inter robot targeting system
  12358. + Added new SMZX mode, dynamic resolution setting
  12359. + Fixed fatal crash when taking a picture, also increased
  12360. the number of picture you can take to 99
  12361. + Removed Built-in ASCII charset
  12362. + Added Random color start up
  12363. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12364. <span class="fE ">2.51s3.2 release:</span>
  12365. + Removed password protection
  12366. + Added new counter BIMesg to turn off built-in messages
  12367. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12368. <span class="fE ">2.51s3.1 release:</span>
  12369. + Fixed damage table, now works correctly
  12370. + Fixed unworking Alt+s
  12371. + Fixed screenshot name
  12372. + Fixed strange missile color when firing
  12373. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12374. <span class="fE ">2.51s3 release:</span>
  12375. + Fixed bug involving savegame name being overwritten by mod
  12376. name
  12377. + Fixed overlay transparency weirdness. Now, background of
  12378. lower layer will ALWAYS show through if background of
  12379. overlay is 0
  12380. + Added in kev's refresh screen support. Press Alt+w on the
  12381. title screen or editor screen, and = in the game(don't ask,
  12382. has to do with mzx's keyboard handler). Use this if your
  12383. charset gets corrupted in windows.
  12384. + Screen shot saving rotates file name(starts with screen0.pcx)
  12385. + Fixed bug involving incorrect loading of mzx health etc.
  12386. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12387. <span class="fE ">2.51s3final release:</span>
  12388. + Fixed bug involving mod * settings being lost when loading
  12389. + Should have fixed ems problems some were reporting, if not,
  12390. just try to get more conventional memory. Enclosed document
  12391. (convmem.txt) should help you.
  12392. + Fixed a bug involving direction checking.
  12393. + Pressing ']' at most any time will now save a screenshot to
  12394. screen.pcx
  12395. + Pressing Alt+8 in the editor will set the current mod to *.
  12396. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12397. <span class="fE ">2.5.1s2beta release:</span>
  12398. + Added MOD "*", which allows a board to use whatever module
  12399. the previous board was using; this necessitated a change in
  12400. the .SAV file format (still need changes in the editor UI
  12401. to access this feature outside of Robotic)
  12402. + inmate's semantics for MOD "SOMETHIN.MOD*" aren't
  12403. immediately possible, although a rough hack is in already
  12404. + char edits are now not displayed until the beginning of the
  12405. next cycle; the deferred display should eliminate a lot of
  12406. flickering
  12407. + an (at least partial) fix for the infamous UNDER bug
  12408. + MOUSEX, MOUSEY and BUTTONS are now buffered.
  12409. + more sane magic handling
  12410. + can load MZX 2.51 and 2.51S1 worlds, but will only save
  12411. 2.5.1spider2 format
  12412. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12413. <span class="fE ">2.51s1beta release:</span>
  12414. + Increased counters to 1000.
  12415. + Added following counters: (ro) is read only, (r&w) is read +
  12416. write
  12417. * (r&w) MOUSEX, MOUSEY - Location of mouse cursor over the
  12418. screen.
  12419. * (ro) BUTTONS - Status of the buttons (none=0,left=1,
  12420. right=2,both=3)
  12421. * (ro) MBOARDX, MBOARDy - Location of mouse cursor over the
  12422. board.
  12423. * (ro) SCROLLEDX, SCROLLEDY - Length the screen has been
  12424. scrolled in each direction.
  12425. * (ro) PLAYERX, PLAYERY - Location of the player
  12426. * (r&w) CURSORSTATE - Turns on & off the hardware cursor
  12427. (0= off, 1= on, 0 default)
  12428. + Added new independent counter like LOOPCOUNT, named LOCAL,
  12429. it's now possible for a robot to search the screen or
  12430. something without wasting a counter.
  12431. + New .MZX and .SAV formats for MZX2.51S1.
  12432. + .SAV files from 2.51S1 are incompatible with 2.51, and
  12433. vice-versa
  12434. + 2.51S1 is capable of loading 2.51 .MZX world files.
  12435. - 2.51 is not capable of loading .MZX files created or opened &
  12436. saved in 2.51S1
  12437. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12438. <p class="helpcentered"><span class="fE ">NEW in version 2.51: ALL NEW music/sound code! 32-channels;</span></p><p class="helpcentered"><span class="fE ">bug-free; support for stereo, 16-bit, GUS, and PAS-16;</span></p><p class="helpcentered"><span class="fE ">support for many formats and effects; up to four</span></p><p class="helpcentered"><span class="fE ">simultaneous sound effects!</span></p>
  12439. Note that the new music support requires that you CONVERT all
  12440. non-MOD files using the included program, 2GDM. See 'MegaZeux's
  12441. Sound System' for details on the NEW music system.
  12442. <a class="helplink" href="#SOUNDEFX.HLP__1st">MegaZeux's Sound System</a>
  12443. Note- This is a direct translation from the file WHATSNEW.251,
  12444. included with MegaZeux. If you haven't used version 1.03 or
  12445. before, you probably won't understand much of this list.
  12446. <span class="fE ">New in version 2.51: (quick fix before I do 3.00!)</span>
  12447. * Bug where moving north or west towards a board that is
  12448. larger than 100 tiles in a dimension may not work properly
  12449. fixed.
  12450. * Bugs in 2GDM.EXE preventing proper conversion of some S3Ms
  12451. fixed.
  12452. * A rare bug preventing internal MOD conversion fixed.
  12453. * "Error opening MOD" will no longer appear during normal
  12454. gameplay.
  12455. * Exporting ANSis now adds a color to the end returning text
  12456. to normal grey.
  12457. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12458. <span class="fE ">New in version 2.50:</span>
  12459. * FOR ALL YOU 2.07 USERS- THE MAJOR UPGRADE is the new sound
  12460. code! Support for stereo, 16-bit, more cards, 4 sound
  12461. effects channels, 32 music channels, higher quality, and
  12462. faster sound code! Less bugs! More formats supported! All
  12463. non-MOD files MUST be converted to GDM using the included
  12464. 2GDM.EXE program. Formats supported- MOD (up to 32 channels),
  12465. WOW/OCT/NST, S3M, 669, and MTM.
  12466. * Volume controls (overall and SAM) added to F2-Settings (saved
  12467. in .CFG file)
  12468. * SAMs play at 2x volume.
  12469. * MTM support added to 2GDM.EXE. Other formats aren't added
  12470. because they aren't needed (not used often enough) or in the
  12471. case of XM, because they support too many advanced features
  12472. that MZX does not support. Partial XM support MAY be added
  12473. later.
  12474. * Many minor bug fixes in 2GDM.EXE's conversion routines.
  12475. * Internal MOD conversion (in MegaZeux) sped up considerably.
  12476. * For all those that upgraded from 2.07, see 2.49g and 2.48b
  12477. WHATS-NEW for more stuff, including a couple interesting
  12478. new Robotic features
  12479. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12480. <span class="fE ">New in version 2.49g:</span>
  12481. * New Import function added- You can import an ANSi to any
  12482. position on the board.
  12483. * Full SAM sound effect support as in the original 2.07 version
  12484. (but using the new MOD code for up to 4 simultaneous
  12485. channels)
  12486. * The OPEN Robotic command will now push the Robot out of the
  12487. way if the door would be blocked by the robot.
  12488. * REL PLAYER and REL COUNTERS now affects the THISX/THISY
  12489. counters (giving the distance FROM the player/counters TO
  12490. the Robot) and the prefixes also affect the IF [dir] BLOCKED
  12491. command, allowing you to check for blocked status next to
  12492. the player or an arbitrary position.
  12493. * [ box message statements now clip their message to 64
  12494. characters (the maximum) on display. Note that all other
  12495. box-message statements are NOT clipped!
  12496. * Color codes are allowed in ? and & box message statements
  12497. * Invalid sound card settings no longer cause a lock-up
  12498. * You can hold down the mouse button to cycle through RGB
  12499. values in the palette editor
  12500. * Changing something to an explosion no longer can cause weird
  12501. colors
  12502. * What's New section of help sorted by version
  12503. * Placing a robot over the player is prevented with a warning
  12504. * The "Alt+N- Music" lights up properly in the editor now
  12505. * When changing from a larger board to a smaller board, you
  12506. can no longer accidentally have the cursor outside of the
  12507. board size.
  12508. * GUS owners don't need to enter # of SFX channels, since
  12509. MegaZeux cannot support GUS sound effects anyways.
  12510. * File boxes (loading MODs, worlds, etc.) can now hold as
  12511. many filenames as memory allows.
  12512. * GUS setup shown properly on configuration screen
  12513. * 2GDM.EXE rewritten- In THIS release, it can only convert
  12514. MOD, NST, WOW, OCT, 669, and S3M files! The final (2.50)
  12515. release will have support for the remaining file formats.
  12516. It is being rewritten to fix many small bugs and make it
  12517. smaller and faster, as well as possibly add more file
  12518. formats.
  12519. * 2GDM.EXE- F00 effect in MODs deleted during conversion
  12520. * 2GDM.EXE- Bad effects S8x, S0x, and Xxx deleted during S3M
  12521. conversion
  12522. * 2GDM.EXE now works properly from other directories
  12523. * INTERNAL MOD loading support. You can now load MODs, NSTs,
  12524. WOWs, and OCTs from within the game without having to
  12525. convert them to GDM first. The only exception is 15-
  12526. instrument MODs- they must first be converted. Note that
  12527. all other formats, such as S3M, 669, etc. must still be
  12528. converted. NST/WOW/OCT support was only added because they
  12529. are extremely similar to MODs, and MODs were required for
  12530. backward compatibility.
  12531. * Insert doesn't display those "Lo bomb selected" messages,
  12532. etc. if the player is Attack Locked or settings say he
  12533. cannot bomb.
  12534. * Minor bugs in ANSi import corrected. (problem fixed- caused
  12535. errors on import of ANSis with more or the same number of
  12536. lines as the current board size maximum)
  12537. * "Ammo <10" and "Ammo >9" entries in Global Chars changed to
  12538. "Small Ammo" and "Large Ammo" to prevent confusion.
  12539. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12540. <span class="fE ">New in version 2.48b:</span>
  12541. * ALL NEW music code! Features include faster, NO BUGs, 32
  12542. channels, more formats supported (sorry, no MID or XM) etc.
  12543. * Bug where selecting "(no board)" to add a board caused an
  12544. error if that wasn't the first "(no board)" on the list.
  12545. * Bug where if a robot line entered consisted of only
  12546. semicolons, spaces, and commas, it would screw up that
  12547. robot's program, fixed.
  12548. * Command line options (-port,-dma,-irq) added for setting
  12549. sound card parameters. Only needed if auto-detection fails.
  12550. * Minor help corrections.
  12551. * Save/load during testing in editor disabled.
  12552. * Pressing \ no longer causes problems during gameplay.
  12553. * Bug where "Restart board" for death option in global
  12554. options didn't function properly on first board, nor did
  12555. restart-if-zapped. (fixed)
  12556. * Filling in the overlay no longer locks up if you fill over
  12557. something of the same color and picture.
  12558. * Overlay no longer messed up when resizing board.
  12559. * Lock up on Import World removed.
  12560. * Setting the counter "INVINCO" to 0 works properly.
  12561. * Hopefully fixed rare lockups after robot box messages.
  12562. * Added confirmation for board deletion in editor.
  12563. * All included worlds are NO LONGER password protected. (The
  12564. old password was "megahertz".)
  12565. * Minor bugs in passage search algorithms corrected.
  12566. * Obscure bug involving REL prefixes if used in "infinite-
  12567. loop" type constructs (fixed)
  12568. * In editor- Alt+Dir to move 10 spaces now works as expected
  12569. with draw mode on. (IE it will draw in ALL 10 spaces)
  12570. * Bug where passages on screens wider than 256 spaces didn't
  12571. work properly. (fixed)
  12572. * Bug where fire-to-player's-right would lock up and kill him
  12573. FIXED.
  12574. * Counters can be used in ALL strings in &COUNTER& notation.
  12575. For example, SEND "ROBOT" "LABEL&COUNTER&" will replace
  12576. &COUNTER& with a number. This works for ALL strings -
  12577. counter names, labels, robots, etc. See Robotic help for
  12578. details.
  12579. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12580. <span class="fE ">New in version 2.07:</span>
  12581. * Labels and NON-valid counter-regulated options in robot box
  12582. messages are not blank lines; Instead they are just removed
  12583. from the message.
  12584. * Passage (stairs/caves/whirlpools) search algorithm
  12585. corrected.
  12586. * Digitized sample SFX works properly with the note B now.
  12587. * Bug where getting multiple energizers in a row screwed up
  12588. player's color is fixed.
  12589. * Bug where chests with invinco potions will die when taken
  12590. is fixed.
  12591. * Filling in editor, with a robot/scroll/sensor over itself,
  12592. is now handled properly.
  12593. * Whee!! More minor help typos fixed.
  12594. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12595. <span class="fE ">New in version 2.06:</span>
  12596. * Yet more cursor safeguards inserted. (Where do you GET
  12597. these problems!? :)
  12598. * Saving a game no longer asks for overwrite confirmation if
  12599. the file doesn't really exist.
  12600. * Help and tutorial- Minor textual errors fixed
  12601. * Save dialog boxes only allow entry of 12 characters now,
  12602. instead of 13.
  12603. * Help file can be accessed from any directory.
  12604. * -l cmd line option will no longer cause a loading error with
  12605. an oversized filename. (it will instead be ignored)
  12606. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12607. <span class="fE ">New in version 2.05:</span>
  12608. * Cursor bug fixed. (If it isn't, then get a new BIOS! :p)
  12609. * MegaZeux now utilizes overlaid code, for almost 50k core
  12610. memory savings.
  12611. * LOCKSCROLL cmd fixed
  12612. * Moving into the lower-right corner of full-size boards no
  12613. longer warps you to the upper-left corner.
  12614. * SET COLOR and COLOR INTENSITY don't blow up if the color is
  12615. not from 0 to 16.
  12616. * Code for activating 16 background colors is now shorter and
  12617. uses BIOS calls for compatibility.
  12618. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12619. <span class="fE ">New in version 2.04:</span>
  12620. * Slight modifications to Robotic Tutorial (help file)
  12621. * Sending a robot a message, when it hadn't done anything yet
  12622. that turn, activates it immediately. This helps with
  12623. synchronized activities, such as large, multi-robot
  12624. creatures.
  12625. * Alt+Numerics feature of BIOS keyboard routine DISABLED (IE
  12626. Alt+3 will no longer break to DOS)
  12627. * Counters' code optimized.
  12628. * The temp file <span class="fE ">DITRSZ.TMP created when resizing a board is</span>
  12629. now deleted when finished.
  12630. * a KEYBOARD CODE kink was worked out (hopefully got 'em
  12631. all...)
  12632. * Made printer code more general (should work on any printer
  12633. in text mode)
  12634. * PALETTE BUG on some SVGA cards FIXED. (black now looks like
  12635. black) If it still isn't, please notify me.
  12636. * HOME and END will jump to the top/bottom of a box
  12637. message/help/scroll.
  12638. * PgUp/PgDn/Mouse navigation work properly in box
  12639. messages/help/scrolls
  12640. * HOME and END in dialogs works properly now- Unless you are
  12641. editing a number, they will jump to the FIRST item and the
  12642. NEXT or OK button, respectively. In a string, they will
  12643. still jump to the start/end unless you are already there,
  12644. then they will jump to the proper dialog location.
  12645. * Robots (especially when there are lots of them) sped up.
  12646. * DUPLICATE SELF and COPY ROBOT cmds sped up some, except when
  12647. used by global robot.
  12648. * Palette intensities reset when going into editor after the
  12649. title screen changes them.
  12650. * MODULO "str" # will no longer crash if # is 0.
  12651. * Extreme palette activity no longer causes snow or (on EGA)
  12652. screen breakup. Palette activity also sped up.
  12653. * Bug fixed- If a SAM/MOD command had to free up board memory
  12654. (showing the little "freeing up board memory..." meter) then
  12655. that robot stopped running.
  12656. * Bug fixed- If the robot changed it's surroundings (IE
  12657. Putting a SPACE to it's NORTH) and then did a RANDNB or
  12658. RANDB, the new surroundings weren't always taken into
  12659. consideration.
  12660. * DIVIDE ERROR crash/bug fixed. (It was related to usage of
  12661. RANDNB and RANDB)
  12662. * CHAR "A" vs. CHAR 'A' question added to F.A.Q.
  12663. * README.TXT changed- Boot disk/support info added.
  12664. * Help on cmd ."@string" corrected.
  12665. * SPEED defaults to 4 (settings) and is saved in MEGAZEUX.CFG.
  12666. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12667. <span class="fE ">New in version 2.03:</span>
  12668. * Intensity of palette (and other stuff?) now resets after a
  12669. test game.
  12670. * Messed-up black color on certain graphics cards- Attempted
  12671. to fix.
  12672. * Minor bug in VER1TO2.EXE fixed
  12673. * Robot section of Tutorial corrected (the descriptor scrolls)
  12674. * Speeds based on real time (IE speed 3 will be the same on
  12675. ANY computer, unless the computer itself is so slow that it
  12676. forces a slower speed.)
  12677. * CAVERNS has game over screen fixed
  12678. * MOVE PLAYER [dir] "label" command now works properly.
  12679. (Before, the label was almost always ignored)
  12680. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12681. <span class="fE ">New in version 2.02:</span>
  12682. * Bugs with Enter in text mode on small boards fixed
  12683. * Bugs with slime fixed
  12684. * If you have screen faded out (COLOR FADE OUT) and go to
  12685. another screen, it no longer fades it in for you
  12686. automatically.
  12687. * HELP.DOC- CHANGE CHAR ID section fixed
  12688. * Fill really does now fill properly on boards larger than
  12689. 127x127. :)
  12690. * Sped up sensor interactions somewhat
  12691. * Fixed problems with boards not scrolling with the player,
  12692. in the game on over-sized boards. Run FIX.EXE in all
  12693. directories containing version 2.01 or 2.00 .MZX/.MZB files.
  12694. * Nothing can give you negative coins, gems, etc. (such as
  12695. thieves)
  12696. * Minor robot speed improvements
  12697. * Turning Music Off (Settings in Game) really keeps it
  12698. off... :)
  12699. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12700. <span class="fE ">New in version 2.01:</span>
  12701. * Sensor command CHAR'X' fixed
  12702. * TAKEing health now counts as hurting the player for the
  12703. :playerhurt label
  12704. * Can load help from any drive/directory
  12705. * Copy block in editor now properly clips the block's
  12706. destination
  12707. * Move block in editor now properly clips the block's
  12708. destination
  12709. * ."@new_robot_name" command added
  12710. * If the player runs up against a player bullet, it won't
  12711. hurt him
  12712. * JUSTENTERED, JUSTLOADED, and GOOPTOUCHED labels fixed
  12713. * UNLOCKSCROLL and locked scrolling in general fixed
  12714. * Global info now properly sets endgame/death boards
  12715. * Robot ASK command works properly now
  12716. * Help- internet address/address validity date corrected
  12717. * Help- CHANGE CHAR ID help section- added note about how the
  12718. numbers are also listed in the Global Edit Chars menus
  12719. * ENTER can now exit robot box messages/scrolls
  12720. * Message line (bottom) shows color correctly
  12721. * EXCHANGE/RESTORE w/DUPLICATE SELF fixed
  12722. * Attempted to fix cursor problems in editor. If it doesn't
  12723. work now, then I have no solution, as I use documented BIOS
  12724. routines with many safegaurds.
  12725. * Minor speed improvements
  12726. * Minor size reduction
  12727. * Fill in editor now works with board sizes over 127x127
  12728. <a class="helplink" href="#NEWINVER.HLP__1st">NEW in MegaZeux!</a>
  12729. <a class="helplink" href="#284CLOG.HLP__284">New in Versions 2.84 to 2.84c</a>
  12730. <a class="helplink" href="#2823CLOG.HLP__283">New in Versions 2.82 to 2.83</a>
  12731. <a class="helplink" href="#281CLOG.HLP__281">New in Versions 2.81 to 2.81h</a>
  12732. <a class="helplink" href="#280CLOG.HLP__280">New in Versions 2.80 to 2.80h</a>
  12733. <a class="helplink" href="#OLDERVER.HLP__260">New in Versions 2.60 to 2.70</a>
  12734. <a class="helplink" href="#NEWIN200.HLP__1st">New in Version 2.00</a>
  12735. <a class="helplink" href="#ANCENVER.HLP__1xx">New in Versions Through 1.03</a>
  12736. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12737. <hr /></div>
  12738. <div class="helpfile" id="NEWIN200.HLP">
  12739. <a class="helpanchor" name="NEWIN200.HLP__1st"> </a>
  12740. <p class="helpcentered"><span class="f9 ">New in Version 2.00:</span></p>
  12741. * All code has been rewritten or at least stepped through line
  12742. by line, except for the music code.
  12743. * New user interface style and startup screen. Lots of neat
  12744. little items like shadows, nicer colors, etc. Mostly
  12745. aesthetic but nice. Mouse support also improved.
  12746. * Keyboard code rewritten (again) All Alt+lock, shift-lock,
  12747. and ctrl+lock problems, as well as most other keyboard
  12748. problems, should not be a problem anymore. You may have to
  12749. use the -keyb2 command line option. If a key locks, tap it
  12750. a couple times.
  12751. * No flicker- The game engine now page flips.
  12752. * Better string input- ANYWHERE you can enter a string, you
  12753. can now move with the cursors and insert in the middle...
  12754. * Better character selection box- Shows all the characters.
  12755. * New default character set- Much nicer, more general use
  12756. characters.
  12757. * Now detects processor to avoid lock ups on an old 8086/8088.
  12758. If an invalid graphics card is found, DOS services are used
  12759. for printing.
  12760. * Different command line options. (use -? to get info on them)
  12761. * Context sensitive help.
  12762. * Bombs and Sensors under the player no longer mess up floors,
  12763. etc.
  12764. * CHANGEing something to lava, fire, etc. now works correctly.
  12765. * Transporting onto a Sensor works properly.
  12766. * New conditions- MUSICON and PCSFXON
  12767. * Changing things to spaces CLEARS them, to avoid screwing up
  12768. floors.
  12769. * Restart position not changed during a save/load
  12770. * Label- :playerhurt for when player is hurt, not sent on
  12771. invincible hurts
  12772. * Maximum Robot commands per cycle is 40, not 25
  12773. * Global Robot runs normally in freeze/slow time
  12774. * Choice of 100x100, 200x50, 400x25, 80x125, or 60x166 for
  12775. each board.
  12776. * Character editor remembers character you were editing.
  12777. * Robo-P renamed to Robotic
  12778. * Scrolls now allow proper use of mouse, pgup, and pgdn.
  12779. * Scrollborder became Scrollcorner.
  12780. * :gooptouched auto label added, for when the player touches
  12781. Goop.
  12782. * Messages like "You got a red key" are now "You got a key" so
  12783. palette fiddling won't make strange words. :)
  12784. * Within Robotic messages (box/line) a &INPUT& will be
  12785. replaced by the exact text of the currently inputted string
  12786. * Notes in play of same freq. won't run together
  12787. * Explosions won't destroy entrances, lava, water, ice, or
  12788. goop
  12789. * Robots are stopped from firing if there is already a bullet
  12790. of the same dir/type in that dir.
  12791. * Other things will push the player ONTO a Sensor.
  12792. * The above will trigger the SENSORON label.
  12793. * If player is on an entrance without having been there before
  12794. the update, use it. (I.E. can now be pushed onto entrances)
  12795. * Teleporting or walking onto a screen and starting on a
  12796. Sensor will trigger the SENSORON label
  12797. * Non-players/puzzle pieces now transport properly.
  12798. * PLAYERLASTDIR (0-4) and PLAYERFACEDIR (0-3) as counters.
  12799. * Points for killing enemies (3) and points for rings/potions
  12800. (5)
  12801. * Way to disable edging spaces on message row- ENABLE MESG
  12802. EDGE, DISABLE MESG EDGE.
  12803. * Cmds- LOOP START, LOOP # TIMES, ABORT LOOP, uses Robot
  12804. counter LOOPCOUNT
  12805. * Counter limit increased to 50 plus built-in.
  12806. * New passage search order- 1) Same type, same color 2) Same
  12807. color 3) Same type, same foreground 4) Same foreground 5)
  12808. Same type 6) Default player position
  12809. * Palette import/export
  12810. * If the starting board is deleted, change starting board to
  12811. title.
  12812. * "Sets of five" numerical input actually increase by fives
  12813. * Holding the mouse button on a numeric arrow button cycles
  12814. the num.
  12815. * Removed the "." Directory from file menus
  12816. * Six (not four) status counters.
  12817. * CHANGE blah p?? blah p?? (notice the p?? added for the first
  12818. thing)
  12819. * Doors, if can't move, don't advance in anim. I.E., doors
  12820. won't get "stuck" if they are blocked.
  12821. * PERSISTENT GO command, like /"nsew" but WAITS to move if
  12822. blocked.
  12823. * No chest message on empty.
  12824. * Startup "help" screen on first use.
  12825. * Explosions Leave Empty doesn't mess up ANY floors, etc.
  12826. * Much better fill routine.
  12827. * Entering a non-cmd with the first character as a [, ., :,
  12828. etc. automatically formats it. Leading and trailing spaces
  12829. and quotes are cleared first.
  12830. * Save/Load game/etc. are accessed through F-keys in the game.
  12831. * Removed special menu for Alt+M (modify) in editor
  12832. * In editor, keeps track of whether world has been modified.
  12833. * Ceiling layer - non-interactive, but overlays things and
  12834. looks neat. Included in editor- Edit, display toggle.
  12835. Robots - changing it by character, copying areas of it, and
  12836. filling an area of it by cmd or string (I.E. set area to "A
  12837. string") Char of 32 is see-thru. Layer during game can be on,
  12838. off, or static (I.E. not Scrolling, just showing upper left
  12839. portion).
  12840. * Robot commands to change the mode of saving.
  12841. * Limit any one Robot/Scroll to 31k.
  12842. * Allow placing shooting fire in editor.
  12843. * Make all enemies without speed arguments move 1/2 their
  12844. speed.
  12845. * Player CANNOT be overwritten, you must place him anew to
  12846. move him.
  12847. * First line of Robot now shows if it is a box mesg.
  12848. * Speed 1 in game does NOT page flip, for speed.
  12849. * Inputted strings allow input of spaces.
  12850. * Time limits- Out of time zaps to entrance automatically,
  12851. THEN RESETS TIMER. Counter TIMERESET holds reset value for
  12852. timer, and the TIME counter holds the current time.
  12853. * MOD code has only an error on no memory. Errors for loading
  12854. MODs and SAMs (I.E. not enough memory) are active if the
  12855. debug menu (F6) is shown. SAMs have errors for file errors/
  12856. out of memory. These errors are always in the editor/testing
  12857. games.
  12858. * First test of a game doesn't give GAME OVER.
  12859. * Sound effects aren't cut off across screens.
  12860. * Placing a bomb while upon a passage no longed warps to title.
  12861. * Sensors are pushable by things other than the player.
  12862. * New Sensor-activated label- SENSORPUSHED, when the Sensor is
  12863. pushed, with or without the player on it.
  12864. * Label- JUSTENTERED when the player just entered the screen
  12865. or the game is started. (NOT restored)
  12866. * Command- Can lock/unlock board Scrolling temporarily-
  12867. LOCKSCROLL, UNLOCKSCROLL.
  12868. * IF ALIGNEDROBOT "Robot" "label"
  12869. * Damage editing- Changing the amount of damage things
  12870. inflict.
  12871. * Load title screen directly when loading game for title.
  12872. Prevents music on first board from playing, and saves time.
  12873. * New Robot-specific auto-counters- (read only) THISX, THISY.
  12874. * Anywhere a number can go in a Robotic command, a counter can
  12875. too. Wherever there is a number, character, or color, you
  12876. can use a counter name in quotes instead.
  12877. * Cmd line- load MZX file. (-lxxxxxxxx.MZX)
  12878. * Config file for options, ask "OK?" on startup. Removed all
  12879. config cmd line options.
  12880. * Cmd- SCROLLVIEW X Y. (upper left hand corner is specified)
  12881. Based off of current player position.
  12882. * Cmd- SWAP TO WORLD "world.mzx" as if starting the world up.
  12883. Skips any title screen. (you could put a message there) The
  12884. other world can have a "Only play from swap" option set.
  12885. * Quicksave key in game- Saves without asking for filename and
  12886. confirmation.
  12887. * Quickload key in game- Same idea.
  12888. * Option (default off) on world to clear messages, bullets,
  12889. and spitfires from a screen when exited.
  12890. * Label JUSTLOADED sent to as soon as the game is started or
  12891. restored. (including the title screen and actual playing)
  12892. * Shows character number on char edit and char selection.
  12893. * Shows color number on color selection.
  12894. * Multiple spots to SAVE/RESTORE/EXCHANGE PLAYER POSITION. (8)
  12895. * RESTORE/EXCHANGE PLAYER POSITION with the option to
  12896. duplicate the Robot to take his place. When the player moves
  12897. back, the Robot is, of course, deleted.
  12898. * Remove RANDOM POS/SIZE options.
  12899. * Allow labels to interrupt in a Robot's box-message code and
  12900. have the message still show uninterrupted.
  12901. * Show a pic of the item next to it in the THINGS menus.
  12902. * Different bullet pics/colors for player, neutral, and enemy
  12903. bullets.
  12904. * Status shown counters won't show if the value is 0.
  12905. * Prefixes that affect only the first or last x y pair of a
  12906. command. (REL COUNTERS LAST, REL SELF FIRST, etc.)
  12907. * Mod fading commands (background)
  12908. * Allow lives/health to max out at 65535.
  12909. * Score as a counter.
  12910. * Maximum of 150 boards. (not 127)
  12911. * Cmd- COPY BLOCK x y x y x y.
  12912. * Label for SpitFire hitting a Robot- "spitfire"
  12913. * Label for Lazer hitting a Robot- "lazer"
  12914. * Cmd- CLIP INPUT (chops first word + spaces off of input)
  12915. * Cmd- IF FIRST INPUT "str" "label"
  12916. * KEY1 through KEY9 labels. (like KEYA thru KEYZ)
  12917. * Allow viewport sizes down to 1x1.
  12918. * PUSH Robot command- push things to dir without moving there.
  12919. * ONE global Robot. (No ID) Stored separate from a board, and
  12920. is active on ALL boards.
  12921. * Robots- Allow importing of a character into a CHAR EDIT
  12922. command.
  12923. * Robots- Have SCROLL CHAR, FLIP CHAR, and COPY CHAR commands.
  12924. * Full backward compatibility w/old MegaZeux via a conversion
  12925. program. (VER1TO2.EXE)
  12926. * Editable built-in sfx. (including to digitized)
  12927. * Elements- Goop, which is like Water from ZZT.
  12928. * EGA/VGA palette editor, with easy fading. Commands- COLOR
  12929. INTENSITY # PERCENT, COLOR INTENSITY "counter" PERCENT,
  12930. COLOR FADE IN, COLOR FADE OUT, SET COLOR # TO r g b, SET
  12931. COLOR # TO INTENSITY # PERCENT, SET COLOR "counter" TO
  12932. INTENSITY "counter" PERCENT. (note- the FADE OUT/IN cmds
  12933. are "quick" fades, IE not in the bk, but they actually
  12934. stall the game a bit. They also end the current cycle.)
  12935. * Display counters within strings, IE. * "You have &GEMS&
  12936. gems." (use && for &)
  12937. * Robot command- LOAD CHAR SET "file.chr"
  12938. * New default characters for global chars and char set.
  12939. * When adding another board, copy most of the options (can
  12940. attack, etc.) from the current board, including MOD file.
  12941. * Edit ANY character/color from Global Chars.
  12942. * Char editor- Revert to ASCII, Revert to MegaZeux, changed
  12943. REVERSE to NEGATIVE.
  12944. * Alt+Y Debug info LABELs each line.
  12945. * Block command- Paint (w/color).
  12946. * Board editor- Scroll when cursor is five spaces from the
  12947. edge.
  12948. * Fade in/out between screens and program areas.
  12949. * Ice does NOT keep pushing you against something. If you are
  12950. blocked, cease movement.
  12951. * Make sound test available in editor as an option, from the
  12952. sound effects editing screen.
  12953. * Can't test a save-locked game w/o pw, and it no longer locks
  12954. up from this.
  12955. * REMOVED Scroll coloring on line by line. (using ! codes)
  12956. * Export .ANS file.
  12957. * Energizer will return player color to old color.
  12958. * Capture and throw away ctrl+C, PrintScreen, SysRq, and
  12959. Pause.
  12960. * Return in editor at end of program can now add a blank line.
  12961. * Allow marking of a section of Robot, in lines. You can now
  12962. Copy, Cut, Clear, or Paste blocks.
  12963. * Remove useless "pro" mode.
  12964. * Robot commands- DIVIDE, MULTIPLY, MODULO.
  12965. * Different player pics per direction.
  12966. <a class="helplink" href="#NEWINVER.HLP__1st">NEW in MegaZeux!</a>
  12967. <a class="helplink" href="#284CLOG.HLP__284">New in Versions 2.84 to 2.84c</a>
  12968. <a class="helplink" href="#2823CLOG.HLP__283">New in Versions 2.82 to 2.83</a>
  12969. <a class="helplink" href="#281CLOG.HLP__281">New in Versions 2.81 to 2.81h</a>
  12970. <a class="helplink" href="#280CLOG.HLP__280">New in Versions 2.80 to 2.80h</a>
  12971. <a class="helplink" href="#OLDERVER.HLP__260">New in Versions 2.60 to 2.70</a>
  12972. <a class="helplink" href="#OLDESVER.HLP__201">New in Versions 2.01 to 2.60</a>
  12973. <a class="helplink" href="#ANCENVER.HLP__1xx">New in Versions Through 1.03</a>
  12974. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12975. <hr /></div>
  12976. <div class="helpfile" id="ANCENVER.HLP">
  12977. <a class="helpanchor" name="ANCENVER.HLP__1xx"> </a>
  12978. <p class="helpcentered"><span class="f9 ">New in Versions Through 1.03</span></p>
  12979. 1.03 release: QUICK FIXES, LIMITED DISTRIBUTION
  12980. * TELEPORT command fixed
  12981. * Gives error on attempt to test pw-protected world
  12982. * "Explosions leave Empty" won't screw up floors, etc. (except
  12983. web)
  12984. * Placing a bomb over an entrance no longer warps to the title
  12985. screen
  12986. * INPUT STRING allows input of spaces
  12987. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12988. 1.02 release: NEW:
  12989. * Miscellaneous help errors fixed
  12990. * Miscellaneous errors in Caverns fixed
  12991. * Miscellaneous speed/efficiency code updated
  12992. * AVALANCHE fully fixed, now can be entered into a robot
  12993. * Timing code fixed (may fix some problems)
  12994. * Slight modification to keyboard code (may fix some problems)
  12995. * Added -keyboard2 option
  12996. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  12997. 1.01 release: FIRST "NON-BETA" RELEASE:
  12998. * JUMP MOD ORDER 'num' has now been documented.
  12999. * AVALANCE corrected to AVALANCHE.
  13000. * Robot command GO DIR "LABEL" fixed.
  13001. * Some minor help errors fixed.
  13002. * Fixed bug where a BECOME THING command, if becoming a space,
  13003. fake, or other "under"-type object, would not erase anything
  13004. already under the robot.
  13005. * REL TO PLAYER and REL TO SELF now work with the TELEPORT
  13006. command.
  13007. * If a robot (from WALKing) is sent to the EDGE label and none
  13008. exists, it then attempts to find a THUD label as well.
  13009. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  13010. 1.00g release: FIRST PUBLIC RELEASE:
  13011. * Removed ALL joystick support- Didn't work, couldn't get it
  13012. to.
  13013. * PW protect- lot simpler, faster, and easier to hack. :)
  13014. * GLOBAL INFO- Toggleable game over music (you should correct
  13015. this in all your pre-1.00g games)
  13016. * Fixed misc. bugs in games. SOMEONE NEEDS TO TEST THEM ALL
  13017. AGAIN FROM START TO FINISH.
  13018. * Strings w/o quotes that begin with C or P are not
  13019. capitilized funny.
  13020. * Settings box no longer turns off music.
  13021. * Alt-A in editor (param) gives error if there is not a legal
  13022. "thing".
  13023. * ALLIGNED fixed to ALIGNED (spelling error inherited from
  13024. ZZT)
  13025. * Fixed bug where if slow time or freeze time was active when
  13026. player touched a door, player was copied.
  13027. * Help- fixed slight bugs
  13028. * Fixed minor problems in Caverns, Forest, and Chronos
  13029. * MOD not required for SAM
  13030. * Level not speeded up if MOD not playing
  13031. * MOD not require a speed command (speed properly done)
  13032. * Help uses Alt-P to print
  13033. * Speed defaults to 3 not 4
  13034. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  13035. 6th beta release: NEW:
  13036. * Fixed bug where slow/stop effects didn't work on title.
  13037. * Fixed bug in command MOVE PLAYER where it would occasionally
  13038. create junk.
  13039. * Fixed bug in robot editor where if "Show Colors" option
  13040. (Alt-O) was off, any color with a ? for the second digit
  13041. showed an incorrect first digit- cV? for cF?, etc.
  13042. * The direction UNDER now works with the PUT thing dir PLAYER
  13043. command.
  13044. * Dir/drive support added to loading MZX fileboxes.
  13045. * HELP IS IN ONE FILE- MZX_HELP.PKG (note- memory minimum is
  13046. still maintained.)
  13047. * Fixed bug where fire could hurt you indirectly even if
  13048. lavawalker was in effect.
  13049. * Fixed bug where nothing (except player) could push a
  13050. pushable robot head on. (only if it was in a string of
  13051. things to push)
  13052. * Fixed bug where shooting fire would destroy entrances.
  13053. * Fixed bug in Put commands that would erase before placing,
  13054. so putting things over a fake or floor erased the
  13055. fake/floor. (etc)
  13056. * Change command- Didn't change params properly if you were
  13057. changing between like objects (IE text to text) Also made
  13058. more robust against attempts to change things to
  13059. robots/scrolls/signs/sensors/players.
  13060. * Put commands- Made more robust against attempts to put
  13061. robots/scrolls/signs/sensors/players.
  13062. * Fixed bug where no player on a board would really mean no
  13063. player!
  13064. * With Shift-F1 through Shift-F4 in editor, the key used to
  13065. stop the flashing is not interpreted but ignored.
  13066. * Sensor/Robot interactions! (See help)
  13067. * PageUp will change menus in the editor now. (along with
  13068. PageDown)
  13069. * Removed all refrences (except in file format) to double
  13070. speed robots and projectiles. Code increase is not worth it.
  13071. * RANDB, RANDNB directions added!
  13072. * Misc. help corrections and bug fixes, finished help. (except
  13073. for minor changes)
  13074. * Alt-O (options) no longer clears the command line at the
  13075. bottom
  13076. * Character insert in robot editor now inserts the characters
  13077. corresponding to 10 and 13.
  13078. * If you select base 16 in Alt-O options (robot editor) then
  13079. ALL numbers are shown in hex, including when editing the
  13080. line. (previously, the current line was shown in base 10 at
  13081. all times.)
  13082. * Chronos-Stasis finished. (not tested outside of myself)
  13083. * Forest of Ruin finished except for ending. (see above)
  13084. * Repeat (F4) and Delete line (Alt-D) added to robot editor
  13085. * Copy, Cut, and Paste line (Alt-C/T/P) added to robot editor
  13086. (note- paste REPLACES current line)
  13087. * Export robot (Alt-X) added to editor. Exporting from current
  13088. line or top of program both supported.
  13089. * Import robot (Alt-I) added to editor. Importing only looks
  13090. for *.TXT in the filebox. Import always REPLACES the current
  13091. robot program.
  13092. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  13093. 5th beta release: NEW:
  13094. * Fixed bug in teleport command where screen was not updated
  13095. if player ended up in the same position.
  13096. * Fixed bug where mouse didn't select right item on game menu
  13097. * Fixed bug where adding a new robot/scroll/sensor when the
  13098. current item was a robot/scroll/sensor would reset the color
  13099. to lt.grey
  13100. * Caverns all finished (hope I got all the bugs)
  13101. * The DEF.COLORS option doesn't reset when changing/adding
  13102. boards now
  13103. * SAM now works right...
  13104. * In fact, added new code for MOD and VOC- a LOT less "out of
  13105. mem" or "error loading" errors.
  13106. * Fixed bug with locked doors (not locks, but real doors)
  13107. * Saving games and files is MUCH faster in almost all
  13108. circumstances. Save meter more accurate as well.
  13109. * Board import/export fixed- robots/scrolls/sensors were
  13110. messed up
  13111. * Pgdn, Pgup, Ctrl/Alt Home, Ctrl/Alt End added to robot
  13112. editor.
  13113. * Ctrl/Alt Left + Right used to jump 10 chars in character
  13114. selection boxes.
  13115. * Save area in character editor (F-2 and F-3) stays the same
  13116. between calls to the character editor, including when
  13117. loading games.
  13118. * Character editor shows not only current char pic, but those
  13119. of the three chars before and three chars after as well.
  13120. * Fixed bug where a robot with no program would majorly mess
  13121. up things.
  13122. * Misc. bug fixes, help typos, and optimizations.
  13123. !ADDED 14 COMMANDS (all commands finished)
  13124. !ADDED 2 DIRECTIONS (randp, randnot)
  13125. * Help brings up Robot Table of Contents within robot editor
  13126. * Quotes not required around strings of one word not matching
  13127. any reserved word, IE a word used for ANYTHING else,
  13128. anywhere. They are added automaticaly, though.
  13129. * EDITOR OPTIONS in robot editor (Alt-O) Choose number base,
  13130. upper case or lower case, and whether to display colors.
  13131. * Bug fixed in editor- Now colors like c7? (with ? at end)
  13132. work right.
  13133. * Calibrate Joystick button added to Game options (F2) Tony-
  13134. See if this helps.
  13135. * Speeded up certain file operations. This MAY fix the
  13136. "lockup" bug when accessing Help during a MOD- I think that
  13137. the lockup may of been just a really slow file access.
  13138. * Added X position indicator to bottom left of robot window,
  13139. to facilate creating box messages that aren't too long.
  13140. * Fixed bug that allowed entering ANY character at the mixing
  13141. rate prompt.
  13142. * INPUT STRING, IF STRING "str" "label", IF STRING NOT "str"
  13143. "label" robot commands added.
  13144. * UNDER/BENEATH direction added to IF dir PLAYER thing "label"
  13145. command.
  13146. * Clarified options at startup- Music device became Device for
  13147. Digitized Music and Sound.
  13148. * Added four more mixing rates. Choose from 7500 up to 25000
  13149. in jumps of 2500. (eight rates total)
  13150. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  13151. 4th beta release: NEW:
  13152. * Note- SAVE GAME FORMAT CHANGED. Delete all your .SAV files.
  13153. .MZX file format NOT changed- compatibility still
  13154. maintained.
  13155. * Scroll border/etc. colors changable using robot commands-
  13156. SCROLLBASE COLOR, SCROLLBORDER COLOR, etc. (see help)
  13157. * Removed Alt-Minus and Alt-Plus keys in editor- Useless and
  13158. dangerous. (they were only for testing purposes.)
  13159. * Various bug fixes
  13160. * Joystick support- UNTESTED! Tony- I need feedback!
  13161. * Mixing rate options at startup.
  13162. * A warning is given and verification is necessary if you try
  13163. to save a .MZX file over an already existing file.
  13164. * You can now choose from some additional music output
  13165. devices.
  13166. * Help is in seperate files, MZX*.HLP, to save memory. (lots!)
  13167. * I FINALLY THINK THE MEMORY AND FILE CODE WORKS PERFECT!
  13168. Except for speed. Something to work on...
  13169. * Char editor shows values of bytes along left side, for use
  13170. with robot command CHAR EDIT.
  13171. * Yet more help
  13172. * Robot editor! See the top box for keys to use (Import/eXport
  13173. not implemented yet)
  13174. * Robots as well! See Help, Robo-P Reference, Command
  13175. Reference, and look at commands for help using them. Some
  13176. are not done yet.
  13177. * Video mode returns to default VGA mode (text 16x9) on exit
  13178. * File lists sorted
  13179. * Directory support and DRIVE support in file boxes WAS added,
  13180. but was taken out due to problems since changing the current
  13181. directory makes it almost impossible to find the current
  13182. .MZX file to read boards from.
  13183. * Custom Critical Error Handler (no dos grey messages if the
  13184. drive is invalid or something like that)
  13185. * Password displayed as *'s when inputting, except on
  13186. protection menu. (Do YOU think it should be *'s on
  13187. protection menu? 'T'? CP?)
  13188. * Enemys-hurt-enemys option added (GLOBAL info, SPEC. button)
  13189. * "Show Robots" option added (Shift F2)
  13190. * More help added
  13191. * Fixed sensor bug (The player couldn't move onto it in most
  13192. cases)
  13193. * Fixed a bug where if you tried to Grab something via the
  13194. Modify menu and the current thing was a scroll, sign, or
  13195. robot that had no copy anywhere else on the current board,
  13196. then the memory allocated to that object was not freed.
  13197. (whew!)
  13198. * A few more optimizations
  13199. * Mouse disapears after a certain period of time of non-use
  13200. * Boulders from the AVALANCHE potion, and explosions from the
  13201. BLAST potion can't appear over an entrance anymore
  13202. * Fixed some bugs in Text Export
  13203. * Removed .BIN import- Waste of program space
  13204. * Made ALL options (protection, ANSi import) available in
  13205. unregistered- now registration is only for the games
  13206. * Removed "suicide key" from game. Think about how it could
  13207. screw up carefully planned cinemas, story sequences, etc.
  13208. * Mouse support in character editor
  13209. * Test function added
  13210. * Speeded up saves and board switches
  13211. * Slowed down all file access (okay, so it's not a feature,
  13212. but it's more reliable, as is memory management as well)
  13213. * Made save meter more accurate
  13214. * BLOCK COMMANDS! (in editor)
  13215. * ZZT board import (not perfectly accurate, but...)
  13216. * Bug fixed where games with the title screen title at maximum
  13217. length would mess up the file list box
  13218. * MOD (SB & speaker) support! (& SAM)
  13219. * Explosion-meets-player bug fixed
  13220. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  13221. 3rd beta release: NEW:
  13222. * Full mouse support (except in character editing)
  13223. * No "pointer" mouse...
  13224. * Scrolls and sensors
  13225. * Robot code (memory management) mostly transparent to user
  13226. * GLOBAL Info- Death & endgame options
  13227. * GLOBAL Info- Removed "Health Only/Lives Only" options
  13228. * CW/CCW support
  13229. * Sound always the same speed
  13230. * Bug fixes and optimizations
  13231. * Status Info added
  13232. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  13233. 2nd beta release: NEW:
  13234. * Cmd line options
  13235. * Mouse support (not finished)
  13236. * -Bios option
  13237. * Hopefully fixed Tony's graphics bugs (try it with and
  13238. without -bios)
  13239. * Bug fixes
  13240. * Tutorial.mzx has creatures/guns sections
  13241. * Fixed/better/changed keyboard routines
  13242. * Optimized code
  13243. <a class="helplink" href="#NEWINVER.HLP__1st">NEW in MegaZeux!</a>
  13244. <a class="helplink" href="#284CLOG.HLP__284">New in Versions 2.84 to 2.84c</a>
  13245. <a class="helplink" href="#2823CLOG.HLP__283">New in Versions 2.82 to 2.83</a>
  13246. <a class="helplink" href="#281CLOG.HLP__281">New in Versions 2.81 to 2.81h</a>
  13247. <a class="helplink" href="#280CLOG.HLP__280">New in Versions 2.80 to 2.80h</a>
  13248. <a class="helplink" href="#OLDERVER.HLP__260">New in versions 2.60 to 2.70</a>
  13249. <a class="helplink" href="#OLDESVER.HLP__201">New in versions 2.01 to 2.60</a>
  13250. <a class="helplink" href="#NEWIN200.HLP__1st">New in version 2.00</a>
  13251. <a class="helplink" href="#MAIN.HLP__072">Table of Contents</a>
  13252. <hr /></div>
  13253. </div>
  13254. </body>
  13255. </html>