changelog.txt 176 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451
  1. GIT
  2. FEATURES
  3. + Joystick settings in game.cnf files are now loaded as game-
  4. specific joystick bindings. These bindings will no longer
  5. permanently override global/UI bindings defined by the config
  6. file or pad.config. The global bindings are restored when any
  7. world is loaded (including SWAP WORLD); they are not restored
  8. when a save is loaded.
  9. + Joystick inputs can now be bound to generic actions. These
  10. actions are configured to control MegaZeux's various windows
  11. in a context-specific manner, and can themselves be bound to
  12. keycodes to allow for gameplay controls that are more
  13. consistent with the UI controls. A list of joystick actions
  14. and the functions they perform can be found in the config
  15. file. The NDS, 3DS, Wii, PSP, and GP2X pad.config files have
  16. been updated to use joystick actions.
  17. + Added automatic joystick mapping for Windows/Mac/Linux/etc.
  18. Joysticks recognized as SDL game controllers are automatically
  19. assigned joystick actions when detected. This behavior can be
  20. altered or disabled via config options.
  21. + Added the config setting "joy_axis_threshold". This setting
  22. allows the threshold for joystick axis mapped presses to be
  23. configured.
  24. + Added Nintendo Switch port. (Lachesis, asie)
  25. + The NDS directional pad is now mappable as a joystick hat.
  26. + The 3DS directional pad is now mappable as a joystick hat. The
  27. circle pad is now mappable as axes 1 and 2.
  28. + The default boot.dol for Wii builds with the editor enabled
  29. is now MegaZeux instead of MZXRun.
  30. + New GLSL scaling shader: "sai". This shader implements the
  31. "Scale 2xSaI" algorithm by Kreed with a modified interpolation
  32. function to produce sharper edges. This shader can scale up to
  33. any size larger than 640x350 and is comparable to hqscale
  34. (though it should look and perform a little better).
  35. + Fullscreen mode will now attempt to match a supported screen
  36. resolution if no "fullscreen_resolution" setting is specified.
  37. For scaling renderers, this favors the current desktop
  38. resolution. For "software", this favors smaller resolutions.
  39. + Added the config setting "fullscreen_windowed". When set to 1,
  40. MZX will create a borderless window with the current desktop
  41. resolution instead of regular fullscreen. Disabled by default.
  42. + The current renderer can now be set from the settings menu.
  43. + Added the 'softscale' renderer. This renderer is a generalized
  44. rewrite of the former SDL 2 overlay renderer implementation.
  45. It should perform significantly better and be more portable.
  46. - SDL 2 support for the overlay renderers has been removed. When
  47. specified for video_output, softscale will be enabled instead.
  48. FIXES
  49. + Fixed crash that could sometimes occur when pressing Alt+Up
  50. while drawing near the top of a board in the editor.
  51. + Fixed bug where canceling 'Alt+C' char selection in the
  52. robot editor would comment the current line.
  53. + Fixed a bug where F5 in the robot editor would not print data
  54. for extended chars.
  55. + Clicking through board name windows and other interfaces with
  56. the mouse should no longer place the current buffer.
  57. + Fixed a bug where the updater could fail to initialize due to
  58. a relative argv[0] in Windows. MegaZeux attempts to get the
  59. executable path from Win32 first now.
  60. + Improved warning message when no HTTP response is received.
  61. + The software renderer no longer tries to use an SDL_Renderer
  62. to draw the surface returned by SDL_GetWindowSurface. This
  63. fixes a crash when switching to fullscreen with the software
  64. renderer on some platforms.
  65. + Fixed a software renderer mouse crash bug caused by moving the
  66. cursor off the screen with a window bigger than the screen.
  67. + Fixed a bug where setting SMZX_MESSAGE to 0 wouldn't always
  68. draw the message correctly.
  69. DEVELOPERS
  70. + Fixed -Wunused-result warnings for Linux builds.
  71. + Added "Intel EMGD" to auto_glsl blacklist (questionable
  72. OpenGL 2.0 support).
  73. + Added platform-independent joystick event functions and
  74. updated the SDL, NDS, 3DS, and Wii event handlers for them.
  75. + MinGW builds now use -Wl,-Bstatic and -Wl,-Bdynamic to enforce
  76. the preferred linking when both static and dynamic builds of
  77. libraries are present.
  78. + For MSYS2 shells, config.sh now chooses the prefix /mingw32
  79. or /mingw64 by default if $MSYSTEM is "MINGW32" or "MINGW64"
  80. and either the "win32" or "win64" arch is selected.
  81. + MegaZeux now uses the renderer free_video function on exit.
  82. + GL_LoadLibrary no longer fails if the library is already
  83. loaded in SDL 1.2. (Lancer-X)
  84. + GL renderers free textures and revert to fixed function
  85. pipeline where appropriate. (Lancer-X)
  86. + OpenGL ES support can now be enabled for SDL builds with the
  87. --enable-gles option. This option is force-enabled for
  88. platforms that only support OpenGL ES.
  89. + opengl1 renderer now always uses power of 2 textures, same as
  90. opengl2 and glsl. This provides a tiny performance improvement
  91. on most cards and a massive performance improvement on some
  92. other cards. (Lancer-X)
  93. - Removed uthash as a build option.
  94. February 20th, 2019 - MZX 2.91j
  95. Here's a huge collection of bugfixes and a couple of features
  96. that needed to be split off from 2.92.
  97. Features: every release has an HTML copy of the help file now,
  98. the editor keeps separate board/overlay/vlayer buffers now, and
  99. anyone who still uses scrolls/sensors can view their info in the
  100. counter debugger. The global volume settings use an exponential
  101. curve now, range from 0 to 10, and have updated UI elements.
  102. Fixes in this release include: the updater won't complain about
  103. mzx_help.fil anymore, the NDS and 3DS ports have keyboards that
  104. work again, several bugs that would lead to worlds/saves with
  105. "Robot # does not exist on board #" errors have been fixed, and
  106. several crashes have been fixed.
  107. USERS
  108. + A complete HTML copy of the MegaZeux help file is now packaged
  109. with releases for all platforms. It can be found in the docs/
  110. folder.
  111. + Nvidia and AMD switchable graphics drivers should now detect
  112. MegaZeux and MZXRun properly on Windows.
  113. + The editor now remembers the contents of the buffer when
  114. switching between board, overlay, and vlayer editing. For
  115. example, if a robot is selected on the board before switching
  116. to overlay mode, the robot will still be in the buffer when
  117. the user switches back to board mode.
  118. + The editor now remembers the last filename for importing and
  119. exporting MZM, MZB, CHR, PAL, and PALIDX files.
  120. + Scrolls and sensors can now be viewed in the counter debugger.
  121. They can be found by expanding the Board list (when present).
  122. + Readded "#version 110" directives to all GLSL shaders, fixing
  123. warnings on some Intel HD drivers. OpenGL ES builds should now
  124. comment out these directives.
  125. + Fixed bug where using Modify+Grab on built-ins could clear the
  126. floor under the built-in.
  127. + Fixed bug where key repeat wouldn't work for any text field in
  128. the NDS/3DS/Wii ports. This also affected the robot editor in
  129. Wii builds.
  130. + Fixed NDS touch screen support. Touching the screen no longer
  131. acts like escape and the keyboard properly works again.
  132. + Fixed a bug where the NDS keyboard would drop keypresses on
  133. games not running at speed 2.
  134. + The counter debugger now correctly displays the value of
  135. local0.
  136. + Fixed a bug where the counter debugger would not reopen to
  137. the correct robot local# value.
  138. + MZX now attempts to retry removal of an old file when updating
  139. if deletion fails initially. Error messages related to the
  140. failed deletion of "mzx_help.fil" or "assets/help.fil" are now
  141. suppressed as they are caused by a bug in older MZX versions.
  142. + The help file is now closed before the updater restarts MZX.
  143. + Fixed crash bug that could occur when removing old files after
  144. an update.
  145. + Improved manifest validity checks.
  146. + Fixed board editor crash caused by invalid thing IDs.
  147. + Player movement key repeat no longer resets when the player is
  148. locked. It will reset for a direction only when the arrow key
  149. corresponding to that direction is released. This fixes a bug
  150. in Brotherhood where the player would move at a fraction of
  151. the speed they were supposed to while swimming.
  152. + Added version checking for legacy IF c?? Sprite behavior. In
  153. versions 2.82b and prior, c?? would make this command ignore
  154. the provided param and use SPR_NUM instead. This fixes Project
  155. MoveZig.
  156. + Fixed spelling error in missile param dialog.
  157. + Switching boards in the editor now properly translates the new
  158. board's mod name, fixing cases where board mods would restart
  159. sometimes.
  160. + Fixed a bug where the current board mod wouldn't play after
  161. starting a listening mod, testing, returning to the editor,
  162. and then disabling the listening mod.
  163. + Replaced the linear volume setting curve with an exponential
  164. curve to make lower volumes less loud. The volume settings can
  165. now be set from 0 to 10 instead of from 1 to 8.
  166. + The config file setting pc_speaker_on=0 no longer prevents
  167. turning on PC speaker SFX at runtime.
  168. + Added temporary workaround for numpad 5 key detection when
  169. numlock is disabled.
  170. + "Forest to floor" and "Collect bombs" are properly enabled
  171. again for new boards by default. This fix doesn't alter config
  172. settings or saved .editor.cnf defaults.
  173. + The "Downver. world (MZX)" option in the "Export as" dialog
  174. is now completely highlighted when selected. (Lancer-X)
  175. + Starting MegaZeux with "startup_editor=1" no longer loads the
  176. default palette over the startup world's palette.
  177. + The move block action and undo/redo operations should now
  178. preserve the element beneath the player.
  179. + Fixed crashes caused by using block actions or COPY BLOCK on
  180. the player while the player is standing on a sensor.
  181. + Fixed several bugs where editor block actions and the commands
  182. COPY/COPY BLOCK would not check for the player or clean up
  183. robots/scrolls/sensors. Worlds/saves saved after these bugs
  184. occured could display "Robot # does not exist on board"
  185. errors when loaded.
  186. + The DUPLICATE SELF x y and DUPLICATE SELF dir commands now
  187. properly check for the player before attempting to duplicate
  188. a robot. This fixes a bug where MZX could create saves with
  189. "Robot # does not exist on board" errors.
  190. + Fixed a crash that could occur when importing a new board.
  191. + Fixed a bug where the 3DS onscreen keyboard would send key
  192. releases instead of key presses.
  193. + The 3DS onscreen keyboard now returns shifted chars when shift
  194. is active.
  195. + Fixed a bug where the libxmp implementation of MOD_ORDER and
  196. JUMP MOD ORDER could not restart the current order.
  197. + Fixed a crash with the libxmp implementation of MOD_POSITION
  198. when providing an out-of-bounds value.
  199. + Fixed a bug where Ctrl+[key] shortcuts would not work while a
  200. dialog list element was active on the Wii.
  201. + Fixed a bug where setting the board mod/charset/palette could
  202. truncate the first letter of the path on the Wii.
  203. + "mask_midchars" no longer masks the non-text char 127.
  204. + The message box title and the command [ now properly display
  205. the graphic for char 9 instead of a tab.
  206. + Added newline escaping to robot, counter, and string names in
  207. the counter debugger to work around formatting bugs.
  208. DEVELOPERS
  209. + Added the hlp2html utility, which can be used to convert
  210. WIPHelp.txt into web and printable HTML files.
  211. + Updated to latest NDS ARM7 template.
  212. + Updated SDL2 for Windows release builds to SDL 2.0.9.
  213. December 9th, 2018 - MZX 2.91i
  214. A small release with a bunch of fixes for bugs introduced mostly
  215. within the past few versions. Other highlights: joysticks should
  216. be hot pluggable now and Alt shortcuts now also work with the
  217. command key in Mac builds.
  218. USERS
  219. + MZX now properly detects when joysticks are connected and
  220. disconnected at runtime for platforms using SDL 2.
  221. + Fixed bug where the robot editor would open with the cursor at
  222. the end of the line instead of the start of the line.
  223. + Fixed a bug where the robot box could display using MZX mode
  224. but SMZX colors if opened on the first frame SMZX was enabled.
  225. + The built-in text box title should display correctly again in
  226. SMZX modes.
  227. + Fixed regression where keys could trigger wrong "keyN" labels.
  228. + Alt+F2 can now be used to open the settings dialog.
  229. + Mac users can now optionally use command in place of alt.
  230. + Improved editor cursor color selection for SMZX modes 2 and 3.
  231. DEVELOPERS
  232. + Fixed make test for SDL 1.2 builds.
  233. November 14th, 2018 - MZX 2.91h
  234. A minor release primarily focused on improving counter/string
  235. lookups and fixing bugs in the robot editor and counter debug
  236. menu.
  237. USERS
  238. + auto_glsl correctly switches to glsl on startup now.
  239. + Fix bug where "(editor)" wouldn't always display in the
  240. caption when editing.
  241. + The single line macro dialog now allows the full size of the
  242. single line macros to be edited. This fixes a crash caused by
  243. having a macro configured to be longer than the edit box could
  244. display.
  245. + Setting a counter to a string no longer duplicates the entire
  246. string in memory.
  247. + Fixed faulty BOARD_X and BOARD_Y bounding for values greater
  248. than the board width or height. Fixes potential crashes with
  249. BOARD_CHAR, BOARD_COLOR, BOARD_ID, and BOARD_PARAM.
  250. + The value of SPR_YORDER is now correctly displayed in the
  251. counter debug menu.
  252. + Improved the performance of the counter debug search.
  253. + Fixed cosmetic counter debug menu issue where the the "String"
  254. tree appeared to be expandable/collapsable when empty.
  255. + Fixed faulty substring searching algorithm used in the counter
  256. debug menu search and for breakpoints.
  257. + Added "Search" and "Cancel" buttons to the counter debug menu
  258. search so it can be used with the mouse.
  259. + When testing from the editor, if "__test.mzx" exists MegaZeux
  260. will now choose a numbered name for this world backup (e.g.
  261. "__test2.mzx") instead of potentially overwriting work.
  262. + Fixed bug where six-digit line numbers would display in the
  263. robot editor incorrectly.
  264. + Inserting text in the robot editor using the F2/F3/F4/F5
  265. shortcuts can no longer exceed the line length limit, fixing
  266. related crashes.
  267. + Using F5 in the robot editor generates decimal numbers instead
  268. of hex numbers now.
  269. + Fixed robot editor bug where pressing delete at the end of a
  270. line wouldn't join lines unless the current line was empty.
  271. + Restored the ability to use the F7/F8 cheats outside of the
  272. editor. This feature was broken in 2.91g. To enable cheats
  273. outside of the editor, the config option "allow_cheats" must
  274. now be set to "mzxrun" or 1. The former will enable them for
  275. MZXRun only (same as from 2.82b to 2.91f) and the latter will
  276. enable them for both executables (same as the -þ flag in DOS
  277. versions).
  278. + Fixed bounding bug on the "board_default_width" and
  279. "board_default_height" config file options.
  280. + Separated robot editor "Search and Replace" dialog into a
  281. "Search" dialog and a "Replace" dialog. Both dialogs are
  282. smaller in size than the original. The order of the elements
  283. in these dialogs has also been altered to be more user-
  284. friendly. The hotkey for the new replace dialog is Ctrl+H.
  285. + Fixed Ctrl+R repeating for the "Replace All" robot editor
  286. search operation. Previously, it would act like "Replace".
  287. + Canceling the robot editor search/replace menus no longer
  288. disables the repeat feature.
  289. + Searching in the robot editor now properly preserves the case
  290. of the search string if case sensitive search is disabled.
  291. + Fixed bug where toggling the robot debugger position wouldn't
  292. take effect immediately.
  293. + Exiting the editor with the "startup_editor" config setting
  294. enabled should no longer inappropriately close MZX.
  295. + Selecting "tile" for the char editor import mode works again.
  296. + The bounds for the main editor charset import/export offsets
  297. and size have been increased to allow for extended charset
  298. values.
  299. + Fixed the "KEY?" labels for keys that no longer have a unicode
  300. representation in SDL2.
  301. + Fixed SET "$string" "FWRITE#" bug where, if # exceeded the
  302. length of $string, the output would be clipped to the wrong
  303. length.
  304. + The missile color ID char is now correctly set back to its
  305. default value when a new world is created from the editor.
  306. DEVELOPERS
  307. + Cleaned up the counter debug menu code.
  308. + Switched from uthash to a modified version of khash for
  309. counter and string lookups. Counters/strings now consume less
  310. memory and counter/string lookups should perform slightly
  311. better on most platforms.
  312. + Replaced toupper/tolower in memcasecmp and substring searching
  313. with a lookup table-based implementation of tolower.
  314. + Refactored the following contexts to use the main loop: robot
  315. editor, intake, thing menu. For compatibility purposes the old
  316. intake still exists, but all robot editor hacks have been
  317. removed from it.
  318. October 7th, 2018 - MZX 2.91g
  319. This bugfix release fixes various minor-to-moderate bugs in
  320. various areas of MegaZeux. The title/game update code has gone
  321. through a fairly major overhaul and several parts of MegaZeux
  322. have been combined to use the same loop. The conversion of
  323. MegaZeux's interfaces to be compatible with this loop is an
  324. ongoing process expected to occur over several versions.
  325. USERS
  326. + Added "allow_screenshots" config file option. Setting this
  327. option to 0 will disable the built-in screenshot feature.
  328. + The F12 key can now be detected by Robotic.
  329. + Loading saves from the title screen no longer resets TIME.
  330. + Loading saves from the title screen no longer erroneously
  331. changes the player restart position.
  332. + Swapping worlds now sets the correct TIME and player restart
  333. position values.
  334. + Fixed a bug where the fade out effect from COLOR FADE OUT
  335. would be reset after any Robotic dialog.
  336. + Undo for overlay and vlayer mouse drawing now works properly.
  337. + Mouse drawing in the editor now draws smooth lines instead of
  338. lines with gaps.
  339. + Fixed move block bug when the source and destination both
  340. overlapped the player.
  341. + Palette editor component entry now accepts most of the same
  342. inputs as dialog number boxes.
  343. + The board name in the caption now updates to reflect the
  344. current board while testing.
  345. + Fixed bug where TIME would either decrement normally or not
  346. decrement at all while the slow time effect was active.
  347. + Added compatibility for pre-port endgame teleport behavior.
  348. In DOS versions of MZX, the endgame teleport would disable
  349. itself after being triggered for the first time and any
  350. following endgame would instead trigger a game over.
  351. + Reduced stutter in NDS and 3DS main screen scrolling.
  352. + Fixed a bug where creating a string MZM would not correctly
  353. set the string's length for preexisting strings.
  354. + Fixed a bug where loading robot source code from a string
  355. wouldn't work correctly with the robot debugger.
  356. + The help system is now accessible from the main menu and game
  357. menu.
  358. + The settings screen is now accessible from the main menu, game
  359. menu, editor, and palette editor.
  360. + The shortcut Ctrl+F2 can be used to open the settings screen
  361. from anywhere the settings screen is accessible. This shortcut
  362. works even if F2 is used for a different feature and will also
  363. ignore the value of the F2_MENU counter.
  364. + Fix a crash that would occur decrypting a world with a
  365. password exactly 15 chars long.
  366. + The label for the INPUT STRING command should no longer be
  367. able to overflow outside of the window.
  368. + Fix a crash that would occur attempting to open the help file
  369. from the world decryption confirm dialog.
  370. + Fix bug where saved layer MZMs and board MZMs without robots
  371. would have useless extra data at the end of the file.
  372. + Scroll contents properly display game colors during gameplay.
  373. + An error message is now displayed for failed board exports.
  374. + Enabled writing zip data descriptors on the 3DS to decrease
  375. saving time.
  376. - The "password protected" error message has been removed as it
  377. was redundant with the confirmation dialog following it.
  378. - The "disassemble_extras" and "disassemble_base" options no
  379. longer affect Robotic output during gameplay. SAVE_ROBOT will
  380. always output extra words and base 10 numbers regardless of
  381. user configuration.
  382. DEVELOPERS
  383. + Implemented a main event loop to replace the various separate
  384. event loops scattered around MegaZeux. See core.h and core.c
  385. for more info.
  386. + Refactored the following contexts to use the main loop:
  387. titlescreen, gameplay, main menu, game menu, editor, palette
  388. editor.
  389. + When enabled, the debug FPS display will now update from any
  390. interface using the main loop. If fullscreen mode is active,
  391. the FPS display will now appear in the top-left corner of the
  392. screen for any main loop interface aside from the editor.
  393. + The --disable-screenshots config.sh option can be used to
  394. disable screenshot support. This allows platforms that don't
  395. use render_layer.c to stop building and linking it.
  396. + Cleaned up m_show()/m_hide() overuse.
  397. + Replaced all uses of "bool" with "boolean" to avoid potential
  398. C/C++ compatibility issues.
  399. - Removed most old/unused source code in contrib/unzip, src/old,
  400. and src/vfs.
  401. September 17th, 2018 - MZX 2.91f
  402. A bugfix release focusing primarily on renderers, the 3DS and
  403. Wii ports, and the Makefile build system. Highlights: the 3DS
  404. port should perform better now, the Wii port's GX renderer has
  405. been restored, the 'darwin' platform has more Unix-like options
  406. now, and several crashes have been fixed.
  407. USERS
  408. + The config setting 'audio_buffer' can also be specified with
  409. 'audio_buffer_samples' now. The default value for this setting
  410. is now 1024 (instead of 4096).
  411. + Fixed a crash that could occur in the counter debugger.
  412. + Fixed a crash that occurs when attempting to add a watchpoint
  413. for robot local counters, loopcount, etc. Using these counters
  414. as watchpoints will watch the global robot's instances of
  415. these variables (for other robots, use e.g. r#.local1).
  416. + Using SMZX_INDICES or LOAD_ROBOT on an unset string no longer
  417. causes a crash.
  418. + png2smzx is now properly bundled with Linux builds.
  419. + Improved the performance of loading partial charsets for the
  420. glsl, opengl2, and 3DS renderers. Other renderers were not
  421. affected by this issue.
  422. + Fix opengl2 unbound sprite regression introduced in 2.91e.
  423. + The opengl2 renderer now correctly draws unbound sprites
  424. containing chars with a transparent foreground color.
  425. + 3DS renderer optimizations. (asie)
  426. + 3DS screen focusing now mimics the NDS port's behavior. (asie)
  427. + Fixed bug where games could fail to open files on some
  428. platforms if the paths contained duplicate slashes. (asie)
  429. + Added a Wii software layer renderer. This renderer can be
  430. selected with "video_output = xfb" in the config file.
  431. + Wii GX renderer optimizations.
  432. + Added layer rendering support to the GX renderer.
  433. + The Wii GX renderer now uses the gl_vsync config option to
  434. toggle vsync. For the Wii, this feature is on by default.
  435. Disabling it may increase the framerate of some games but may
  436. also cause other problems.
  437. + The loading bar on console platforms now redraws the screen
  438. less often.
  439. DEVELOPERS
  440. + GAMESDIR/BINDIR/SHAREDIR now properly apply PREFIX when they
  441. are not explicitly set by config.sh.
  442. + LIBDIR is now user-definable like BINDIR et al. Variations
  443. such as "lib64" currently must be explicitly provided for
  444. platforms that still use them.
  445. + Remove src folder from CFLAGS to fix a bug where system
  446. includes could be mistaken for MegaZeux headers. All includes
  447. of MegaZeux headers must be done using relative paths now.
  448. + Fixed include bugs for X11 and Carbon clipboard handlers.
  449. + Makefile now attempts to respect the prefix when running
  450. sdl-config, sdl2-config, and libpng-config.
  451. + Renamed the "darwin" config.sh platform to "darwin-dist".
  452. + Added "darwin" and "darwin-devel" config.sh platforms. These
  453. act like Mac OS X versions of the "unix" and "unix-devel"
  454. options.
  455. + The darwin-dist build system and instructions are now somewhat
  456. more clear and robust.
  457. + Fixed a bug where zlib wouldn't necessarily be linked to
  458. png2smzx.
  459. + Renderers will now use render_layer to draw the text_video
  460. fallback if no render_graph function is present.
  461. September 3rd, 2018 - MZX 2.91e
  462. Bugfix release fixing some crashes, port bugs, and some other
  463. significant issues affecting a variety of things.
  464. USERS
  465. + Fixed bug where loading a board charset would also clear all
  466. of the extended charsets.
  467. + Fixed bug where loading a default charset in the editor would
  468. also clear all of the extended charsets.
  469. + Loading a 2.91 world when a renderer with no layer support is
  470. active no longer triggers an error message.
  471. + Fixed a memory corruption bug in the non-SDL Wii port caused
  472. by faulty threading code.
  473. + Fixed crash that could occur when updating a board undo frame.
  474. + Fixed crash when changing to a board with overlay disabled in
  475. overlay editing mode.
  476. + Fixed a bug where the protected charset could get cleared for
  477. renderers without layer rendering support.
  478. + Enabled C99-compliant stdio functions for mingw, fixing at
  479. least one crash bug and possibly improving performance.
  480. + The NDS port now attempts to detect argv[0].
  481. + The 3DS port now attempts to detect argv[0] and otherwise will
  482. start in /3ds/megazeux instead of /.
  483. + The 3DS port .3dsx file is now located in /3ds/megazeux.
  484. + The MOVE PLAYER [dir] and MOVE PLAYER [dir] [label] commands
  485. now update the commands cycle and commands total values.
  486. + Fixed a bug where MZX and checkres wouldn't accept some
  487. DEFLATE-related ZIP flags.
  488. + checkres no longer crashes on failing to open a resource zip.
  489. + The window caption now updates correctly when using either of
  490. the overlay renderers.
  491. + Update checking will now display an error instead of silently
  492. hiding the updater when the updater fails to initialize.
  493. + Fixed an issue where UIs would execute redundant frames.
  494. + Fixed a bug where string comparison would not order strings of
  495. different lengths correctly. (GreaseMonkey)
  496. DEVELOPERS
  497. + Code style has been cleaned up in numerous files.
  498. + Moved GLSL shaders from assets/shaders/ to assets/glsl/.
  499. + Added missing GPL headers to GLSL shaders and added slightly
  500. better documentation to them.
  501. July 12th, 2018 - MZX 2.91d
  502. This is a minor bugfix release to get a handful of fixes out
  503. primarily concerning the updater. The NDS/3DS/PSP/Wii ports now
  504. include a copy of Caverns of Zeux.
  505. USERS
  506. + Added timeouts to updater network operations.
  507. + Fixed bug where the updater would retry downloads without
  508. regard to the status code.
  509. + The updater is now force-disabled for all non-Windows
  510. platforms in config.sh.
  511. + Fixed bug where breakpoints could trigger on the wrong line.
  512. + Amended VOLUME/MOD FADE # # bounding to clamp values in port
  513. versions. DOS versions will still wrap between 0 and 255.
  514. + Added DOS compatibility fix for sprN_off.
  515. + Window caption is now properly updated when loading a world
  516. from an unedited world in the editor.
  517. + Fixed bug where ".." would change to the current directory if
  518. the current path ended in a path separator.
  519. - Removed undocumented support for "title.cnf", "game.cnf", and
  520. "editor.cnf" config files, which would have been loaded from
  521. the same directory as the main config (not to be confused with
  522. world-specific config files, which are still supported).
  523. DEVELOPERS
  524. + The MSYS2 buildscripts have been overhauled to work with the
  525. new devkitPro pacman repositories.
  526. + Added config options to select vorbis, tremor, tremor-lowmem,
  527. or to disable ogg vorbis file support. The 3DS and Wii ports
  528. now use tremor instead of tremor-lowmem.
  529. March 4th, 2018 - MZX 2.91c
  530. This release contains an assortment of bugfixes ranging from
  531. player clone fixes to obscure compatibility patches. A handful
  532. of updater issues have been fixed (or at least addressed).
  533. MegaZeux can now automatically check for updates on startup on
  534. Windows platforms. This behavior can be configured, and by
  535. default will simply leave a message in the window caption.
  536. USERS
  537. + MegaZeux can now automatically run the updater on startup
  538. on applicable platforms. This can be configured with the
  539. 'update_auto_check' config file option.
  540. + Fixed a bug where several .MOD variants stopped working with
  541. libxmp enabled.
  542. + Sound effects in subdirectories can now be used in the SFX
  543. editor.
  544. + Fixed a bug where checkres would fail on legacy worlds with
  545. very long custom SFX.
  546. + Checkres no longer ignores the SFX tables of 2.90+ worlds.
  547. + Fixed a bug where interpolated expressions containing ternary
  548. operators could terminate counter names early.
  549. + Fixed faulty IF ANY compatibility behavior.
  550. + Fixed a bug where FWRITE functions could change the case of
  551. user-defined filenames when creating new files on non-Windows
  552. platforms.
  553. + SMZX mode 1 palettes are now exported correctly as 16 colors
  554. instead of as 256 colors.
  555. + Fixed subtly inconsistent timing in certain built-ins.
  556. + Fixed bug where wind and transporters could clone the player.
  557. + MegaZeux now restarts correctly in paths containing spaces
  558. when the updater is run.
  559. + Subroutines in pre-port MZX worlds now always return to the
  560. command after the subroutine was sent.
  561. + Typed color components now wrap from the maximum value to zero
  562. like dialog number inputs, and pressing minus will now negate
  563. the input number.
  564. + Copying chars in the char editor between regular and SMZX
  565. screen modes now works properly.
  566. + Fixed a crash that could occur when placing things on a vlayer
  567. larger than the current board.
  568. + Sharks and SpittingTigers with firing rates greater than 4 now
  569. retain their firing rate when edited.
  570. + Fixed a bug where world decryption could crash. (Revvy)
  571. + If the glsl renderer is selected by default, the detection of
  572. a software opengl driver will result in falling back to
  573. software. (Lancer-X)
  574. + Fixed a bug in the GLSL renderer where an additional window is
  575. created if the OpenGL version is low enough to cause a
  576. fallback to software. (Lancer-X)
  577. DEVELOPERS
  578. + Added .MZX-based unit testing system. Run with "make test".
  579. See testworlds/README.md for more information.
  580. + The default renderer is now auto_glsl, which turns into glsl
  581. if not using a blacklisted opengl driver. (Lancer-X)
  582. January 6, 2018 - MZX 2.91b
  583. Here's a fairly significant update for MegaZeux 2.91, fixing
  584. several major Robotic, audio, and editor related bugs, as well
  585. as issues that mostly affected Linux platforms. Also of note is
  586. the updated MSVC and Xcode support by Spectere.
  587. USERS
  588. + Added the config file option "editor_thing_menu_places". When
  589. set to 0, selecting an object from the thing menus (F3-F10)
  590. will place the object in the buffer but not on the board.
  591. Defaults to 1.
  592. + Fixed a bug where MZMs could sometimes fail to load in the
  593. editor.
  594. + MZMs loaded in the editor now behave correctly when undone.
  595. + Fixed bug where GOOP_WALK wouldn't always be 0 when loading
  596. old worlds.
  597. + Values of GOOP_WALK greater than 1 no longer cause issues.
  598. + Board time limits greater than 255 are no longer truncated
  599. when saving worlds/saves.
  600. + Fixed bug where "robot not found" errors could result from
  601. using backspace on robots in the editor.
  602. + Fixed backwards string inequality evaluation.
  603. + String inequality compares are now endian-safe.
  604. + Fixed a bug where certain mods (e.g. FR_TOWER.MOD, Neve.s3m)
  605. could repeat to the wrong order after reaching the end.
  606. + Fixed a bug where certain .it channels could partially ignore
  607. the volume command.
  608. + Setting mod_position in libxmp now works for positions in the
  609. middle of orders (NoSuck).
  610. DEVELOPERS
  611. + Updated MSVC for Visual Studio 2017. (Spectere)
  612. + Added xcode support. (Spectere)
  613. + "make clean" now deletes ccv. (pgimeno)
  614. + Fixed creeping CRLF usage. (Lachesis, pgimeno, Spectere)
  615. + Fixed a bug where the MSYS2 build scripts could inadvertently
  616. include non-portable SDL2 binaries in Windows builds.
  617. November 22, 2017 - MZX 2.91
  618. This release introduces mostly new editor features, but also a
  619. a few Robotic features to note. It also fixes over 30 bugs.
  620. MegaZeux now features a palette editor for SMZX modes 2 and 3,
  621. and worlds can be saved and loaded in SMZX mode. The char editor
  622. has been changed to allow preview palettes (mostly to aid with
  623. SMZX editing), and can now access the extended character sets.
  624. The new vlayer editor allows the vlayer to be edited directly.
  625. On the Robotic side of things, LOAD_COUNTERS actually works now,
  626. SMZX mode 3 indices can be loaded from a file, the message line
  627. can be configured to use normal MZX mode in SMZX modes, and new
  628. string features such as simple wildcard matching and negative
  629. offsets have been added. String support has been improved to
  630. disallow invalid or nonsense string splices that previously had
  631. undefined behavior.
  632. Additionally, asie's new Nintendo 3DS port has been merged into
  633. MZX, and optional SDL support has been added for the Wii.
  634. FEATURES
  635. + Added SMZX_INDICES special counter to load SMZX indices. This
  636. counter works with either a filename or a string, e.g.
  637. set "file.palidx" "SMZX_INDICES", and will do nothing outside
  638. of mode 3.
  639. + Added MOD_LENGTH counter. The value of this counter is length
  640. of the current playing music in rows for modules, or in
  641. samples for PCM audio.
  642. + Added MAX_SAMPLES counter. When set, MegaZeux will limit the
  643. maximum number of samples that will play simultaneously. Set
  644. to -1 to disable the sample limit.
  645. + Added 'max_simultaneous_samples' config file option. This
  646. behaves the same as the MAX_SAMPLES counter, but applies
  647. globally.
  648. + Added SMZX_MESSAGE counter. When set to 0 with SMZX active,
  649. messages will display in normal MZX mode instead of SMZX
  650. using the first 16 colors of the SMZX palette.
  651. + Added 'random_seed#' counters to read and write the random
  652. seed, 32 bits at a time (random_seed0 controls the low 32 bits
  653. and random_seed1 controls the high 32 bits. (Lancer-X)
  654. + Added a case-sensitive string equality operator:
  655. IF "$string" === "ABC" then "label".
  656. + Added wildcard-matching string equality operators:
  657. IF "$string" ?= "a?%" then "label"
  658. IF "$string" ?== "a?%" then "label" (case-sensitive).
  659. The character '?' will match exactly one of any character in
  660. $string, and '%' will match any number of any character in
  661. $string (including no characters).
  662. + Added negative indexing for strings, e.g. SET "$string.-X" 32.
  663. This manipulates the string at the Xth character starting from
  664. the end of the string (with -1 for the final character).
  665. + Added negative offsets for strings, e.g. SET "$string+-X" "a".
  666. + Added multiple character indexing for strings. When a length
  667. is provided with a string index, e.g. SET "$string.X#Y" 12345,
  668. the characters at positions X, X+1, ..., X+Y-1 will be treated
  669. as a single 8*Y bit number. This works for values of Y between
  670. 1 and 4, with 4 characters providing the same functionality as
  671. a counter.
  672. + The palette editor and character editor are now accessible
  673. while testing. Press Alt+E or Alt+C respectively to access
  674. them from the counter debugger.
  675. + Extended the palette editor to SMZX modes 2 and 3. The updated
  676. palette editor allows the editing of all 256 SMZX mode 2/3
  677. colors and editing color indices for SMZX 3.
  678. + Component numbers can now be typed in the palette editor by
  679. clicking the component name or its number, e.g. clicking "Red"
  680. allows you to type a red value.
  681. + SMZX indices can now be imported/exported while editing in
  682. mode 3 using import/export palette.
  683. + Added a new vlayer editor. In the world editor, press Alt+V to
  684. switch to the vlayer editor. The vlayer is something like an
  685. invisible global overlay that can be used to store and
  686. retrieve graphical data through Robotic. See the editor help
  687. and the Robotic reference manual for more details.
  688. + Added color selection to the character editor. Press C to
  689. choose a color to preview and edit chars with, and press Alt+C
  690. to revert back to the default grey.
  691. + Added extended charset support to the char editor. Extended
  692. charsets can be selected during char selection. Note that in
  693. gameplay these chars can be accessed only by unbound sprites.
  694. + Selected blocks of chars with a height greater than one
  695. (before selecting a subdivision) are now properly supported.
  696. Using -/+ with these selections will move in a tiled manner,
  697. with no overlap between chars in "tiles". Charsets can also be
  698. exported/imported using this tiling behavior.
  699. + The -/+ keys now behave the same in the char selection screen
  700. as they do in the char editor.
  701. + The character editor help now covers several shortcuts that
  702. were previously missing (Alt+B, Shift+Arrows, etc...).
  703. + The undo/redo shortcuts in the character editor are now Ctrl+Z
  704. for undo and Ctrl+Y for redo.
  705. + Added undo/redo functionality to the world editor. Use Ctrl+Z
  706. to undo changes to the board/overlay/vlayer and Ctrl+Y to
  707. redo.
  708. + The default editor undo history stack size has been extended
  709. to 100 levels.
  710. + The editor will now prompt the user to create a new starting
  711. board when opened. If a new board is created, the global first
  712. board will be set to the new board and the title board will be
  713. renamed.
  714. + Saved positions now have confirmation dialogs. Saved positions
  715. are saved to/loaded from the editor.cnf file for each world.
  716. + Pressing Enter/Return on the overlay (and vlayer) now acts the
  717. same as on the board, changing both the buffer and the current
  718. layer being edited.
  719. + Pressing P on the overlay (and vlayer) now acts the same as on
  720. the board, changing the character in the buffer but NOT on the
  721. current layer. This is equivalent to the original overlay
  722. behavior for Enter.
  723. + Block tiling movement (Ctrl+Arrows) now works with most block
  724. actions, and does not require an initial block placement to
  725. activate.
  726. + Restoring its DOS functionality, Alt+D now toggles the default
  727. colors of built-in types in the editor. When disabled,
  728. built-ins placed from thing menus will use the buffer color
  729. instead of their default colors, and a red dot will appear on
  730. the right side of the status bar.
  731. + Color selection now supports typing in the hex value of a
  732. color/subpalette to select the given color/subpalette. For
  733. example, typing "4c" will select background color 4 and
  734. foreground color 12.
  735. + Readded the downver utility.
  736. - Removed the undocumented Shift+F7 shortcut in the editor. This
  737. shortcut was redundant with F11.
  738. FIXES
  739. + Fixed a bug that would cause Linux binaries to fail to find
  740. most resources.
  741. + Fixed a bug where loading a save from the titlescreen, exiting
  742. gameplay to a world that doesn't exist, and then loading a
  743. second save would corrupt the counter and string hash tables.
  744. + Fixed crash that would occur when loading a saved position on
  745. the same board referring to out-of-bounds coordinates.
  746. + Fixed a freeze that could occur opening the counter debugger
  747. to an empty list or searching for a counter in an empty list.
  748. + LOAD_COUNTERS now works as intended.
  749. + Fixed a bug where key repeat would be prematurely terminated
  750. when releasing a key while holding another key.
  751. + Attempting to open the robot validator with no errors will no
  752. longer crash MegaZeux.
  753. + Backspace now mirrors delete in overlay mode instead of
  754. affecting the board.
  755. + Moving an overlay block partially out of bounds in the editor
  756. will now correctly clear the block's original position.
  757. + The color selector will now correctly display SMZX palettes in
  758. SMZX mode instead of the default char 254.
  759. + Fixed bug where the mouse cursor would vanish after using the
  760. robot debugger configuration dialog in the editor.
  761. + Fixed a bug where the counter debugger could sometimes display
  762. behind the robot debugger after exiting the counter debugger.
  763. + Undo in the char editor now works correctly with the mouse.
  764. + The char editor no longer forces the screen to SMZX mode 1
  765. when editing in SMZX modes 2 or 3.
  766. + Fixed screen corruption bug when resizing the char editor in
  767. SMZX modes.
  768. + Fixed a bug where multichar editing wouldn't correctly wrap to
  769. the start of the charset.
  770. + The editing area outside of the current board is now correctly
  771. drawn when SMZX is enabled.
  772. + The viewport is now correctly drawn when SMZX is enabled and
  773. the UI or unbound sprites are active.
  774. + The editor bar no longer appears while SMZX is enabled in view
  775. mode.
  776. + Messages are now drawn correctly in SMZX mode.
  777. + Fixed bug where centering the viewport could change the width
  778. and height of the viewport.
  779. + Unbound sprites are now clipped correctly against the viewport
  780. when the viewport origin is not 0,0. (Lancer-X)
  781. + The VLAYER_SIZE counter now clears new vlayer area added when
  782. it is increased. This applies only to 2.91+ worlds.
  783. + The VLAYER_WIDTH and VLAYER_HEIGHT counters now preserve data
  784. on the vlayer when set. This applies only to 2.91+ worlds.
  785. + Fixed several bugs with string length and offset parsing that
  786. would allow invalid string accesses to work in certain cases.
  787. + COPY BLOCK $string now works correctly with string splices.
  788. + Fixed a bug where saving and loading 2.90X files wouldn't work
  789. on the Nintendo DS.
  790. + Fixed a bug where mouse clicks would carry through from the UI
  791. into games.
  792. + Invalid gl_scaling_shader values should no longer appear as
  793. the current loaded scaler.
  794. + MegaZeux now falls back to the default scaling shader when a
  795. selected scaling shader fails to compile.
  796. + Blank sprite chars are now drawn when ccheck is 3. (Lancer-X)
  797. + The sprite color is used with ccheck 3 collisions. (Lancer-X)
  798. + When spr_yorder is enabled, sprites with the same (sprN_y +
  799. sprN_cy) value are now consistently ordered by their sprite
  800. numbers.
  801. + The collision rectangles of ccheck 3 sprites now constrained
  802. to the sprite dimensions (Lancer-X).
  803. + MZX no longer crashes when a line of length 512 characters or
  804. longer is pasted into the robot editor.
  805. + Fixed a crash bug when trying to swap a sprite with an
  806. invalid sprite index.
  807. DEVELOPERS
  808. + Added Nintendo 3DS port. (asiekierka)
  809. + Added "make uninstall" option to the Linux makefile.
  810. + Added devkitPro portlibs paths to the NDS and Wii Makefiles.
  811. - Removed the depackers and non-MegaZeux formats from libxmp.
  812. September 4, 2017 - MZX 2.90d
  813. Here's another bugfix release. This is mostly assorted small
  814. fixes, but there are also a couple of major fixes here: first,
  815. the ternary operator now works correctly when nested both with
  816. and without expressions, and second, sprN_setview does not break
  817. in conjunction with certain unbound sprites. Additionally, SAMs
  818. will not be converted to WAV files anymore (and are now natively
  819. supported) and the robot debugger config is accessible from the
  820. editor.
  821. FEATURES
  822. + The current MegaZeux version is now visible from the enter
  823. menu on the title screen. This is to assist identifying the
  824. version on platforms that don't respect window title changes
  825. or have no window border.
  826. + Updated checkres.bat and checkres documentation.
  827. + The robot debugger configuration screen is now accessible from
  828. the editor via Alt+F11.
  829. + Removed SAM to WAV converter. MegaZeux now has native SAM
  830. support. (asiekierka)
  831. + Added crt-wave.frag, updated crt.frag. (astral)
  832. FIXES
  833. + Fixed a bug where MegaZeux would crash when editing a robot
  834. with an invalid IF command operator.
  835. + Fixed a bug where the ternary operator would fail to find the
  836. correct colon when the middle term contained a second ternary
  837. operator in a nested expression.
  838. + Nested ternary operators should now behave as expected.
  839. + Fixed a bug where the built-in cursor would disappear after
  840. exiting testing with EXIT_GAME.
  841. + Fixed a bug where the listening mod would not restart after
  842. exiting testing.
  843. + Fixed a bug where the robot debugger would not wrap long lines
  844. of Robotic code correctly.
  845. + Attempting to save a world in a write-protected location
  846. correctly displays an error message again.
  847. + Fixed a bug where key repeat would not work when scrolling
  848. through the counter debugger tree list.
  849. + checkres will no longer report empty filenames as dependencies
  850. e.g. SET "" TO "FWRITE_OPEN".
  851. + The -q flag in checkres will now correctly output filenames
  852. instead of nothing.
  853. + Fixed a bug where sprN_setview would scroll the viewport to
  854. the wrong side of the screen if the sprite is unbound and is
  855. close to the top or left edge of the board. (Lancer-X)
  856. DEVELOPERS
  857. + Fixed PSP and NDS ports. (asiekierka)
  858. July 25, 2017 - MZX 2.90c
  859. This is a small fix release mostly cleaning up issues from the
  860. previous release.
  861. Notable fixes include a crash on certain instances of string
  862. interpolation into counters/labels/text. Playing mods as sound
  863. effects works again, and the audio_sample_rate config file
  864. option now works correctly.
  865. This release also includes support for loading save files from
  866. MegaZeux 2.84X and experimental editor behavior for handling
  867. board charsets and palettes.
  868. FEATURES
  869. + Save files from 2.84X worlds can now be loaded.
  870. + The editor can be configured to automatically load board
  871. charsets and palettes now. Use the 'editor_load_board_assets'
  872. config file option to enable this behavior. This behavior is
  873. disabled by default. Note that this will OVERWRITE THE CURRENT
  874. WORLD CHARSET AND PALETTE and your changes will NOT be saved
  875. automatically.
  876. + GLSL is now the default renderer. (Lancer-X)
  877. FIXES
  878. + Fixed bug where --disable-modular builds would fail to link.
  879. + Fixed bug with libxmp integration where mods could not be
  880. played as sound effects.
  881. + Fixed bug with libxmp integration where MZX would assume
  882. audio_sample_rate was 44100, causing mods to play at incorrect
  883. pitches with other rates.
  884. + Fixed bug where editor config file options would be ignored at
  885. the command line.
  886. + Fixed bug where string interpolation into a label/counter name
  887. could cause MZX to crash with very long strings.
  888. July 16, 2017 - MZX 2.90b
  889. It's been two weeks, so here's a bugfix release for MZX 2.90.
  890. There isn't a whole lot that's new to talk about.
  891. Firstly, the palette editor has gone through an overhaul. This
  892. is mostly internal preparation for an eventual SMZX palette
  893. editor, but the new features include the partial restoration of
  894. mouse input (which was removed in 2.80X), the addition of color
  895. sliders, the ability to hide the palette editor help, and two
  896. new colorspaces (HSL and CIELAB) to aid in the selection of
  897. palette colors.
  898. Next, the robot debugger introduced in 2.90 has new features.
  899. You can now set "watchpoints" to watch the status of particular
  900. variables, and you can send labels/goto from the robot debugger.
  901. The robot debugger config screen has been visually improved, and
  902. line number breakpoints can be defined. Another notable feature
  903. is that KEY_PRESSED and KEY_CODE values are now displayed in the
  904. debug window during gameplay.
  905. libxmp is now the default sound engine for modules, fixing a
  906. longstanding bug where certain S3Ms would have muted channels.
  907. GDM modules are now supported by MZX again. If you notice any
  908. inaccuracies with mod files, please report them to the tracker.
  909. Fixed bugs include a major overhaul of the glsl shaders for
  910. compatibility with almost any system, various sprite, text box,
  911. and input bugs, a crash fix when MZMs were saved from out of
  912. bounds board locations, and a bug where opening worlds or
  913. testing from the editor could cause MegaZeux to exit.
  914. FEATURES
  915. + The "shaders/extra" folder is now "shaders/scalers". The
  916. default vertex shader is still located in the shaders folder.
  917. + The default scaling shader can now be set in the config file
  918. using the gl_scaling_shader option. If not defined, MegaZeux
  919. will load assets/shaders/scalers/semisoft.frag.
  920. + The robot debugger now supports monitoring the values of
  921. counters and strings. Use the config menu/breakpoint editor to
  922. add watchpoints; when the debugger detects a change in a
  923. watchpoint counter/string AFTER a command has been executed,
  924. the robot debugger will open.
  925. + The robot debugger can now send robots labels. Use 'G' or
  926. select 'Goto' in the robot debugger to use this feature. The
  927. name and label inputs support expression parsing and string/
  928. counter interpolation.
  929. + The robot debugger can now use line numbers in breakpoints.
  930. + The palette editor help can now be hidden with Alt+H. The
  931. default behavior for this can be set in the config file. The
  932. palette editor help is visible by default.
  933. + The palette editor's mouse functionality has been improved.
  934. Behavior when clicking the palette has been restored, and
  935. component sliders have been added.
  936. + The palette editor now supports alternate color spaces.
  937. + The debug window now displays the last key_code (green) and
  938. key_pressed (magenta) values detected during gameplay. These
  939. values are located in the bottom right corner of the window.
  940. + The default fullscreen resolution for scalable renderers is
  941. now 1280,720. The default fullscreen resolution for 'software'
  942. is still 640,480. The default aspect ratio is now 'modern'.
  943. + The checkres utility has been updated to support 2.90X worlds,
  944. worlds in subdirectories of zip archives, multiple input files
  945. to test, and the ability to specify secondary directories and
  946. zips to search (e.g. for games with separate music zips).
  947. BUGFIXES
  948. + Fixed a bug where certain "keyN" labels, such as "key$", would
  949. not work correctly.
  950. + Integer comparisons between numbers greater than 2^31-1 apart
  951. now work correctly. (Lancer-X)
  952. + The palette editor now displays the SMZX mode 1 palette
  953. correctly.
  954. + Sprite collisions now correctly ignore the sprite's visual
  955. width and height.
  956. + Blank lines are no longer skipped when copy-pasting text into
  957. the robot editor. (Lancer-X)
  958. + Fixed a bug where key presses in dialogs could be detected in
  959. games, and keypresses could still carry between other dialogs.
  960. + [ message boxes now use the same screen mode as everything
  961. else. Same with scrolls. (Lancer-X)
  962. + spr#_setview now works with unbound sprites. It's pretty nasty
  963. as the viewport can't scroll with pixel precision, but the new
  964. behavior should still be better than the old. (Lancer-X)
  965. + Fixed a bug affecting certain Intel HD Graphics cards and the
  966. GLSL renderer that appears to have been around since that
  967. renderer was first introduced. (Lancer-X)
  968. + Fixed a bug where the numeric numpad keys were inappropriately
  969. translated to regular keys based on numlock when they were
  970. read from KEY_PRESSED. This behavior is now locked to worlds
  971. from 2.82X through 2.84X.
  972. + Fixed a bug where warping the mouse on one axis would snap the
  973. mouse to the nearest pixel on the other axis, causing problems
  974. for upscaled windows.
  975. + Fixed a bug where mouse control would not respect video_ratio
  976. settings aside from "stretch".
  977. * Fixed a bug where MZX would attempt to load certain invalid
  978. worlds that should have been caught by validation.
  979. + Copy block to MZM no longer crashes when the MZM is partially
  980. overlapping the board edge. (Lancer-X)
  981. + Fixed bug where MegaZeux would sometimes exit immediately on
  982. loading a game or would immediately exit testing.
  983. DEVELOPERS
  984. + libxmp is now the default module sound engine. Use "make xmp"
  985. to make and install libxmp if it is not available on your
  986. platform.
  987. + Mac OS X portability improved. (Spectere and Why-Fi)
  988. June 29, 2017 - MZX 2.90
  989. Hey, it's been a while! Didn't mean to keep everyone waiting.
  990. To make up for it as much as possible, we've prepared an extra
  991. special release of MegaZeux here for you. Yeah, you!
  992. I don't even know where to start with this release, as there's
  993. simply a lot to talk about. MZX's world formats and rendering
  994. architecture have gone through major overhauls, and a multitude
  995. of bugs have been fixed (60+). Particularly the MZX UI graphical
  996. glitch that occurred when an SMZX mode was enabled.
  997. Some notable new features are unbound sprites (MZX's new native
  998. pixel precision support), loading character sets/palettes/source
  999. code/MZMs from strings, saving MZMs to strings, a new Robotic
  1000. debugger, the SAVE_COUNTERS and LOAD_COUNTERS function counters,
  1001. options to help create standalone game releases, the ability to
  1002. assign character sets/palettes to a board to load on entry, and
  1003. resetting boards on entry. The size limit of Robotic bytecode
  1004. has been increased to 2MB.
  1005. Other important mentions: MegaZeux has been updated to use
  1006. SDL 2.0 and libmodplug 0.8.9.0. The SAVE_WORLD function counter
  1007. has been permanently removed. The downver utility has been
  1008. temporarily discontinued, as adapting it to this release would
  1009. have been a considerable amount of work. Instead, there is a new
  1010. option in the Export menu in the editor to export a 2.84 world.
  1011. Enjoy, and try not to get overwhelmed by all of the new stuff!
  1012. FEATURES
  1013. + Added a built-in robot debugger. See the Debug Mode section of
  1014. the help file for details.
  1015. + Added the COMMANDS_STOP special counter to MegaZeux. When a
  1016. robot executes a number of commands exceeding this value while
  1017. testing, the robot debugger will be enabled automatically and
  1018. will open. During regular gameplay, it will be ignored. The
  1019. default value of COMMANDS_STOP is 2000000.
  1020. + The counter debugger now remembers its previous position after
  1021. being reopened.
  1022. + Added commands_cycle and commands_total variables to the Robot
  1023. section of the counter debugger. See the Debug Mode section of
  1024. the help file for details.
  1025. + Certain types specified as 255 on the char ID table are now
  1026. treated as Custom* types when placed and selected in the
  1027. editor. If you switched a type to char ID 255 in a game that
  1028. already had that type, the parameters will not be changed
  1029. (and the types will still be char 0 if they were already
  1030. placed in the world). When making a type a Custom* type from
  1031. the global chars dialog, it will appear visually different in
  1032. the list and in the character selection window, and also ask
  1033. for confirmation.
  1034. + The enter menu can be closed with escape now.
  1035. + In the editor, the Backspace key now removes the top layer
  1036. and brings the under layer to the top, as a compliment to Del.
  1037. This does not affect the text entry behavior.
  1038. + Seeking in the String section of the counter debugger will now
  1039. ignore the $ prefix.
  1040. + Tentative joypad POV hat support added: joyNhat = U, D, L, R
  1041. + The BUTTONS counter has been extended to support the mouse
  1042. wheel and X1/X2 buttons.
  1043. + Strings can now be used in the LOAD PALETTE "file" command in
  1044. place of a file name, i.e. LOAD PALETTE "$string+10".
  1045. + Strings can now be used in the LOAD CHAR SET "file" command in
  1046. place of a file name, i.e. LOAD CHAR SET "@240$chars".
  1047. + Strings can now be used for the special counter LOAD_ROBOT in
  1048. place of a file name, i.e. set "$str" "LOAD_ROBOT".
  1049. + Strings can now be used for saving and loading MZMs in place
  1050. of a file name, i.e. put "@$str" image_file... (Lancer-X)
  1051. + Added ESCAPE_MENU counter. When set to 0, this counter will
  1052. prevent pressing escape from opening the exit gameplay menu.
  1053. This will not affect any other escape menus in MZX, and the
  1054. exit gameplay menu can still be opened by other means, such as
  1055. ALT+F4, CTRL+C, the window close button, etc.
  1056. + Added EXIT_GAME function counter. When set to anything but 0,
  1057. this will cause MegaZeux to exit to the title screen. This has
  1058. no effect on the title screen.
  1059. + Added the ternary operator (?:) to expressions. If the value
  1060. to the left of ? is not equal to zero, the expression between
  1061. the ? and the : will be evaluated. If the value to the left of
  1062. ? is equal to zero, the expression to the right of : will be
  1063. evaluated.
  1064. + Added SAVE_COUNTERS and LOAD_COUNTERS special counters. These
  1065. will save and load files containing every counter and string
  1066. from the world they're used in, respectively. These files are
  1067. not version checked, and may be used like save files.
  1068. + Robots now keep their robot IDs after reloading saves.
  1069. + Added standalone mode. The config parameters standalone_mode
  1070. and no_titlescreen can now be used (from MZXRun only) to
  1071. create standalone versions of MZX with the ability to fully
  1072. customise the player's experience. See config.txt for details.
  1073. (Lancer-X)
  1074. + The minimal help bar now displays robot memory and the current
  1075. board mod when contextually appropriate.
  1076. + The minimal help options for the board and robot editors are
  1077. now enabled by default.
  1078. + Shaders can now be changed from the F2 menu when using the
  1079. GLSL renderer. The user can select a fragment shader from the
  1080. assets/shaders/extra/ directory. If a matching vertex shader
  1081. exists, it will be loaded alongside the fragment shader.
  1082. Otherwise, MZX will fall back to the default vertex shader.
  1083. + On Linux and Mac OS X the configuration file will be copied
  1084. into the user's home directory and given the name
  1085. .megazeux-config if it is not already present. This config
  1086. file will then be used instead of the global one. (Lancer-X)
  1087. + Added unbound sprites. Sprites can be unbound from the grid by
  1088. setting spr#_unbound to 1. Their coordinates will now refer to
  1089. the sprite's location in pixels, not tiles. spr#_width,
  1090. height, refx and refy still refer to chars; however, spr#_x,
  1091. y, cx, cy, cwidth and cheight are all in pixels. Unbound
  1092. sprites do not work with all renderers; currently, out of the
  1093. renderers available on the PC platforms, the overlay2 renderer
  1094. lacks this functionality. (Lancer-X)
  1095. + Unbound sprites do not let char 32 or blank characters (when
  1096. in ccheck 2) through like regular sprites do. Instead, set
  1097. spr#_tcol to a color that will be transparent when the unbound
  1098. sprite is drawn. (Lancer-X)
  1099. + Unbound sprites can make use of additional hidden charsets.
  1100. There are an additional 14 charsets beyond the default that
  1101. can be modified through using load char set or char edit.
  1102. (e.g. load char set "@256charset.chr")
  1103. A sprite can be set to refer to these later chars with the
  1104. spr#_offset counter. The offset value is then added to each
  1105. char in the sprite. You can use this to refer to higher char
  1106. sets.
  1107. (e.g. set "spr0_offset" 256)
  1108. Offset values can also be set to locations within a char set.
  1109. (Lancer-X)
  1110. + To allow you to access the extended charsets, the @ option to
  1111. load char set now takes up to 4 digits, rather than merely 3.
  1112. The + option still only allows 2 hex digits. (Lancer-X)
  1113. + The colors used by tiles of a given color # in SMZX mode 3
  1114. can now be rebound using the "smzx_idx#,#" counters.
  1115. (e.g. set "smzx_idx7,0" 32)
  1116. Now if you put down a c07 tile, all 00 pixels will refer to
  1117. color 32 (as opposed to color 0 in SMZX mode 2 or color 7 in
  1118. SMZX mode 1). These values are reset whenever the SMZX mode is
  1119. changed. Once again, this is only available to renderers that
  1120. support unbound sprites. (Lancer-X)
  1121. + Edited worlds now retain their world version until resaved.
  1122. Before, they would lose their world version after testing.
  1123. + Added world version display to the debug window.
  1124. + Added GOOP_WALK counter for robots.
  1125. + Added "Reset board on entry" parameter for boards. When set,
  1126. the board will reset to its original state when the board is
  1127. entered during gameplay. This setting can be saved as a board
  1128. default.
  1129. + Added "Load charset on entry" parameter for boards. When set,
  1130. MegaZeux will load the selected charset file when the board
  1131. is entered during gameplay. This setting can be saved as a
  1132. board default.
  1133. + Added "Load palette on entry" parameter for boards. When set,
  1134. MegaZeux will load the selected palette file when the board
  1135. is entered during gameplay. This setting can be saved as a
  1136. board default.
  1137. + Maximum robot size has been increased from 64kb to 2mb.
  1138. (Lancer-X)
  1139. + Debytecode: the LOAD_SOURCE_FILE special counter can now be
  1140. used to load and compile a robot program from source code.
  1141. This can be used with either a file or a string as input.
  1142. + Debytecode: the robot editor's import robot menu now supports
  1143. loading legacy source code.
  1144. BUGFIXES
  1145. + Fixed crash bug when using ALT+Z (Clear Board).
  1146. + Fixed crash bug when attempting to view the help file in the
  1147. updater.
  1148. + Fixed crash bug when attempting to use SMZX_R/G/B with out-of-
  1149. range indexes.
  1150. + Fixed crash on exit when the config file did not explicitly
  1151. specify update hosts.
  1152. + Fixed memory leak involving bounds-breaking FREADn calls.
  1153. + Fixed counter debugger issue where counters and strings
  1154. starting with chars over 'Z' would cause everything in their
  1155. section to be placed into the '#' list.
  1156. + Dialog window labels can not be put into focus by clicking
  1157. them with the mouse anymore.
  1158. + Dialog windows closed by pressing escape will now close only
  1159. on a new press instead of whenever the key is held.
  1160. + Load (F4)/quickload (F10) on invalid save files in-game leaves
  1161. the current game running instead of exiting to the titlescreen
  1162. or editor.
  1163. + Fixed issue where counter debugger would display wrong values
  1164. for the robot LOCAL counters.
  1165. + Fixed robot editor issue where global robot coords would be
  1166. reloaded as 65535.
  1167. + Fixed issue where board defaults would be reset after leaving
  1168. testing until the world was manually reloaded.
  1169. + Fixed issue where the Board Info dialog would not close when
  1170. 'Cancel' was selected.
  1171. + Fixed bug where chars 254 and 255 would not be reverted back
  1172. to their defaults via F4/F5.
  1173. + Fixed bug where player would move onto goop when walking into
  1174. enemys on top of goop.
  1175. + Fixed bug where 'enter' would be detected in loaded save files
  1176. when loading from a title screen.
  1177. + Fixed issue where MZX was using the world file version instead
  1178. of the internal MZX version when saving MZMs and determining
  1179. whether it could load MZMs both within the editor and in game.
  1180. + Changed the caption behavior in the world editor as to refresh
  1181. only when board values are synchronized.
  1182. + Fixed bug where, when exiting gameplay, the world would keep
  1183. running on the title screen if MegaZeux lost read access to
  1184. the world file.
  1185. + Fixed minor bug where trying to load a nonexistant mod would
  1186. change MOD_NAME's output while the previous mod still played.
  1187. + Fixed a Windows-only bug, where attempting to load a Robotic
  1188. file in the Robot Editor or with LOAD_ROBOT would not load the
  1189. entire file if the file contained 0x1A (char 26).
  1190. + Fixed a bug where the lazer animation would fail to complete.
  1191. + Fixed bug where the VOLUME # and MOD FADE # # inputs could go
  1192. out of range, resulting in ear-piercing white noise. Inputs
  1193. now wrap between 0 and 255 for compatibility reasons.
  1194. + Fixed bug where certain unicode values could crash MZX in the
  1195. character selection dialog.
  1196. + Fixed bug where : "keyN" would not work on the Pandora.
  1197. + Fixed a bug where FREAD could create a string larger than the
  1198. maximum string size.
  1199. + In the sprite section of the counter debugger, the spr_clistN
  1200. values were incorrectly labelled as "spr_collisionN". Fixed.
  1201. + Fixed counter debugger crash when selecting certain strings
  1202. containing escaped values.
  1203. + Added compatibility for the cycle-ending SHOOT, SHOOTMISSILE,
  1204. SHOOTSEEKER, and SPITFIRE commands from MegaZeux 2.83.
  1205. + Fixed crash bug when attempting to use file counters with
  1206. paths equal to or longer than 512 chars in length. MegaZeux
  1207. will now ignore such paths.
  1208. + Fixed bug where MZX would crash with out-of-bounds joystick
  1209. key mappings.
  1210. + Fixed a bug where robots could not push the SliderNS type to
  1211. the south.
  1212. + Fixed a bug where a robot using #return or #top multiple times
  1213. within a single command could cause a crash.
  1214. + Fixed a port regression where IF ANY would continue to iterate
  1215. over the board after finding a match, potentially triggering
  1216. multiple subroutines, #return, or #top labels.
  1217. + Fixed a bug where MZM error messages could repeat indefinitely
  1218. and lock up MZX.
  1219. + Fixed a bug where the (#)PUSHED label would not be sent to the
  1220. first object in a row of pushed objects if that object was a
  1221. robot.
  1222. + Fixed support for PPC Linux builds. (Insidious)
  1223. + Fixed a bug where a robot sent a subroutine would restart the
  1224. command it was executing upon #return if the command was a
  1225. multi-cycle command. This fix applies to worlds saved in 2.90
  1226. and later only.
  1227. + Fixed a bug where ALT+F4 would cause menus to open instead of/
  1228. in addition to triggering an exit event.
  1229. + Fixed a bug where subdirectory mods with different types of
  1230. slashes in their names would fail to be recognized as the same
  1231. mod.
  1232. + Fixed a bug where SMZX palette intensities were not saved.
  1233. + Made the opengl2 and glsl renderers endian-correct. (Lancer-X)
  1234. + Fixed a bug where keystrokes were getting lost during event
  1235. processing. (Lancer-X)
  1236. + The UI now uses the regular MZX mode and the protected palette
  1237. when playing SMZX games. This is only available to renderers
  1238. that support unbound sprites. (Lancer-X)
  1239. + Changing from SMZX mode 1 to 0 correctly restores the palette.
  1240. (Lancer-X)
  1241. + Fixed a bug where the tree list in the counter debugger would
  1242. rapidly scroll through elements when clicked.
  1243. + Fixed a bug where the updater, on failing to receive data from
  1244. the server, would consume large amounts of CPU before timing
  1245. out. (Lancer-X)
  1246. + Fixed various bugs related to the pushing of sensors.
  1247. (Lancer-X)
  1248. + Fixed a bug where MZX would crash in some cases when testing
  1249. after adding/importing new boards into a world.
  1250. + Made KEY a board counter <=2.70. Also added masking <=2.62 to
  1251. make Oath Demo work again. (Lancer-X)
  1252. + Bullet types shot by robots clamped to 0-2. (Lancer-X)
  1253. + SAVE_GAME and SAVE_WORLD now happen at the end of a cycle, not
  1254. immediately. (Lancer-X)
  1255. + SAVE_WORLD no longer exists. (Lancer-X)
  1256. + Labels at the end of a program no longer get randomly sorted
  1257. first and stop the actual first instance of that label being
  1258. called. This fixes a bug in the Dark Corner 'Zane' demo.
  1259. (Lancer-X)
  1260. + Copy and copy block in pre-port MZX games now preserves the
  1261. state of any robots copied. (Lancer-X)
  1262. + Copying and pasting robot code with LF line endings on Windows
  1263. now works. (Lancer-X)
  1264. + MegaZeux can now be exited during an infinite loop. (Lancer-X)
  1265. + Fixed a bug where SAVE_GAME on the first cycle of a board
  1266. would cause the game to be faded out on load. This still
  1267. affects legacy worlds. (Lancer-X)
  1268. + Fixed a bug where trying to create new counters called "fread"
  1269. or "fread_counter" in the counter debugger would cause the
  1270. file being read to advance.
  1271. + Fixed a bug where the numpad was unable to be used to control
  1272. the player, despite being identical to the cursor keys for
  1273. every other situation. (Lancer-X)
  1274. + Fixed a bug where pre-port worlds could play any number of
  1275. concurrent samples. This makes portions of Bernard the Bard
  1276. quite cacophonous. (Lancer-X)
  1277. + Fixed a bug where per-game config files could set options they
  1278. weren't supposed to be able to.
  1279. DEVELOPERS
  1280. + Fixed linking bug when attempting to make a modular build of
  1281. MegaZeux in Debian/armhf. -fPIC is now enabled for modular
  1282. builds on all platforms. (Insidious, ajs)
  1283. + Added SDL 2.0 support. At the moment, the overlay renderers
  1284. are not accelerated by SDL 2.0 and may be slower than their
  1285. SDL 1.2 counterparts. Other minor inconsistencies may exist
  1286. between the two versions. (ajs)
  1287. + Keycode help diagram replaced with an HTML file (from the
  1288. older PNG file). This will make future updates much easier.
  1289. + Updated NDS, Wii and PSP ports to latest devkitpro toolchains.
  1290. + Updated libmodplug to version 0.8.9.0. (asiekierka)
  1291. + Added experimental libxmp support. (asiekierka)
  1292. + Added experimental libopenmpt support. (asiekierka)
  1293. + New rendering architecture that mostly sits alongside the old
  1294. rendering architecture. There is a new function implemented by
  1295. supporting renderers: render_layer(). This provides a layer
  1296. in a similar form to the text_video array in graphics and
  1297. expects that to be drawn on the screen. This is called once
  1298. for each layer that is drawn- this means the board, overlay,
  1299. UI and sprites. Each layer can have a different SMZX mode,
  1300. although at the moment this is only used to allow the UI to
  1301. remain in regular MZX mode while the game or editor is in SMZX
  1302. mode. The render_layer() function is only called if it is
  1303. implemented by the renderer and if there is something on the
  1304. screen that can only be drawn by the renderer (e.g. unbound
  1305. sprites, or UI elements in an SMZX game) (Lancer-X)
  1306. + LibSDL2 support is now the default. It can still be disabled
  1307. by passing --disable-libsdl2 to config.sh. (Lancer-X)
  1308. December 24, 2012 - MZX 2.84c
  1309. Hey all, new version of MegaZeux here! And hopefully without any
  1310. crashes this time around! Haha yeah right.
  1311. The most notable thing this release (besides fixed crash bugs,
  1312. as usual) is the new counter debugger! Give it a try and tell us
  1313. what you think!
  1314. Counter binary search has been replaced with a hash table in
  1315. versions of MegaZeux for most platforms. This has resulted in
  1316. slightly faster counter lookups, and MUCH faster creation of
  1317. counters, since MegaZeux doesn't have to keep the list ordered.
  1318. The hash table is turned off for NDS builds for now due to tight
  1319. memory constraints.
  1320. Otherwise, most of the new features are editor enhancements and
  1321. modifications. Notable mentions are reordering the board list
  1322. with 'M' and a custom undo history size.
  1323. FEATURES
  1324. + The functionality of the F11 counter/string debugger has been
  1325. expanded to include sprites, robots, and miscellaneous world
  1326. and board variables. The ability to modify many of these vars
  1327. is limited and a large portion are read-only. In addition, you
  1328. may add new counters and strings, hide empty counters/strings
  1329. (does not affect built-in variables), and search by name and
  1330. contents. Export is still limited to counters and strings.
  1331. + Max string length has been increased from 1MiB (1048576 bytes)
  1332. to 4MiB (4194304 bytes).
  1333. + Board mods may now be selected from subdirectories of the game
  1334. folder in the ALT+N dialog.
  1335. + The title bar now displays the world and editing board/robot
  1336. names based on context.
  1337. + Fire Burns Space and Fire Burns Forever are off by default.
  1338. + You may now specify the size of the undo history in the char
  1339. editor, and the history affects the entire char set. Undo is
  1340. still ALT+U, redo is now ALT+R.
  1341. + You may now use the -/+ keys in the world editor to move to
  1342. the previous/next boards in the board list, and Shift+Arrows
  1343. to change to the boards linked by board edge.
  1344. + You may now move the current board anywhere in the board list
  1345. with M. You may not move the title screen board.
  1346. + View mode in the board editor (V) will start from the current
  1347. location of the screen now rather than at the top-left corner.
  1348. + Config file options for default board settings added, as well
  1349. as the ability to save these per-world from the editor.
  1350. + Ctrl+G - Goto board position at X,Y.
  1351. + png2smzx now requires less arguments and has an option to skip
  1352. a char (generally char 32 will be useful to skip).
  1353. + Debytecode: The robotic editor now asks for a confirmation to
  1354. save the program on exit.
  1355. BUGFIXES
  1356. + Fixed a bug in the 'glsl' renderer that caused the cursor
  1357. color to be ignored (always white). This caused the cursor to
  1358. not be visible if shown on a white background. (ajs)
  1359. + Setting $string.length will not cause memory corruption now.
  1360. In addition, its pre-2.84 behavior of intentionally allocating
  1361. the string past the set length has been restored, but the
  1362. length itself will still be set to the correct value.
  1363. + Added bounds check to INC "$string" "value". Attempts to
  1364. increase a string past its maximum length (4 MiB, or 4194304
  1365. bytes) will now fail.
  1366. + Fixed MegaZeux crash that could sometimes occur when a string
  1367. was increased by itself.
  1368. + Fixed MegaZeux crash that could occur when exiting the editor
  1369. to a world file that failed validation.
  1370. + Rolled string->storage_space into string->name to prevent
  1371. buffer overflow errors and crashes. (Mr_Alert)
  1372. + Fixed crash that would occur when attempting to type in a dir
  1373. in the ALT+N dialog.
  1374. + Fixed a bug where copy block $string would apply REL twice.
  1375. + Thanatos Insignia (DoZ Q1 2011, 98485) will now play without
  1376. freezing both normally AND after loading a save. Robots will
  1377. not be incorrectly versioned with the save format magic now.
  1378. + Fixed bug where ALT+M wouldn't always edit non-stored types.
  1379. + Fixed bug where ! could not be used as a substitute for ~.
  1380. + Fixed a bug where tab-draw and block actions would carry
  1381. between board and overlay editing. ALT+O now sets the drawing
  1382. mode back to normal on a switch.
  1383. + ALT+M now edits the overlay instead of the board while editing
  1384. the overlay.
  1385. + Quick-load (F10 during gameplay) will not work if the load
  1386. menu (F4) has been disabled with the LOAD_MENU counter.
  1387. + Fixed a bug where the listening mod directory would stay the
  1388. same as the directory the editor was opened in.
  1389. + The listening mod now continues to play after world and board
  1390. changes, and also after the board mod has been changed by
  1391. ALT+N or Shift+8/*.
  1392. + LOAD_GAME will not incorrectly trigger JUSTENTERED anymore.
  1393. + Palette/intensity changes made on the same cycle as a teleport
  1394. player command are now properly taken into account. This fixes
  1395. a game-stopping regression in Sponkgo's Legendary Journey
  1396. where leaving the second stage's bonus area would leave the
  1397. color intensity at 0.
  1398. + SMZX mode is now disabled when leaving the editor if it was
  1399. enabled in the editor via F11.
  1400. + Fixed potential crash bug where robot bytecode files were not
  1401. being validated before being loaded with LOAD_BC.
  1402. + Fixed minor message box bug dating back to DOS where a message
  1403. box starting with an unavailable option would begin with the
  1404. cursor on a blank line.
  1405. + Fixed crash that happened when typing over bounds while
  1406. renaming a file in a file manager dialog. File and directory
  1407. renaming now use a popup dialog akin to ALT+N.
  1408. + Files with names longer than 55 chars may now be selected in
  1409. file managers. The limit for typing in a file name is still 55
  1410. chars. You may not enter a blank line as a file name anymore.
  1411. + Fixed segfault when attempting to read THIS_COLOR for the
  1412. global robot. It will now always return -1.
  1413. DEVELOPERS
  1414. + Overhauled txt2hlp. Error messages now differentiate between
  1415. hyperlinks and labels and will take the display chars ~ and &
  1416. into account. Eventually, the goal should be to get rid of
  1417. txt2hlp altogether and have MZX load straight from the .txt
  1418. file.
  1419. + Added compile option to use uthash for counter/string lookups
  1420. as opposed to binary search. Ideally, this will vastly improve
  1421. lookup speeds for large numbers of counters/strings, but will
  1422. consume more memory. (thanks to Lancer-X for the modified
  1423. uthash header file)
  1424. June 20, 2012 - MZX 2.84b
  1425. Less than three weeks after the last one, MegaZeux 2.84b is here a few weeks
  1426. early to fix a key regression regarding the use of REL commands with the
  1427. COPY x y dx dy command. While several new features have been added, this
  1428. release was mostly about rooting out as many crash bugs from MegaZeux as
  1429. possible. An official public beta release of debytecode has been pushed off
  1430. once again due to time constraints.
  1431. Most notable as far as new features go, pressing 'E' while a game's title
  1432. screen is running will now take you directly to that world in the editor. A
  1433. blank new world may still be created with 'F8', and now with the 'N' key. The
  1434. function key corresponding to the new 'E' functionality is 'F9'.
  1435. A major new aspect of this version, which could be seen as a bugfix or as a
  1436. new feature, is MegaZeux's ability to validate the MZX, MZB, MZM, and SAV file
  1437. formats. Validation has been rigorously tested and refined, and a comprehensive
  1438. list of most world files that fail any check is available on the MZX Wiki. File
  1439. load crashes and force-quit "Out of memory" errors in these instances are nearly
  1440. a thing of the past.
  1441. One final major change regards the file manager dialogs (Load Save Game, etc).
  1442. These dialogs have been internally overhauled to avoid permanent directory
  1443. changes unless a valid world or save file has been loaded. If any bugs are
  1444. experienced using these, they should be reported to the MZX Bug Tracker.
  1445. FEATURES
  1446. + Pressing 'E' or 'F9' on a title screen will now open the current world for
  1447. editing. Press 'N' or 'F8' to create a new world.
  1448. + Multiple hosts may now be defined in config.txt. Update attempts will
  1449. be carried out in the order they are defined.
  1450. + A startup path may be defined in config.txt ("startup_path").
  1451. + Specifying the backup filename with a directory, ex. "backup/file", will now
  1452. silently attempt to create the directory if it does not exist.
  1453. + MZM3 is now forward compatible (robots will be dummied out).
  1454. BUGFIXES
  1455. + World validation has been strengthened, preventing disasterous loads of most
  1456. non-world files. Mostly intact/valid worlds, such as HUNTDRAK.MZX, can be
  1457. loaded -- corrupt/missing boards will be replaced with blank boards, corrupt
  1458. robots will be replaced by robots with empty programs, and so on. If more
  1459. robots/scrolls/signs are found on a board than their data suggests there
  1460. should be, the extras will be replaced with customblocks. Back up the version
  1461. of the world with errors in this instance, as the robots' code or scroll text
  1462. may still be salvageable from the world data.
  1463. + Fixed a long-standing memory corruption bug in the shoot command introduced
  1464. by the port.
  1465. + Mac OS X: MegaZeux now uses /Users/[username] as the default starting
  1466. directory. Apps previously would always start at the filesystem root. (ajs)
  1467. + Fixed dangerous crash-causing bug where the editor would not chdir back
  1468. to the correct directory after testing.
  1469. + MegaZeux, after saving a world to a new directory, now chdirs to the new
  1470. current world file's directory.
  1471. + Changed behavior where a failed save file load would fade the still-running
  1472. world out of focus. MegaZeux now leaves the world in focus.
  1473. + All failed world/save loads leave the current world running and in the same
  1474. working directory.
  1475. + When startup_file is defined as a directory at the command line, MZX chdirs
  1476. to the directory instead of attempting to open it as a world file. In the
  1477. config file, the directory is pruned off since there's a new config option
  1478. for the startup path.
  1479. + Fixed regression where the rel commands would be ignored for board to board
  1480. copy x y dx dy.
  1481. + Updated MZX_SPEED in the counter debugger, where it was still getting clamped
  1482. from 1 to 9.
  1483. + COLOR FADE IN and COLOR FADE OUT (and all built-in uses of them) now correctly
  1484. respect any COLOR INTENSITY changes made before they are used.
  1485. + In file selection dialogs, when attempting to make a directory that already
  1486. exists with ALT+N, MZX now shows the correct file name and does not force the
  1487. user to quit MegaZeux.
  1488. + In file selection dialogs, when pressing ALT+D with a directory selected, MZX
  1489. now correctly prompts to delete the selected directory instead of a file.
  1490. + The option to import world files in the board editor now correctly takes the
  1491. world version into account.
  1492. + Savegame MZMs loaded into the editor now have their robots dummied out for
  1493. safety purposes.
  1494. + Fixed bug where INPUT STRING would not terminate lines longer than 71 chars
  1495. after clipping them.
  1496. + INPUT STRING and ASK do not allow either tabs (INPUT only) or line breaks
  1497. (both) anymore.
  1498. + Fixed bug where putting a scroll/sign in the editor buffer and then selecting
  1499. something else could cause a crash on leaving the editor.
  1500. + Temporary fix for MSVC bug where all window dialogs would freeze. (MZXGiant)
  1501. + Temporary fix: board block actions will not corrupt robot source code in DBC
  1502. anymore. (MZXGiant)
  1503. DEVELOPERS
  1504. + Switched debian prereq. and darwin libpng12 to libpng, switched darwin and
  1505. default ldflags to use '--ldflags' instead of '--libs'.
  1506. + Darwin CC/CXX compiler can now be specified on the command line. (ajs)
  1507. + Cleaned up broken ifeq structure in darwin Makefile.in so ARCHes other than
  1508. i686 can be built.
  1509. + Updated MSVC dirent.h to the latest version (MZXGiant)
  1510. + Added updated MSVC dependencies. (MZXGiant)
  1511. June 1, 2012 - MZX 2.84
  1512. The first version of MegaZeux to be released in two and a half years, this
  1513. time with a vast number of bugfixes, several new features, and hopefully
  1514. no new bugs.
  1515. There's a new port to the Pandora platform from Exophase. There are no
  1516. binaries for this platform yet, as ajs has not had time to set up the
  1517. cross-compiler. Same goes for Android.
  1518. Another major (internal) change this time around is that Exophase's
  1519. experimental "debytecode" language modification has been merged. This still
  1520. has some major bugs open against it, and missing features, so we won't be
  1521. doing official releases yet. You can add support for this feature by
  1522. passing "--enable-debytecode" to config.sh on all platforms.
  1523. Thanks to Terryn, Exophase and MZXGiant for their contributions and to
  1524. Lancer-X, Old-Sckool and Lachesis who reported and tracked the majority
  1525. of bugs this time round.
  1526. FEATURES
  1527. + Added experimental port to Pandora. See arch/pandora/README for more
  1528. information. (Exophase)
  1529. + Directories may now be opened with FREAD_OPEN. This functionality
  1530. can be used in conjunction with FREAD_POS and set "$str" FREAD.
  1531. FREAD will set the string to "" when it has reached the end of the
  1532. file listing.
  1533. + MZX_SPEED can now be set up to 16 by a robot or from the F2 dialog
  1534. menu. (Lachesis)
  1535. + Numbers can now be temporarily backspaced past their minimum value
  1536. to make typing a new number more intuitive in dialogs. (Lachesis)
  1537. + Chars 0 and 255 can now be selected from the Edit Chars submenu of
  1538. the Global Info menu. Using char 255 on a kind that would have
  1539. previously denied it now gives a warning dialog. (Lachesis)
  1540. + New Counter: SPACELOCK represents the default space functionality for
  1541. the built-in player. Setting this counter to 0 disables it, allowing
  1542. the player to move as normal when space is pressed. Setting it back
  1543. to 1 enables it again. Defaults to 1. (Lachesis)
  1544. + New Counter: FREAD_DELIMITER allows you to change the terminating
  1545. char for the string FREAD function. The terminating char still
  1546. defaults to '*'. A complementary FWRITE_DELIMITER function has been
  1547. added as well. (Lachesis)
  1548. + New Counter: ARCTANdy,dx takes two values and returns the angle
  1549. with corrected quadrants as an alternative to using ATANdy with
  1550. DIVIDER as dx, which was less intuitive and never documented
  1551. properly. (Lachesis)
  1552. + New Counters: MINv1,v2 and MAXv1,v2 return the minimum or maximum
  1553. value between two inputs, respectively. Chain several of these in
  1554. an expression or a loop for more arguments. (Lachesis)
  1555. + New Counters: bchX,Y; bcoX,Y; bidX,Y; and bprX,Y are new shorthand
  1556. access counters for BOARD_CHAR, BOARD_COLOR, BOARD_ID, and
  1557. BOARD_PARAM. The same limitations to those counters apply to the
  1558. new ones. (Lachesis)
  1559. + New Counters: uchX,Y; ucoX,Y; uidX,Y; and uprX,Y are new shorthand
  1560. access counters for the board's under layer. The same limitations
  1561. apply to these as to their board counterparts. Additionally, these
  1562. counters will fail if the same spot on the normal board is occupied
  1563. by a floor-type (space, [dir]water, lava, fake, etc...). (Lachesis)
  1564. + New Counters: ochX,Y and ocoX,Y are new shorthand access counters
  1565. for the overlay. Like OVERLAY_CHAR and OVERLAY_COLOR, these are
  1566. read-only to discourage the user from writing to these instead of
  1567. using the much faster put [color] [char] overlay [x] [y]. (Lachesis)
  1568. + Pressing ALT+G from the world editor now goes directly to the Global
  1569. Robot without having to skip through the Global Info menu. (Lachesis)
  1570. + MZM3 has been enabled for 2.84 and all following versions. The
  1571. difference between MZM3 and MZM2 is that MZM3 stores a copy of the
  1572. world version, allowing the robot format to change. (Lachesis)
  1573. + COPY can now take + and # prefixes to its arguments. COPY BLOCK and
  1574. COPY OVERLAY BLOCK can now take + prefixes to their first set of
  1575. coordinates. (Lachesis)
  1576. + Subroutine versions of TOUCH, BOMBED, INVINCO, PUSHED, PLAYERSHOT,
  1577. NEUTRALSHOT, ENEMYSHOT, SHOT, PLAYERHIT, LAZER, SPITFIRE, GOOPTOUCHED,
  1578. PLAYERHURT, KEY[char], KEYENTER, THUD, and EDGE have been added. These
  1579. should ALWAYS be used in conjunction with LOCKSELF/ZAP and #RETURN or
  1580. #TOP to keep the robot stack under control. Please remember that THUD
  1581. and EDGE ignore LOCKSELF and their subroutine versions must be ZAPped.
  1582. JUSTENTERED, JUSTLOADED, and the sensor labels have been excluded from
  1583. this due to various reasons. (Lachesis)
  1584. BUGFIXES
  1585. + Fixed a bug where LOAD_ROBOT or LOAD_BC would not reset the stack
  1586. pointer for newly loaded programs. This could cause crashes if a robot
  1587. popped the stack in the new program.
  1588. + Fixed a bug where range checking of BOARD_X and BOARD_Y would sometimes
  1589. not be done correctly, leading to crashes.
  1590. + Strings in the debug menu list no longer interpret any color codes they
  1591. may contain.
  1592. + Fixed a bug where a string would not be interpreted correctly if it
  1593. used a '.' character in a splice parameter expression. Expressions such
  1594. as IF "$str#('$str2.length'-4)" = "blah" THEN "label" will now work
  1595. correctly.
  1596. + Fixed negative sprN_cheight et al from crashing. (Exophase)
  1597. + Placement of objects on the player will be blocked with an error dialog
  1598. like DOS versions, instead of silently failing after setup. (MZXGiant)
  1599. + Fixed a bug where LOAD_ROBOT would not properly parse lines of imported
  1600. code that had leading whitespace. (MZXGiant)
  1601. + Fixed an integer wrapping bug in debytecode, disallowed numeric literals
  1602. outside of the bounds of a signed short. (MZXGiant)
  1603. + Fixed a bug that would corrupt the UI palette if "set color" was run
  1604. against a color index over 15. (MZXGiant)
  1605. + If either board dimension is less than the editor viewport, the character
  1606. and colors used to indicate space outside of the board are taken from
  1607. protected sets. In game, they are taken from the game's sets.
  1608. + Increase limit on difference for RANDOM "A" TO "B" to UINT_MAX rather
  1609. than INT_MAX - 1 as it was previously. Since the entire range represented
  1610. by a counter is now usable, there are no cases where RANDOM will "break".
  1611. + Fix avalanche rings and potions to limit boulder placement to 1/18,
  1612. matching the AVALANCHE command.
  1613. + Fix corruption and possible crashes when using VIEWPORT SIZE to set the
  1614. viewport to a size less than 80x25 but greater than the current board
  1615. dimensions. The viewport will now always be clamped to board size.
  1616. + Fix incorrectly changing horizontal mouse position on setting MOUSEY.
  1617. (Mr_Alert)
  1618. + Fixed overflow into protected character set when "Revert to..." is
  1619. selected in the character editing dialog. (MZXGiant)
  1620. + Music and SFX now mute when the updater launches and are restored when
  1621. it is complete. (MZXGiant)
  1622. + Fix odd string behaviour when copying between strings that happen to
  1623. be stored close to each other in memory. This fixes a regression
  1624. introduced by the "crash when pasting to and from the same string"
  1625. fix in 2.82b.
  1626. + The size/offset parameters for strings can now be specified in either
  1627. order (#+ vs +#) and will behave correctly.
  1628. + Revert bogus cycle-ending behaviour for SHOOT, SHOOTMISSILE,
  1629. SHOOTSEEKER and SPITFIRE.
  1630. + Improve cycle-ending compatibility with MZX versions prior to 2.80.
  1631. Fixes games such as Kya's Sword and Stones & Roks II.
  1632. + Restored shark's ability to move in goop.
  1633. + Clear SPR_YORDER upon loading a new world.
  1634. + When transitioning between boards, compare the module filenames of the
  1635. source and destination boards case-insensitively. A difference in case
  1636. will no longer cause the board module to be incorrectly restarted.
  1637. + Fixed rare rendering corruption in the load game dialog.
  1638. + Fixed a bug where SEND "robot" TO "#return" could corrupt the program
  1639. counter of the target robot if it had a stack pointer of zero.
  1640. + Fixed some security issues with SMZX_PALETTE and LOAD_BC counters.
  1641. + Only list/open regular files or symlinks to regular files in file
  1642. dialogs. Special files are now ignored.
  1643. + Opening directories with FWRITE_OPEN is now rejected properly on all
  1644. platforms.
  1645. + Fixed a bug where a file would be re-opened for read/write, even if
  1646. the file was missing or an I/O error occurred before saving.
  1647. + Fixed a bug where MZX could occasionally crash due to label list
  1648. corruption when copying robots from heap locations greater than
  1649. 2^32 bytes apart (only affected 64bit builds).
  1650. + Stopped SET "var" <command> from assembling. Some invalid uses of
  1651. command tokens were already being ignored, but this was just luck.
  1652. + Sprites with color c?? (inherited "natural" colors) will correctly
  1653. inherit the colors of special characters such as the player and other
  1654. self-colored built-ins.
  1655. + Debytecode's legacy expression converter should use is_string()
  1656. instead of its own (buggy) hand-rolled version. Fixes crash when
  1657. converting CoAZ.
  1658. + The editor no longer incorrectly clamps the intelligence of sharks,
  1659. spitting tigers and spiders to <=4, and no longer clamps the HP of
  1660. dragons to <=4. (Lancer-X)
  1661. + Accept SET EDGE COLOR "string" in addition to SET EDGE COLOR c??.
  1662. + Fixed NDS port initialization on DSi devices. (asiekierka)
  1663. + Fixed a bug in the joystick code where centering an axis clears
  1664. the previous axis button. (iamgreaser)
  1665. + Fixed a bug that allowed vlayer->board COPY BLOCK to overwrite
  1666. player. Blocks that would overwrite the player are now ignored.
  1667. + Fixed a 2.81e regression that allowed SENDs to self to ignore
  1668. LOCKSELF.
  1669. + Setting $str.length now makes $str the length specified. (Lachesis)
  1670. + Caps Lock no longer interferes with dialog box text input. (Lachesis)
  1671. + Increasing the size of a string with $str.length, $str.N, or with
  1672. a splice now wipes old string data with char 32s.
  1673. + Dialogs (especially "Exit gameplay - Are you sure?") now require the
  1674. user to have actually hit ESC to close, making escaping busyloops
  1675. and message loops much easier. (Lachesis)
  1676. + Added a compatibility fix for different label caching in 2.80 through
  1677. 2.83 that allowed constructs such as : "LABEL" / SEND "ALL" "LABEL"
  1678. on an unlocked robot to continue instead of getting caught in a loop.
  1679. The altered label caching caused #98485 Thanatos Insignia to lock up
  1680. in an unescapable busyloop in GIT versions. (Lachesis)
  1681. + MOD "[lead-in file]*" now works properly. In previous versions of the
  1682. port, this construct would result in the lead-in file failing to play
  1683. and the wildcard mod restarting when the player re-entered and re-
  1684. exited the board. (Lachesis)
  1685. + Fixed a bug where mod "*" would cause the mod to restart when entering
  1686. another board with the same playing mod. (Lachesis)
  1687. + ALT+D (Default palette) now requires a confirmation. (Lachesis)
  1688. + The COMMANDS counter is now saved as a 32-bit variable. (Lachesis)
  1689. + The LOOPCOUNT counter has been moved to save-only data and is now
  1690. saved as a 32-bit variable. (Lachesis)
  1691. + Fixed a bug where not all whirlpools were being considered as such,
  1692. notably during the transport board scan. (Lachesis)
  1693. + The abilities of PLAY "&file&" to play at multiple frequencies and
  1694. to parse multiple files have been restored. (Lachesis)
  1695. + As of MZX 2.84, BOARD_COLOR will now ignore the under color of any
  1696. object with a BG color of 0 that is on top of something. Worlds that
  1697. relied on this between 2.80 and 2.83 are unaffected. (Lachesis)
  1698. + Setting BIMESG to 0 will now disable Game Over's auto-centering of the
  1699. message row. (Lachesis)
  1700. + The DIVIDER counter's documentation has been updated to explain its
  1701. true purpose.
  1702. + Fixed an editor bug where canceling a world load could cause MZX to
  1703. forget the filename of the current world. (Lachesis)
  1704. + Pressing ALT+M in the world editor now edits anything with parameters,
  1705. not just Robots, Signs/Scrolls, and Sensors.
  1706. DEVELOPERS
  1707. + Source tarballs are now generated in XZ (LZMA2) format.
  1708. + Make hlp2txt utility work correctly on Windows platforms.
  1709. + Updated and repaired MSVC project for Visual Studio 2010. (MZXGiant)
  1710. + Win32 binaries are built ASLR-capable (via pefix).
  1711. + Version control was changed from SVN to Git; the repo is at:
  1712. http://github.com/ajs1984/megazeux
  1713. + The EGL backend now supports Mesa's EGL implementation on X11.
  1714. + Imported libmodplug 0.8.8.4 and rebased all patches.
  1715. + Introduced SOCKS4/4a/5 support transparently into the network layer.
  1716. (MZXGiant)
  1717. December 29, 2009 - MZX 2.83
  1718. It's been a year since the last release, due in part to my reduced free
  1719. time, and less contribution from other developers in 2009. I'd also like
  1720. to believe that 2.82b was such a good release, there was no need to rush.
  1721. There's over 30 bugs fixed this time. A few features I had to withhold for
  1722. 2.82b have been added; sample loop markers and some changes to the board
  1723. file format necessitated the bump to 2.83. Logicow's GLSL renderer has
  1724. finally made it in (various bits had to be re-written to extend
  1725. portability to other platforms).
  1726. There's a new (semi-complete) Android port this time; I hope to complete
  1727. it, and provide binaries for Android 2.0 phones, in 2.83b.
  1728. Thanks go out to the usual suspects -- Terryn, Mr_Alert, Logicow, kvance,
  1729. Lancer-X, revvy and Exophase -- for supporting development this year.
  1730. USERS
  1731. + Added support for loop markers in WAV and OGG files. The WAV loop support uses
  1732. the "smpl" chunk used by ModPlug Tracker and Wavosaur among others. Only the
  1733. first loop is used, and only forward looping is supported. The OGG loop
  1734. support uses the "LOOPSTART" and "LOOPLENGTH" tags as used by RPG Maker VX.
  1735. (Mr_Alert)
  1736. + Added OpenGL Shader Language (glsl) renderer which uses shaders to render
  1737. and scale the video. This renderer is compatible with Open GL >=2.0 and
  1738. Open GL-ES 2.0 video cards only. A variety of shader programs have been
  1739. provided and these can be customized. Performance of all MZX modes
  1740. (including SMZX) is excellent. (Logicow, ajs)
  1741. + Files will no longer be silently overwritten by save dialogs if the user
  1742. enters an existing filename without the default extension. (revvy)
  1743. + The string editor in the counter debug menu (F11) now escapes newlines
  1744. and backslashes to prevent UI corruption.
  1745. + Fix a bug where the LOAD_GAME counter handler could continue to use the
  1746. old board state after load, causing crashes. (Lancer-X)
  1747. + Fixed a bug where status counters containing numbers >6 characters would
  1748. cause MegaZeux to crash or behave strangely.
  1749. + Fix a bug in the robot editor's find/replace function that caused crashes
  1750. when replacing a string with another longer string, with a replacement at
  1751. the end of a line.
  1752. + Programmatically writing to a read-only "built-in" counter will no longer
  1753. allocate it general heap space. This prevents writes from showing up in
  1754. the F11 counter debugger that are inaccessible from robotic.
  1755. + Fix a bug that caused the SMZX mode 3 palette to become corrupted upon
  1756. entering the char editor (the editor would re-write colours 2-4 and not
  1757. restore them from backup correctly).
  1758. + Fix a bug where a robot program would never progress if the subroutine
  1759. stack was popped more times than it was pushed (via return or top).
  1760. + On UNIX platforms a desktop/menu entry is now installed by default, using
  1761. the existing icon. (Sci-freak)
  1762. + Clamp score to >= 0 if world <= 2.70. Fixes "Gates: The Puzzles" and
  1763. possibly other old titles depending on this behavior. (Exophase)
  1764. + Fullscreen modes will now automatically use your current desktop resolution
  1765. if using any hardware renderer (i.e. not the default software renderer). To
  1766. get the old behaviour back you must set fullscreen_resolution explicitly.
  1767. + Fix a bug where web and thick web would be treated the same.
  1768. + Fixed a bug in the updater where modified/replaced files would be considered
  1769. for deletion.
  1770. + Fixed a bug on case-sensitive filesystems where saving a game, world or MZM
  1771. could fail to overwrite any existing file by the same name (if matched
  1772. case insensitively).
  1773. + Do not apply masking to chars 32-127 in signs or scrolls when playing a
  1774. world. Previously, even the mask_midchars option would have no effect on
  1775. the display of signs or scrolls. This has been broken since 2.80g.
  1776. + Re-work board editor's Alt+H option to provide minimal editor (one row)
  1777. status info, rather than completely hiding the help.
  1778. + The checkres utility now checks the global robot and custom sfx tables
  1779. for missing resources.
  1780. + Chests can be added with Hi Bombs (omission noted by zzo38).
  1781. + Fix IF c?? Sprite p?? # # "label" so that a non-wildcard parameter is
  1782. respected (previously it would always just check sprite 0).
  1783. + NDS port updated from dsmzx2 release. (kvance, ajs)
  1784. + Updated SDL to 1.2.14 in Windows x86, Windows x64 and Mac OS X builds.
  1785. + Security checks are no longer applied to filenames in module or sample
  1786. playback in "listening only" modes in the editor.
  1787. + Module volume is applied immediately before playback upon switching boards.
  1788. This prevents one cycle of audio "leaking" at the wrong volume.
  1789. + Prevent crash with negative string clip where clip + offset = 0. Clip is
  1790. now correctly limited to total string length.
  1791. + Help file is now optional for MZXRun, even with CONFIG_HELPSYS=1 builds.
  1792. + Fix crash when robot editor macros expanded other macros.
  1793. + The lock icon is no longer missing from the Items THING menu (F4).
  1794. + A world to start up with can now be passed to megazeux without the
  1795. startup_file= prefix. This makes megazeux consistent with other
  1796. applications.
  1797. + SHOOT, SHOOTMISSILE, SHOOTSEEKER and SPITFIRE now end the cycle, to restore
  1798. compatibility with pre-port MZX and fix games such as Kya's Sword and
  1799. Stones & Roks II.
  1800. + Have IF [dir] PLAYER [color] [thing] [param] "label" interpret SEEK
  1801. direction wrt robot coordinates, rather than player coordinates.
  1802. Other directions are not affected.
  1803. + Zapping a label at the end of a robot program will no longer corrupt the
  1804. robot list, usually causing crashes.
  1805. + Entering lines in the robot editor with leading or trailing spaces will be
  1806. trimmed before the line is compiled.
  1807. + The single quote characters encasing S_CHARACTER parameters in the robot
  1808. editor will now use the protected (GUI) charset rather than the game one.
  1809. + Add a "system_mouse" config.txt option that allows the mouse cursor to be
  1810. replaced with the system mouse cursor, rather than being drawn by MegaZeux.
  1811. + Disallow placing player clones with SET "board_id" 127.
  1812. + Relaxed file name limit on board MOD file. The board MOD can now be as long
  1813. as the limit imposed by file dialog's input box (previously limited to 12
  1814. characters).
  1815. + Truncation of currently open input/output file names will now only occur
  1816. at MAX_PATH bytes (typically 512 characters). The previous limit was 13
  1817. characters.
  1818. + Relaxed limit of INPUT string and bottom ("*") messages from 80 characters
  1819. to ROBOT_MAX_TR (512) characters. In the case of bottom messages this can
  1820. be usefully exploited to ~200 characters.
  1821. + Progress meter will be shown for world decrypt on console platforms.
  1822. + Fix a bug where a malformatted BMP header would be written (length too
  1823. short, didn't include dummy channel in BMP palette). (Mr_Alert)
  1824. + Optimize audio locking; do file I/O outside of critical sections to
  1825. decrease stalling, particularly on platforms with slow I/O. (Mr_Alert)
  1826. + Added support for MacOS 10.6 (Snow Leopard) and removed support for 10.3.
  1827. + Loading a save game from robotic will now correctly restore intensities
  1828. to their saved values.
  1829. + Copy/pasting a block either with COPY BLOCK or the editor, where the
  1830. copy would exceed the limit on robots/signs/scrolls/sensors, will no
  1831. longer place junk at the target co-ordinates. Instead, the object's
  1832. background will be copied in isolation.
  1833. + Pasting from the clipboard, expanding a macro, or importing .txt
  1834. or .bc files that would cause a robot to exceed the 64k limit now has
  1835. the operation ignored at the point it exceeds the limit, rather than
  1836. adding an unlimited number of unrecognized lines.
  1837. + Fix a bug with the pc_speaker_on option which could cause the audio
  1838. thread to block indefinitely when PC speaker audio was disabled.
  1839. DEVELOPERS
  1840. + MZXRun compilation can now be disabled. Compilation of pre-2.82b style
  1841. non-modular builds requires `--disable-modular --disable-mzxrun'.
  1842. + Disabling SDL can now be done with --disable-sdl and the resulting
  1843. configuration will automatically disable any SDL-dependent components.
  1844. This is useless to anybody except developers doing new ports.
  1845. + Game directory, utility directory and resource directories can now
  1846. be specified and will be respected on "make install". (Sci-freak, ajs)
  1847. + Added experimental port to Android. See arch/android/README for more
  1848. information.
  1849. + Ported opengl1 and opengl2 renderers to OpenGL ES 1.x and glsl renderer
  1850. to OpenGL ES 2.0, used increasingly by mobile devices.
  1851. + Removed SDL dependency from NDS port. It only used it for timing and
  1852. stuffed events.
  1853. + On Windows platforms, binaries are processed with the `pefix' in-tree
  1854. tool to eliminate data section differences in programs with identical
  1855. texts. This minimizes the amount of content required to be sent for
  1856. updates.
  1857. + Updated Wii port: improved audio and video support, added USB mouse
  1858. support, numerous optimizations and improved file selector. (Mr_Alert)
  1859. December 29, 2008 - MZX 2.82b
  1860. This release contains plenty of important bug fixes, ranging from regressions
  1861. such as the broken command-line editor macro expansion to third party bugs
  1862. like the Windows "directx" SDL video driver breakage.
  1863. There are also some new ports and features. MegaZeux now runs on the Wii (port
  1864. by Mr_Alert) and AmigaOS 4.x (port by myself and Spot from os4depot). The
  1865. Windows x64 port has matured immensely and can now be considered stable.
  1866. MacOS X builds now have clipboard support. The hardware stretching renderers
  1867. now have a couple of fixed aspect ratio modes.
  1868. The biggest feature of this release is the introduction of a portable network
  1869. layer, which is currently being tested by the new built-in updater (F7/U).
  1870. Internally, MegaZeux is now modularized and builds as several DLL and EXE
  1871. files, which should make redesigning parts like the help system and editor
  1872. a little easier, as well as allowing us to ship a "mzxrun" executable for
  1873. the first time since 2.69c. This "mzxrun" executable is now used by a
  1874. majority of the console ports.
  1875. Contributions from Revvy, Mr_Alert, Terryn and Exophase have helped make
  1876. this another solid release.
  1877. USERS
  1878. + Writing to $str.length (which previously did undefined things) will now
  1879. truncate or enlarge the string to the size specified.
  1880. + Removed filename size limit for FWRITE_MODIFY and FWRITE_APPEND. (Revvy)
  1881. + Added support to the checkres tool to check worlds in non-local
  1882. directories. (Revvy)
  1883. + Fix an old bug with saving games and worlds from Robotic where a board could
  1884. be prematurely "optimized", renumbering robot IDs within the same cycle. For
  1885. commands like DIE this could cause unpredictable behaviour or simply crashes
  1886. (if invoked in the same cycle). As a special case, end the cycle if either
  1887. of these SET specials are used.
  1888. + Mistaken or malicious file I/O such as set "$test" to "fread(-1>>1)" will
  1889. no longer crash MegaZeux. The read size will be truncated to a contextual
  1890. maximum for the current file.
  1891. + Fixed a crash using "fwrite0" in conjunction with an empty string.
  1892. + Fixed a bug where checking sprite_collisions on a disabled target sprite
  1893. would unconditionally trigger (regardless of whether a collision was
  1894. present or not).
  1895. + Un-group the handling of the KEY and KEYn counters so that different
  1896. compatibility checks can be applied to either counter. Fixes
  1897. "Bocco Chronicles 1" and probably several other titles.
  1898. + Fix a crash when using RIDn or ROBOT_ID_n in the same cycle as DIE for
  1899. another robot positioned earlier in the board scan.
  1900. + Fix poor sanity checks on BOARD_ID counter writes. Illegal character IDs such
  1901. as -1 can no longer be used to bypass the check (causing subsequent crashes).
  1902. + Windows builds now use a patched version of SDL 1.2.13 containing a fix
  1903. for the directx+F10 issue.
  1904. + Fix a bug where one robot could send another robot to "#return", with an
  1905. address outside its program. In such cases, the robot will now terminate.
  1906. + A "mzxrun" binary is now shipped alongside the editor-capable MZX binary.
  1907. + Fix TIME/TIMERESET overflows with very large values. Board timeout is now
  1908. programmatically limited to 32767, which is consistent with the Board Info
  1909. control.
  1910. + Clamp CHAR_X/CHAR_Y properly so that negative numbers can no longer be used
  1911. to corrupt the editor charset and potentially other process memory.
  1912. + Fix recent breakage of SHIFT+F{1,2,3,4} so that the percentage time spent
  1913. displaying the original character and the '!' are equal.
  1914. + Remove some bogus handling of lines containing "only" ';', ',' or ' '.
  1915. + Honor user's robot character selection if they are holding shift when
  1916. pressing return or space (would previously always return char 247).
  1917. + Backspacing a line and then expanding a macro no longer restores the
  1918. original line contents immediately after the expansion.
  1919. + MacOS 10.x clipboard support (via Cocoa Pasteboard). Alt+Ins can be entered
  1920. with Fn+Alt+Numpad0 on a Macbook or Powerbook keyboard.
  1921. + Rendering glitches are no longer encountered when using the ' S_CHARACTER.
  1922. + Fix robot editor glitches where the game charset SPACE would be used in
  1923. places where the protected UI charset should be used instead.
  1924. + The introductory help message is displayed if the load dialog is cancelled
  1925. prior to loading a game. Hopefully the screen is now never totally blank.
  1926. + The F7/F8 cheats can now be used freely in MZXRun (in MegaZeux proper they
  1927. remain usable only in editor tests).
  1928. + Saving to a directory above the MegaZeux startup directory, then attempting
  1929. to save to this location again, will no longer crash MegaZeux. Instead, the
  1930. parent directory will be changed into before the dialog is displayed.
  1931. + Fixed numerous crash bugs with the scroll editor; it should be relatively
  1932. usable now.
  1933. + Writing to $str+0 is no longer interpreted in the same way as a plain
  1934. write to $str. Instead, it behaves like writes to non-zero offsets (as more
  1935. of a paste than a replace).
  1936. + Display current X,Y position of robot in the robot editor status bar.
  1937. + Fix directory rename so that it no longer displays garbage and/or crashes
  1938. MegaZeux (Alt+R to rename a directory in any file picker).
  1939. + In the robot editor, lines can now be split at a midpoint with enter and
  1940. two consecutive lines merged together with backspace. (Exophase)
  1941. + Fix use of status counter 6 and display of status counters in general,
  1942. which has been broken since 2.80.
  1943. + Fix swapping to encrypted worlds if initially the user decides to not
  1944. decrypt the world. Previously, this would either crash, or loop forever.
  1945. - Removed the legacy "force_resolution" option which was replaced long ago
  1946. by the more accurate "fullscreen_resolution" option.
  1947. + When using the OpenGL or overlay renderers, in either windowed or
  1948. fullscreen mode, the aspect ratio can now be preserved as either 4:3
  1949. (most similar to DOS) or 64:35 (most similar to the port). The display
  1950. will be letterboxed or margins applied as appropriate. See the
  1951. "video_ratio" configuration option for more information.
  1952. + Fixed a bug on some systems where numlock could not be used as a key,
  1953. only as a flag. The numlock "key" is now masked out of "key_code" and
  1954. similar; hopefully this won't break any games.
  1955. + Restored the meter widget from the old DOS MZX for use with the world
  1956. loader and saver routines. This reassures users, especially on consoles,
  1957. where loading a world can take a long time. (Mr_Alert)
  1958. + On Windows, directx.bat now passes %cd% through to `start' so that features
  1959. such as the updater continue to work. (MZXGiant)
  1960. + Pasting into a string with set "$str+N" with an N > str.length will no
  1961. longer crash MZX.
  1962. + "Exit to DOS" is now "Exit MegaZeux" to reflect the multi-platform nature
  1963. of the program.
  1964. + Setting a substring size to zero with $string#0 will no longer return the
  1965. whole string; it will instead return the empty string.
  1966. + Accessing a substring with an offset >= $string.length will no longer return
  1967. the last character from the string; it will instead return the empty string.
  1968. + Writing beyond MAX_STRING_LEN (1MB) or using negative offsets (which has the
  1969. same effect) no longer crashes. Instead, the write is ignored.
  1970. + Fix crash when pasting to and from the same string, specifically in
  1971. conjunction with $str+offset.
  1972. + Fix bug where altering "num" in a GO DIR [num] or WAIT [num] while in
  1973. process could cause the robot to stall forever. The robot will now only
  1974. wait for either the cycles it has waited already, or the current "num"
  1975. at that cycle.
  1976. DEVELOPERS
  1977. + Ported to OpenSolaris. You need to install `SUNWxorg-headers' if you want
  1978. X11 clipboard support.
  1979. + Remove dependency on SDL_image on non-win32 platforms when enabling
  1980. the icon branding feature (see pngops.c).
  1981. + Ported to AmigaOS. You need to install the clib2 version of libSDL and
  1982. miniGL, and the build system assumes you are using a cross compiler.
  1983. + Added experimental port to the Wii. See arch/wii/README for more
  1984. information. (Mr_Alert)
  1985. + get_path() in util.c now returns <0 for failure, or the length of the path
  1986. for the given file. (Revvy)
  1987. + Add a valgrind.supp file to suppress bugs in third party libraries when
  1988. valgrinding MegaZeux.
  1989. + Cleaned up all the ports and documented making new ports. The platforms
  1990. "linux", "solaris" and "obsd" are now called "unix" and the "linux-static"
  1991. platform is now "unix-devel" and available on all UNIX derivatives/clones.
  1992. + Add a special hack to enable linking with --as-needed for DT_NEEDED link
  1993. optimization for GNU ld platforms.
  1994. + Updated MSVC projects. Fixed all warnings emitted by MSVC 2008, and
  1995. implemented icon support with existing mingw resource files.
  1996. + Use the GNU ld "debuglink" feature on all platforms to enable shipping of
  1997. a side-by-side symbol package. Optimized release builds can now be
  1998. debugged with minimal user effort.
  1999. - Removed HOST_CC feature for cross compilation; since the utilities now
  2000. intimately depend on the MZX runtime, they must be built with the same
  2001. compiler.
  2002. + MegaZeux now provides the option for "modular" linkage, factoring out the
  2003. "core", "editor" and "network" features to shared objects that other
  2004. binaries can link against. This feature works on the unix, mingw,
  2005. amiga and darwin ports.
  2006. + Added RPM .spec file. Capable of building (at least) Fedora 10 RPMs.
  2007. June 10, 2008 - MZX 2.82
  2008. Despite the increase in minor version, this release mostly targets bug and
  2009. regression fixes. However, there ARE some additional new features, such as
  2010. the introduction of the LOAD_MENU and mouse pixel counters, and refinement
  2011. of the {FREAD,FWRITE}_COUNTER counter. (There are several other smaller
  2012. features that are documented in the changelog.)
  2013. SAVs from older worlds (requiring compatibility hacks) no longer fail to
  2014. play (Darkness, etc. are affected). We've also done a good bit to fix
  2015. compatibility with 2.70 and older.
  2016. A new tool, "checkres", is now routinely packaged, allowing you to check
  2017. your games for missing resource files (PALs, CHRs, etc.) before passing
  2018. them on to other people. This should be especially handy for DoZ game
  2019. submissions.
  2020. The Nintendo DS port (Kevin Vance's "DsMZX") has been merged into this
  2021. release. I'll provide binaries for GP2X, PSP and NDS this time, but I
  2022. can't guarantee they'll work.
  2023. Both of the snags from the last DoZ have been addressed -- the help system
  2024. should no longer crash and the Block Action crashes should be reduced in
  2025. frequency. However, there are still issues with pasting in the robot editor
  2026. that remain unfixed (they're just really hard to reproduce). With your bug
  2027. reports, I look forward to fixing this.
  2028. As usual, thanks go out to Revvy and Mr_Alert for their contributions to
  2029. the bug-fixing effort, and to Terryn for his unwavering dedication to
  2030. creating and organising bug reports, and for testing our bug fixes.
  2031. USERS
  2032. + Fixed and improved quality of the half-width renderer for the GP2X port
  2033. (Mr_Alert).
  2034. + Have the numpad work correctly when numlock is disabled. Keys are no longer
  2035. ignored by the MZX editor, and games should recognize them as before.
  2036. + Added a tool, "checkres", which extracts all resources from a MegaZeux
  2037. world or board file and lists them (or lists only those which are not
  2038. found in the game directory. ZIP files are also supported (to a more
  2039. limited extent) (ajs & Revvy, ideas from Exophase & Terryn).
  2040. + Removed the bogus "F1 for Help" option from error dialogs, and finally
  2041. get rid of the "** BETA **" banner on title boards in play mode.
  2042. + Obsolete support for the AMS, DBM, DMF, MDL, MT2, PSM, PTM and UMX module
  2043. formats. As noted for several versions in the help file, these are not
  2044. loadable by MikMod. It is extremely unlikely any game uses these obscure
  2045. formats, but denying their use is now enforced (at a robotic level).
  2046. + Fix crash when writing to a MZX string at an illegal offset (< 0).
  2047. + Fix returning from a subroutine invoked by a jump from a MZX text box
  2048. class command so that it no longer skips the next impending line (after
  2049. the text box).
  2050. + Assemble single non-alphanum/punctuation characters as bytecode CHARACTER
  2051. instead of bytecode STRING. Fixes bogus auto-quoting for commands like
  2052. SCROLL CHAR (Revvy).
  2053. + Switch the Win32 package back to using the "windib" SDL video driver,
  2054. instead of the "directx" SDL video driver. The windib.bat file has been
  2055. replaced with directx.bat, which has opposing semantics.
  2056. + SAM/GDMs with converted WAV/S3M counterparts of zero length will be
  2057. automatically re-converted. This hack can be used to procedurally
  2058. regenerate WAV files from SAMs, or transparently work around on-disk
  2059. corruption.
  2060. + Strings are now limited to a maximum length of 1M. I'm open to suggestions
  2061. over a better limit, but there must be a limit (set "$string.X" notation
  2062. grows a string arbitrarily, so robotic can crash MZX when a string is resized
  2063. beyond a reasonable limit).
  2064. + Strings, when grown, will fill gaps with ' ' instead of garbage. This can be
  2065. useful when the string grows after using the set "$string.X" notation; the
  2066. rest of the string is no longer garbage, allowing the debugger to be used.
  2067. + A robot that does a "put c?? Thing p?? [dir] player" and overwrites itself
  2068. will no longer leak commands. Instead, if the robot overwrites itself, its
  2069. program will end.
  2070. + Fix message edges always showing up black, instead of whatever color 0
  2071. is. (Revvy)
  2072. + Change starting/max health and lives minimum to 1 instead of 0. (Revvy)
  2073. + Some help system (F1) bugs have been fixed, hopefully mitigating some of
  2074. the crashes people have been seeing.
  2075. + Fix a bug on Linux where fclose() on a robot-opened file could, on world
  2076. reload, occassionally crash (due to a stale handle). Fixes loading Toayarin
  2077. saves multiple times in a row.
  2078. + The new option "gl_vsync" has been added to allow the SDL "flip on vsync"
  2079. in the OpenGL renderers to be forcibly enabled or disabled. This fixes a
  2080. problem where speed 1 would only be as fast as the video refresh rate.
  2081. + Setting the music volume to 0 (when using the ModPlug engine) now ensures
  2082. that no music is audible. Previously, setting the volume to 0 would be
  2083. equivalent to setting the volume to 1, which was still audible.
  2084. + Upon exiting the initial load screen, and not entering the editor, the
  2085. screen is now updated. This fixes rendering glitches in the MZX game
  2086. window when overlapping the window with another, at the slight expense
  2087. of CPU time.
  2088. + If loading a save game from the title screen (or when no world has been
  2089. loaded) do not send JUSTENTERED to all robots. This restores compatibility
  2090. with MZX 2.70 and is consistent with loading a save from another board.
  2091. + Counters with 10 digits and a negative sign are no longer truncated in
  2092. the debug menu.
  2093. + Correctly clamp (rather than truncate) the value passed through to a
  2094. SET COLOR. Restores compatibility with 2.70, and fixes Xenogenesis.
  2095. + Improve clipboard copy behaviour on Linux. Some actions are still
  2096. mysteriously broken.
  2097. + Fix replacing with a blank string in conjunction with the replace all
  2098. Ctrl+F action in the robot editor. The cursor can now no longer become
  2099. negative, fixing numerous possible crashes on search/replace.
  2100. + Fix loading the intrinsic SMZX palette when switching to SMZX modes
  2101. from a game not in the same directory as the "smzx.pal" file.
  2102. + Reloading a world that requires switching between SMZX and non-SMZX modes
  2103. will now respect the world's intrinsic palette on the title screen. Fixes
  2104. problems loading non-SMZX games after having an SMZX game loaded.
  2105. + Clamp array offsets on boards. Some older MZX worlds are corrupted and
  2106. have the endgame_{x,y} coordinates outside of the limits of the endgame
  2107. board. Fixes "Fourth Power".
  2108. + Where possible, version all counters that the port understands. This
  2109. ensures that in the unlikely case that a game made with an older version
  2110. of MZX (actually, with an older world magic) uses a counter that did not
  2111. exist in that game's era, the port will no longer try to interpret it.
  2112. Previously, only rid? and key? were versioned.
  2113. + SAV files will now be stamped with the world magic of the world they
  2114. were loaded from. This allows compatibility hacks to apply to SAV files
  2115. as they would to worlds. (ajs, Terryn, Mr_Alert)
  2116. + Add LOAD_MENU counter like ENTER_MENU, F2_MENU et al. to allow control
  2117. (from robotic) over whether the LOAD_MENU can be brought up.
  2118. + Have FREAD_COUNTER and FWRITE_COUNTER read in a DOS dword (32bit) instead
  2119. of a DOS word (16bit). This allows modern post-port MZX counters to be
  2120. fully represented in files. Compatibility with older worlds is preserved.
  2121. + Add a new config option "board_editor_hide_help" which changes the default
  2122. hide setting of the help text on the primary board editor.
  2123. + Numerous fixes for bugs found by valgrind. (Nightwatch)
  2124. + Icon support is now fixed and works on all platforms. On Windows, the
  2125. icon cannot currently be changed (it is loaded from the EXE's resource
  2126. section). Use ResHacker if you really want to change it.
  2127. + Fixed a bug where either LOAD_ROBOTn or LOAD_BCn (where n was equal to
  2128. ROBOT_ID) would alter the robot's line number rather than completely restart
  2129. it. Due to complexities in robot context, this lead to the first line being
  2130. skipped.
  2131. + Added a new tool "downver" which supports drag-and-drop downgrading of
  2132. a world or board from the version of MZX it is packaged with to the
  2133. previous version of MZX. This tool may be unsafe to use -- be careful.
  2134. + Fixed a bug in the robotic assembler which would occassionally emit corrupt
  2135. programs with SAVE_ROBOT. These programs, if loaded by LOAD_ROBOT could
  2136. cause a crash.
  2137. + Added a config.txt (or command line) option "startup_editor" which, if set
  2138. to a non-zero value, will start MegaZeux in the editor with a blank world.
  2139. + Fix a bug where a robot's WALK processing, on entering a transporter, could
  2140. allow subsequent commands (such as GO) to corrupt the board. WALK now ends
  2141. the cycle in the special case that a robot goes through a transporter.
  2142. + You can now directly import bytecode into the robot editor via the Alt+I
  2143. menu. The extension for the bytecode file must .bc for it to be loaded.
  2144. + A game loading SAVs via the LOAD_GAME counter will no longer crash MZX
  2145. if the SAV attempted is from an incompatible version of MZX, or in any
  2146. way corrupted.
  2147. + Fix a crash when auto-completing lines that were greater than 241 characters
  2148. in length after completion.
  2149. + Added mouse pixel counters MOUSEPX and MOUSEPY. (Mr_Alert)
  2150. + Commenting a line of maximum length (241 characters) can no longer grow the
  2151. length of the line beyond this limit.
  2152. + Fixed a bug causing the software renderer to fail to center when using a
  2153. boxed fullscreen resolution. Also fixes a bug where the PSP platform would
  2154. ignore an override of the force_bpp option. (Mr_Alert)
  2155. + Fixed a bug causing macros loaded from config.txt to be expanded
  2156. incorrectly. Relatedly, fixed a bug where #<string> in the robot exitor
  2157. would "disappear" on entry, if there was no correspondingly named macro.
  2158. DEVELOPERS
  2159. + Don't initialize the SDL audio subsystem if audio is permanently disabled
  2160. with --disable-audio.
  2161. + Add fixes for OpenBSD to allow PNG screenshots and X11 clipboard support to
  2162. work. Tested with OpenBSD 4.2 and GCC 3.3.5.
  2163. + Updated Win32 builds with SDL 1.2.13.
  2164. + Dependencies are now correctly tracked in the build system. Modifying a
  2165. header will automatically regenerate the minimal set of object files that
  2166. depend on this header.
  2167. + Out of the box MSVC support. The file "msvc.zip" in the root of the source
  2168. package now provides a Visual Studio 2005 project and pre-compiled
  2169. dependencies. There may be stability issues with the resulting binary.
  2170. See also the documentation in arch/msvc/README.txt.
  2171. + The Nintendo DS port (a.k.a. 'dsmzx') has been merged. This is the most
  2172. exotic port thus far, and adds features such as player focus (on the second
  2173. display). Sound isn't working yet, and large games still won't play (due to
  2174. lack of memory). See docs/nds.txt for more information. (kvance)
  2175. + Many stack-heavy functions have been de-bloated and allocate large storage
  2176. on the heap (if performance is not critical). This helps out platforms
  2177. with a small, fixed stack size (such as NDS).
  2178. + The built-in help system can now be disabled for embedded platforms.
  2179. The startup check for the help file will not be performed if the help
  2180. system is disabled, and so this file can be omitted from distributions.
  2181. + The package.sh script now supports OS X, PSP, GP2X and NDS packaging.
  2182. + The OS X port no longer requires Xcode. The new build system and package.sh
  2183. can create a universal Application and corresponding DMG file. The new
  2184. infrastructure deprecates the old macosx.zip method.
  2185. + Most of the internal dependency on SDL has been removed. Therefore, MZX
  2186. can be built (but not yet work) without SDL present. The only remaining
  2187. component to convert is MikMod, but this can be disabled, so port authors
  2188. can start using the feature right away (see config.sh). (Mr_Alert)
  2189. December 8, 2007 - MZX 2.81h
  2190. Another bugfix release with a couple of new features, in time for the
  2191. Winter 2007 Dualstream Day of Zeux. The major new features of this release
  2192. are automatic module renaming in the editor, PNG screenshots and many
  2193. improvements to MZX on embedded platforms (like PSP and DS).
  2194. MegaZeux can now be compiled in MZXRun mode (like the old DOS
  2195. implementation) and by disabling features such as unnecessary renderers
  2196. and audio support, can be made approximately 70% smaller.
  2197. Thanks again to Terryn for relentlessly tracking down many serious bugs;
  2198. we've tried to fix all the issues that have crept up in the last 5 months.
  2199. Thanks too to Exophase, Mr_Alert and Wervyn for contributing to this
  2200. release; your time and help is invaluable.
  2201. Happy Holidays!
  2202. USERS
  2203. + Added a more lenient WAV file loader so that ModPlug isn't relied on as much
  2204. to play malformed WAV files (mostly old SAM conversions) (Mr_Alert).
  2205. + Added SCORE and mzx_speed to the counter debugger (Mr_Alert, ajs).
  2206. + Added a 16-bit software renderer and a half-width renderer for the GP2X port
  2207. (Mr_Alert).
  2208. + Made the mouse cursor in the "opengl2" renderer look more like the mouse
  2209. cursor in the other renderers (Mr_Alert).
  2210. + Setting vlayer_size, vlayer_width or vlayer_height to values less than or
  2211. equal to zero would crash MegaZeux. Limit the smallest vlayer size to 1x1.
  2212. + Setting vlayer_width or vlayer_height to a value larger than vlayer_size
  2213. would crash MegaZeux. Limit the largest size of either dimension to a
  2214. maximum of vlayer_size.
  2215. + If selecting a module with a non 8.3 filename, MZX will now ask you if you
  2216. want to rename it to 8.3, and do so in an intelligent way. This means that
  2217. music can be selected in the editor and correctly saved (Wervyn).
  2218. + The OpenBSD compiler detected some serious string bugs in MegaZeux. These
  2219. have now been fixed and should eliminate some more potential crashes.
  2220. + Fixed a bug where an ENERGIZER item or use of the INVINCO counter would
  2221. cause the original player color to be corrupted at the end of the colour
  2222. blitz.
  2223. + Fixed a long-standing bug where set "$string" to "FWRITEn" would be
  2224. cheerfully ignored.
  2225. + Fixed a bug where a corrupt robot list could crash MegaZeux (e.g. the
  2226. list from Star Quest from DoZ'02).
  2227. + FEATURE: Screenshots are now saved in a palettized PNG file format. For
  2228. platforms without libpng, PNG support can be compiled out, and BMP will
  2229. be used instead.
  2230. + Fixed a bug where changing boards in the editor could sometimes corrupt
  2231. memory, later causing a crash (either testing or coming out of testing a
  2232. board).
  2233. + Fixed a sensor bug that happens when a sensor can't go anywhere it is told
  2234. to, and the player is on it (Exophase).
  2235. + Fixed using ABORT LOOP in some situations. Using it outside of a loop
  2236. still has undefined semantics and this has been documented in the help
  2237. file (Exophase).
  2238. + Setting a board option below its numeric limit is no longer
  2239. possible (Exophase).
  2240. + Fixed problems with going over Robot name character limits using the .@
  2241. command (Exophase).
  2242. + Fixed problems with LOAD_ROBOT freezing on a robot with no newline at the
  2243. end of the file.
  2244. + Fixed a problem with "Replace All" in the robotic editor, that could
  2245. sometimes cause a line to exceed 240 characters and crash the editor.
  2246. + Fixed a problem with "Replace" in the robotic editor, which could cause a
  2247. line to temporarily become 241 characters and then truncate silently to
  2248. 240 characters.
  2249. + Fix a bug that caused the original game palette to be lost when testing
  2250. a game in the editor that switched between Regular/SMZX1 and SMZX2/3 modes.
  2251. MegaZeux should now try much harder to preserve the user palette,
  2252. regardless of game edits.
  2253. + Fix a bug causing board switching to not correctly alter the x,y viewport
  2254. scroll leading to the display of raw memory and potentially crashes, with
  2255. differently sized boards.
  2256. + Fixed stack corruption caused by SCROLL CHAR SOUTH, detected by Ubuntu's
  2257. SSP (Stack Smashing Protection) enabled binary.
  2258. DEVELOPERS
  2259. + Made the build system less verbose by default (like Linux). This should help
  2260. make warnings (due to coding errors) easier to identify. If you don't like
  2261. the new syntax, or need the command debug, you can build with "make V=1".
  2262. + Updated Win32 builds with SDL 1.2.12.
  2263. + Rewrote the build system to not use recursive Makefiles. Variable propagation
  2264. was starting to be a problem, and recursive designs are generally discouraged.
  2265. + Refactored the graphics rendering code to modularize the renderers and reduce
  2266. code duplication (Mr_Alert).
  2267. + GDM2S3M switched over to use inttypes.h instead of home-brew types.
  2268. + MegaZeux now compiles on OpenBSD (and probably other BSDs).
  2269. + Made all unnecessary global symbols static. This should improve compiler
  2270. optimisations and correctness (Mr_Alert, ajs).
  2271. + Fix compilation of MegaZeux against SDL 1.3 SVN. However, this SDL version
  2272. is still in development, and MegaZeux does not work correctly when compiled
  2273. against it.
  2274. + MegaZeux now builds with the experimental MINGW-x64 branch, enabling x64
  2275. binaries for Windows.
  2276. + MegaZeux now builds with MSVC if you apply the patch from contrib/,
  2277. megazeux-r326-replace-c99-variable-arrays-with-malloc-free.diff
  2278. This patch is required for MSVC because it makes non-compiler-specific
  2279. changes (which involve converting from C99 variable length arrays to
  2280. malloc/free) which are slower and should not be used with competent
  2281. C99 compilers like GCC.
  2282. Microsoft Visual C++ Express Edition 2005 was used to build libogg,
  2283. libvorbis, libsdl and MegaZeux itself. Only 32bit builds were tested.
  2284. + MegaZeux now has size optimisations which can reduce binary size when
  2285. features are disabled. For example, all renderers can now be disabled,
  2286. and when module engines are disabled, audio will not export any symbols.
  2287. + The entire audio subsystem can now be disabled. This further reduces
  2288. binary size on embedded platforms. However, SFX editing still remains
  2289. enabled (though useless) until editor modularity is implemented.
  2290. + The PSP port is now officially supported, and compiles out of the box.
  2291. See docs/psp.txt.
  2292. + Renamed macos platform "darwin", to reflect its true nature (use Xcode to
  2293. build as a real Application, instead of just a UNIX binary). Also fixed
  2294. some bogosities with robo_ed's X11 includes on OS 10.5.
  2295. + The editor can now be disabled, a la MZXRUN from the old DOS versions.
  2296. Configure with --disable-editor to shrink MZX by about 150k.
  2297. + MegaZeux can now be compiled with size optimisations (--optimize-size to
  2298. config.sh) for a 20% space saving.
  2299. + MegaZeux's core now builds with -W (basically all GCC warnings) plus
  2300. some additional warnings that aren't switched on by this flag. All
  2301. warnings have been fixed.
  2302. July 4, 2007 - MZX 2.81g
  2303. Again, no significant new features have been introduced in this release.
  2304. However, there have been many essential bugfixes, including improved
  2305. compatibility with games made in older versions of MegaZeux.
  2306. Additionally, improvements have been made to the opengl2 and overlay2
  2307. renderers, improving performance for most users. A port of MegaZeux to the
  2308. GP2X console has been added. MegaZeux has been backported to C (rather than
  2309. C++) and can operate correctly on a CPU without a floating-point unit.
  2310. Particular thanks go out to Mr_Alert (for his valuable bug fixes),
  2311. Lancer-X (for fixing what I was too lazy to) and Terryn (for finding many
  2312. annoying bugs that nobody else could).
  2313. USERS
  2314. + Fixed a bug in the audio code. The linear resampler was not taking volume
  2315. into account, which broke changing the volume of samples (WAV and Vorbis)
  2316. which cannot natively alter their volumes.
  2317. + Fixed a regression in the overlay editor caused by the new editor space
  2318. semantics.
  2319. + Screenshots are now rendered to a separate texture using the 8bit software
  2320. renderer. This means that the hardware scalers will not affect the quality
  2321. of the screenshot. It also fixes a bug when using opengl2, which would dump
  2322. only a white screen.
  2323. + Temporarily reverted a bugfix that broke Zeux IV - Forest of Ruin. I'm not
  2324. dropping the bugfix, I just can't immediately see what's wrong.
  2325. + Fixed a bug where setting the viewport to negative coordinates would crash
  2326. MegaZeux. There was code to handle this, but it was wrong.
  2327. + Fixed a bug that permitted the mouse y coordinate to be warped to row 25,
  2328. which does not exist. This bug caused some of the renderers to crash, and
  2329. the software renderer to draw in memory it did not possess.
  2330. + Fixed a bug where games made before 2.68 could have available the "key?"
  2331. counters, unsupported in that version. This caused collisions with counters
  2332. with the key? name used with inc/dec/mul/div/mod. Fixes "Doom Keep".
  2333. + Imported libmodplug 0.8.4, which adds MIDI/PAT and ABC format support,
  2334. fixes some bugs in the mixer, and should build on more platforms.
  2335. NOTE: MID files currently cannot be selected in the editor, because they
  2336. do not play correctly.
  2337. + Improved the performance of the "opengl2" renderer, by removing the
  2338. convoluted 3D drawing commands and replacing them with 2D ones. Reduced the
  2339. quad count by using an intermediary 80x25 texture. MegaZeux now depends on
  2340. fewer GL features (LogiCow).
  2341. + Introduced an "fsafegets" to work around problems where robots exported by
  2342. a Windows version of MegaZeux would not load on other platforms. This was
  2343. due to differing EOL style and broke at least one game (Termination).
  2344. + Renamed "force_resolution" to "fullscreen_resolution" to better match its
  2345. semantics with the scaling renderers. The new name is less accurate for
  2346. software render modes, but most people using software will not want to
  2347. change it from the default anyway.
  2348. + Fix a bug where the variable-length string allocator would prematurely
  2349. bail out when reading a string (of indeterminate length) from a file with
  2350. the set "$var" to "FREAD" syntax.
  2351. + Fix a bug where more than 256 errors would crash the robotic checker.
  2352. + Improved performance of the overlay2 (faster) renderer (Mr_Alert).
  2353. + Make the transparent overlay "really" transparent when used in conjunction
  2354. with sprites (Mr_Alert).
  2355. + Fixed a bug reported by Mr_Alert where MZX would not handle short,
  2356. non-looping mods in the editor. The editor would try to destroy the mod
  2357. again, even after the callback had destroyed it (premature termination).
  2358. + Fixed a bug with SWAP WORLD where file translation would occur but the
  2359. result would mistakenly not be used. This broke some uses of SWAP WORLD
  2360. on non-Windows platforms (Mr_Alert).
  2361. + Fixed a bug where using JUMP to MOD ORDER right after switching boards
  2362. would fail due to the board music not having been loaded yet (Mr_Alert).
  2363. + Fixed a bug where games made before 2.80 would inadvertently trigger
  2364. "PLAYERHURT" due to using the SET command to reduce the amount of
  2365. health (Mr_Alert).
  2366. + Fixed a bug where player clones where generated when entering transports
  2367. during FREEZETIME (Lancer-X).
  2368. + Debug menu is now eradicated on leaving the editor (Lancer-X).
  2369. + Debug menu is now properly painted over when the board size is < the editor
  2370. viewport. Fixes various graphical glitches (Lancer-X).
  2371. + Fix a crash bug when playing older MZX games from read-only media (such as a
  2372. CD) or where file-system permissions prohibited creating SAM conversions
  2373. (Lancer-X).
  2374. + Fixed bug where certain file formats would not be automatically converted
  2375. if their extensions were mixed or upper case (e.g. OGG/SAM/GDM).
  2376. + Restored functionality of "if lasttouched DIR" which has been broken since
  2377. MZX 2.02.
  2378. + Fixed a bug where attempting to decrypt a read-only world file would result
  2379. in a crash (Mr_Alert).
  2380. + Fixed several bugs where an error loading a world file would result in
  2381. crashes in several different situations (Mr_Alert).
  2382. + Fixed a bug where a robot using the BECOME command to change into a
  2383. PushableRobot or vice versa would freeze (Mr_Alert).
  2384. + Fixed memory leaks in the file selection dialog, the counter debugger, the
  2385. collision list and the global robot (Mr_Alert).
  2386. + Updated counter list (see docs/counter_list.txt in the source) (Terryn).
  2387. + Fixed a bug where pressing escape when editing the effect of a ring or potion
  2388. would result in an invalid parameter which would later cause a crash if
  2389. edited again (Mr_Alert).
  2390. + Fixed a bug in which robot-driven text boxes using option commands (the ?
  2391. command) could overflow by two characters and spill over the side (Lancer-X).
  2392. + Fixed the list box searching mechanism (used in the file manager and F11
  2393. counter list) and made the existing function more understandable. (Lancer-X).
  2394. + Fixed a bug in which the message string given to the 'ask' command could
  2395. spill over. Now, the 'ask' dialog resizes if possible, and clips when no
  2396. further resizing can be performed (Lancer-X).
  2397. + Clipped the 'input string' message properly, to prevent similar overflow.
  2398. + Fixed a bug with the EXPLODE, DIE, DIE ITEM and BECOME commands when used
  2399. with the global robot (would clear the global robot, eventually corrupting
  2400. memory when in the editor). Presumably, these commands are bogus for the
  2401. global robot, and have been disabled.
  2402. DEVELOPERS
  2403. + Rewrote config.sh to use POSIX sh compatible functions, so that there is
  2404. no dependency on the BASH interpreter. Surprisingly, some distributions
  2405. still don't enable BASH by default (using csh, ash or zsh instead).
  2406. + Ported most of MegaZeux back to C. This should further reduce the platform
  2407. requirements for running MZX, and enable marginally faster compilation.
  2408. + Enabled GCC's -W flag for even more warnings, switching off unused
  2409. parameter warnings (useful for delegates). Mostly typing fixes, but it
  2410. found a bug in string handling.
  2411. + No longer suppress char-subscript warnings, and fix up any remaining
  2412. abuses in the tree.
  2413. + Add manpages for 'megazeux' and other binaries for the Debian packages.
  2414. Comply with the Debian packaging guidelines by providing a copyright
  2415. note, listing significant contributors to MegaZeux.
  2416. + Added support to the build system for supporting icons modularly.
  2417. See contrib/icons/README for more information.
  2418. + The debug build (make DEBUG=1) now enables GCC 4.x's stack protector. This
  2419. breaks compatibility with GCC 3.x, but you can just remove the flag if you
  2420. don't want to use it (the stack protector will improve stack corruption
  2421. detection and provide more usable debug traces).
  2422. + Custom Random() implementation to provide a more uniform number
  2423. distribution. Factored out for future (better) implementations.
  2424. + The audio backend (audio.cpp) has been modularised to support the use of
  2425. mikmod instead of modplug. This should enable ports of MZX to platforms
  2426. without an FPU, and improve performance on platforms with weak FPUs.
  2427. + Added GP2X port to config.sh, based on work done by Simon Parzer.
  2428. January 30, 2007 - MZX 2.81f
  2429. This release is mostly about the new renderers, the first of which was
  2430. introduced in the previous version. There's also a few important bugfixes,
  2431. and a lot of internal tidy-up work. I'd like to thank Mr_Alert, Quantum P.
  2432. and LogiCow for contributing to this release. Thanks guys.
  2433. USERS
  2434. + Renamed the force_32bpp config option to force_bpp, in preparation for
  2435. 16bit OpenGL render modes. This option now takes 8, 16 or 32. 16 is
  2436. reportedly broken on Windows, so stick to 32 for now.
  2437. - The force_height_multiplier option has been removed. A lot of code
  2438. wasn't properly designed to handle it, there have been mouse warp bugs
  2439. with it for years, and nobody seems to use it. If people want stretching,
  2440. they can choose one of the four hardware renderers to achieve this.
  2441. + Added infrastructure for "pluggable" renderers. This code isn't perfect,
  2442. but it's far better than the mess in 'e'. Defaults to the 'software'
  2443. render mode.
  2444. + Added Logicow's alternative OpenGL renderer. For more information about
  2445. this renderer, see config.txt. NOTE: This code may be buggy! Please test!
  2446. + Added Mr Alert's YUV overlay renderers. One does full YUV macropixel
  2447. approximation, the other (faster) render does chroma supersampling. See
  2448. config.txt for more information. NOTE: This code may be buggy! Please test!
  2449. + Simplified Exophase's OpenGL renderer present in 'e', and fixed a few bugs
  2450. that caused it to not work for some people.
  2451. + Really made MegaZeux use 'directx' by default on Windows. The code in 'e'
  2452. was non-functional. Use 'windib.bat' to run MegaZeux with the SDL windib
  2453. driver.
  2454. + The OpenGL renderers now have a 'filter' option that allows you to choose
  2455. linear (where pixels are interpolated, looks "blurred") or nearest (where
  2456. nearest-neighbour approximation occurs, looks "sharp").
  2457. + Mouse warping was broken when using any of the hardware renderers. There
  2458. should be code in there now to take account of this (thanks Mr_Alert).
  2459. + Added an option 'editor_spaces_toggle' which allows you to revert MZX's
  2460. space overwrite behavior to the semantics of 'd' (the feature was
  2461. removed in 'e'). By default, the behavior is unchanged.
  2462. + F6 (the debug menu) can now no longer be enabled anywhere but in the
  2463. editor Alt-T test mode. In 'e', it was possible to enable on the title
  2464. screen, but could not be enabled in a game. Like the cheats, this option
  2465. is now visible only in test mode.
  2466. - Removed the 'lame/1337' menu feature.
  2467. + Fixed a bug where the global robot could be exited via some legal commands,
  2468. in an abnormal fashion. The bug resulted in all the code up to the offending
  2469. command being executed over and over.
  2470. DEVELOPERS
  2471. + OpenGL can now be disabled via config.sh. This allows MegaZeux ebuilds
  2472. to be constructed on systems that do not have any form of OpenGL support.
  2473. (Although MZX runtime loads the OpenGL library, 'e' required the headers
  2474. to build correctly. This is now no longer the case.)
  2475. + On Windows, due to an ATi driver bug, I have provided a means of linking
  2476. directly to opengl32.dll, instead of relying on the dynamic loader. This
  2477. reduces binary portability, but fixes many bug reports of being unable
  2478. to fullscreen on ATi video cards. See OPENGL_LINKING for more information.
  2479. + Improved support for cross compiling with mingw32 on Linux, combined the
  2480. win32 Makefile with this new support.
  2481. + Rewrote the config.sh script. All of the options have changed, and the
  2482. broken platform auto-detection has been removed. See ./config.sh for more
  2483. information.
  2484. + Rejigged MegaZeux's headers so that they can be used in both C and C++
  2485. mode. Renamed fsafeopen.cpp to fsafeopen.c. Hopefully by 'g' most of
  2486. MegaZeux should be ported back to C, instead of the "C++" it is now.
  2487. + Fixed up the 'txt2hlp' utility which Terryn has been using a version of
  2488. to build the internal MZX help system. This binary is built in the source
  2489. distribution, but it is not distributed with the MegaZeux binaries.
  2490. + Moved some antiquated Greg code out into 'old'. No attempt has been made
  2491. to make it compile, it is provided purely for reference.
  2492. + For the windows binaries, "windib.bat" is now generated by package.sh
  2493. and auto-generated for the name of the MegaZeux executable.
  2494. + Updated Xcode package from Quantum P. (see macosx.zip).
  2495. January 18, 2007 - MZX 2.81e
  2496. + Made grabbing in the editor not combine background color, only uses
  2497. "special" in game colors for player, tell me if anything ends up being
  2498. weird because of this.
  2499. + Possibly fixed an obscure bug where moving something happened
  2500. immediately if it was sent to a label by a robot further east/south than
  2501. it and it moved north or west (has to do with the way robots are
  2502. reverse scanned). Tell me if this changed any behavior for the worse and
  2503. I'll change it back or try to work out something new.
  2504. + Added GDMs to ctrl + n, this will of course auto convert and play the
  2505. s3m.
  2506. + Added ability to preset player locked status from board settings.
  2507. - Removed ability to change SMZX mode ingame (F11)
  2508. + Instead added ability to debug variables (counters and strings)
  2509. ingame with F11. There's also an option to export the current variables
  2510. to Robotic program that sets them.
  2511. + Fixed bug where moving a block with the player into an overlapping
  2512. region leaves a space where the player was.
  2513. + Fixed bug with a robot indirectly sending itself to a subroutine via
  2514. send all or send name causing it to loop the send.
  2515. + Added compatability hacks for key# prior to MZX 2.69 worlds and
  2516. ridNAME falling through in MZX 2.70 and earlier worlds.
  2517. + F6, F7, F8, and F11 debug/cheat keys only work in editing mode now
  2518. (as things were prior to the port) You can still save/load in the editor
  2519. so if you want all of these things you can play the game from the start
  2520. there.
  2521. + Space in the editor no longer deletes something of similar type that is
  2522. beneath not sure what the point of this was anyway.
  2523. + Fixed bug causing cursor to clipped be out of bounds in SMZX char editor
  2524. if changing to smaller multichar edit region.
  2525. + Accidentally messed up screen centering in fullscreen for 32bpp mode,
  2526. fixed.
  2527. + Added hardware scaling option. You can now supply a window resolution
  2528. besides 640x350 and allow for window resizing if hardware scaling is on;
  2529. this will also scale fullscreen output to fill the entire screen. This
  2530. can slow down rendering somewhat.
  2531. + Fixed bug causing flip block to crash in the editor.
  2532. + Made blocked directions relative to the player for put dir player.
  2533. + Fixed bug where putting something to a direction relative the player
  2534. overwriting the robot could crash MZX.
  2535. + Fixed ability to input in input boxes by clicking on their question
  2536. string.
  2537. + Removed the bogus patch to Modplug and correctly fixed it in the build
  2538. system.
  2539. + Added 'debian' subdirectory for building Debian and Ubuntu upstream
  2540. packages. Hopefully MegaZeux will be in the primary pool in a few
  2541. months.
  2542. + Added OS X xcode project files (see 'macosx.zip'). Fixed many bugs
  2543. relating to endian that caused MegaZeux to be buggy on big-endian
  2544. architectures (like PPC). Credit goes to Quantum P for finding these
  2545. bugs and engineering high quality solutions.
  2546. + Made 'directx' the default video render again on Windows. NOTE: This
  2547. overrides the default SDL behaviour, but will not be applied if you
  2548. set SDL_VIDEODRIVER yourself.
  2549. + Repaired the 'linux-static' target so that it no longer includes a
  2550. system C++ library, which caused unpredictable results on distros
  2551. without a static version.
  2552. + Fixed a locking bug with the audio code that caused hangs at startup
  2553. on OS X. Also provided a mutex implementation using GNU pthreads as
  2554. a temporary workaround for an SDL bug on the Linux platform.
  2555. + Added PlayStation Portable (PSP) port. This code was written by Exophase
  2556. and is highly experimental. It may not work at all for you. Please
  2557. see docs/build.txt for more information regarding this port.
  2558. + Fixed mouse movement from being affected by height_multiplier when
  2559. not in fullscreen mode
  2560. + Fixed height_multiplier config.txt option allowing you to enter really
  2561. stupid values (like negatives, 0, and values too large for the
  2562. resolution)
  2563. + Added in an extra video mode check to stop MZX crashing on video modes
  2564. that the video card can not reproduce
  2565. + Fixed Avalanche to a constant placement rate of 1/18 (this caused MZX
  2566. to deliver an uneven number of boulders, and crash with certain board
  2567. sizes
  2568. + Fixed sprite collision box to stop MZX from crashing when stupid values
  2569. are entered
  2570. + Fixed setting the viewport size to weird values like some old MZX games
  2571. do
  2572. + Default fullscreen resolution is now 640x480, this can be changed in
  2573. config.txt
  2574. + The config.txt option force_32bpp is now enabled by default
  2575. + Seeking with mod_position when using a .WAV file as background music
  2576. now works (thanks Mr_Alert)
  2577. December 10, 2006 - MZX 2.81d
  2578. + Fixed a compilation failure on Linux, due to SDL no longer depending
  2579. on libX11. Now we manually link X11 into MZX if necessary.
  2580. + Various build system improvements, fixing bugs in the prefixing
  2581. of dependencies.
  2582. + New libmodplug 0.8 imported, fixing many endian problems on big-endian
  2583. machines, integrating all of our local patches to 0.7.
  2584. + Fixed bug causing MZX to freeze when starting up on Win9x machines.
  2585. + Fix a warning generated by GCC 4.1.
  2586. + Update the GPL boilerplates project-wide to the newest FSF address.
  2587. + Fix a string range check causing an obscure crash in certain games.
  2588. + Update the build.txt documentation.
  2589. + Address documentation bugs found in the internal MZX help system (Terryn).
  2590. + Fixed a recently introduced bug breaking the open command.
  2591. + Fixed some bugs with changing params and pressing escape.
  2592. December 14, 2005 - MZX 2.81c
  2593. + Oops, accidentally broke shift + F2. Fixed that..
  2594. + Also accidentally broke &+counter& for full hex representation. Fixed.
  2595. + Fixed memory leak problem with playing certain WAVs in a loop.
  2596. + Fixed inconsistency of bad viewport sizes behaving differently on
  2597. current versions from old DOS versions.
  2598. + Accidentally broke joystick stuff in config.txt (has to do with way
  2599. configure options were being read), fixed.
  2600. + Fixed bug causing crash when loading MZBs larger than the current board
  2601. size.
  2602. + Made cursor hidden in alt + V in editor.
  2603. + String comparison failed with nulls in the strings, fixed. Also
  2604. should be slightly more optimal.
  2605. + Fixed bug when using negative numbers for if sprite_colliding "counter"
  2606. + Fixed math operations (inc, dec, etc) not working on string indeces.
  2607. + Added ability to force screen to 32bpp. Fixes some slight rendering
  2608. issues, and if you have problems with fullscreen let me know if this
  2609. helps (try it without first though). See force_32bpp in config.txt.
  2610. + Fixed sprite clipping bug with respect to overlay.
  2611. + Fixed bug where pressing enter on things besides robots, scrolls/signs,
  2612. or sensors in the editor would clear whatever was underneath it.
  2613. + Accidentally broke SFX with optional PC speaker chains (played both,
  2614. should only play PC speaker when digital music is off, fixes Bernard
  2615. the Bard)
  2616. + Made last character in char selection for F3 and alt + C remembered
  2617. (note that they're remembered in two different places for both)
  2618. + Accidentally broke life animations, fixed
  2619. November 26, 2005 - MZX 2.81b
  2620. + Fixed inability to make proper .savs of worlds with strings (they'd
  2621. crash when loaded..)
  2622. + Fixed PC speaker audio bug causing a constant high pitched noise to
  2623. be played instead of PC speaker audio sometimes.
  2624. + Fixed some issues with long pathnames.
  2625. + Fixed a bug causing Caverns to crash in recent versions (long story,
  2626. it was most likely due to an error in ver1to2)
  2627. + Now when you set mzx_speed in a game you can no longer change the
  2628. speed from the F2 menu. Setting mzx_speed to 0 reallows this (and
  2629. doesn't set the speed)
  2630. + When loading a game its speed is now set to the speed MZX started
  2631. with (whatever's in config.txt, or the default of 4)
  2632. + Added backup_ext config.txt option to specify the extension of backup
  2633. files (default is .mzx).
  2634. + Fixed backup_interval for config.txt possibly being broken.
  2635. + Fixed a bug messing up the death board on some old MZX games
  2636. (like Nick Brick 2)
  2637. + Escaped more things and made displays always in escaped form for
  2638. certain character sequences. It should be impossible to type
  2639. non-escaped forms. The following should be used:
  2640. \0 for 0 (this probably won't work in strings, but in chars should)
  2641. \t for tab (character 9)
  2642. \n for newline (character 10)
  2643. \r for carriage return (character 13)
  2644. \" for double quote
  2645. \\ for slash
  2646. + Copy + paste on escaped character won't unescape them anymore.
  2647. + Fixed error message for invalid lines in Robotic
  2648. + Fixed inability to import text files from other directories.
  2649. + Huge overhaul of the source (proper types for things, directions,
  2650. equalities, conditions, chest items, and potions), if anything is
  2651. suddenly broken now let me know.
  2652. + Made scrolls/signs only display text (letters, numbers, etc) in the
  2653. default char set. That should be enough for now.
  2654. + Added mousewheel support for robot editor and robot box display.
  2655. + Fixed inability to load MZMs from other directories in the editor.
  2656. + Wrapped audio stuff in proper mutex, hopefully this fixes some issues
  2657. (like crashing when changing mod_frequency a lot).
  2658. + Long current directory paths no longer write out too much in the file
  2659. loader (instead the last bit is shown with a ... prefixing the
  2660. beginning)
  2661. + Decided to be nice and make board_scan not crash. Don't use it. It's
  2662. only there to make one legacy game work. If you use it I will
  2663. personally scold you. And don't tell other people to use it (that
  2664. means you CJA). Use copy block x y w h "$str" t instead. If you don't
  2665. know what that means read the help file, it explains everything.
  2666. + Removed ability to copy + paste after changing board dimensions of the
  2667. source under any circumstances (alt + R, alt + Z, import world, import
  2668. board)
  2669. + Fixed appearance of ghosts in F10 menu.
  2670. + Prevented char editor from counting moving the cursor as an undo step
  2671. if nothing was actually drawn.
  2672. + Made pressing escape on initial char selection/board selection/param
  2673. selection for things cause it to cancel placing anything.
  2674. + Made it impossible to set board width/height to 0 again (oops)
  2675. + Made starting lives and starting health take effect immediately for
  2676. the first alt + t
  2677. + Added ability to play OGG from alt + l (but not the other mods, don't
  2678. want to clutter that up)
  2679. + Made it so if no note follows an embedded SAM in a play string it's
  2680. played at native frequency.
  2681. + Accidentally made loading worlds in the editor not change the current
  2682. directory, fixed that.
  2683. November 20, 2005 - MZX 2.81
  2684. + Fixed a bug where MZX world/save names > 12 chars could cause weird
  2685. things to happen (like doors breaking)
  2686. + Fixed problems with helpfile/charsets loading when loading MZX
  2687. outside of the directory MZX is in. This should fix file associations
  2688. on Windows as well.
  2689. + Changed board selector so when board 0 is "(no board)" it doesn't
  2690. actually refer to the title but to no board.
  2691. + Made import world not overwrite the title string.
  2692. + Fixed bug that causes crash when trying to flood fill an area with
  2693. the color it already is in the SMZX char editor.
  2694. + Redid audio engine. Everything is unified now, meaning that anything
  2695. you can use as a mod you can use as a sam and vice-versa.
  2696. + The new audio engine uses its own master resampler that has three
  2697. interpolation modes - see config.txt for more information.
  2698. + sam 0 filename will play a file at its native frequency (note that
  2699. SAMs that have been converted from WAVs are set to be played at
  2700. 8363Hz).
  2701. + Added support for OGG vorbis audio files.
  2702. + Fixed bug causing SFX volume control in F2 menu to not work.
  2703. + Removed limitation on number of SAMs that can be played
  2704. simultaneously.
  2705. + Fixed bug where the mouse got "stuck" in the black border edges of
  2706. non 640x350 fullscreen resolutions.
  2707. + Fixed issues with message boxes being part default palette part
  2708. current palette, they now always use the current palette.
  2709. + Added mod_position counter. What these actually set/return is
  2710. dependant on the type of file loaded. Modules use the current row,
  2711. OGGs use the current PCM sample.
  2712. + Added mod_frequency counter. There are a few things to note here:
  2713. Modules have a "nominal" frequency of 44.1KHz. Other data types
  2714. have their own nominal frequency to prevent output from
  2715. sounding differently depending on the audio_sample_rate in config.txt.
  2716. For OGGs and WAVs the nominal frequency is the one the file is
  2717. encoded at.
  2718. Changing the frequency can cause a noticeable one time popping sound,
  2719. so it might not be desirable to slide it. This is much more prominent
  2720. with lowering the frequency than raising it.
  2721. This value is capped so it can't reach below 16.
  2722. + Changed alt + L to play back at natural frequency instead of 8363Hz.
  2723. + Fixed bug causing sensor deletion while the player is on top to
  2724. destroy the player.
  2725. + Fixed bug causing imported boards to possibly crash after being
  2726. tested.
  2727. + Fixed bug causing save_game and save_world to not work if a file
  2728. with the given name isn't already present.
  2729. + Changed function counter matching removing restriction on number of
  2730. digits for parameters. 10+ digit inputs should no longer fail (for
  2731. instance, abs-123456789)
  2732. - Save files from 2.80 are not compatible due to several changes in
  2733. the save format.
  2734. + Made counter/string names internally variable length instead of a
  2735. fixed 14 chars. There is now no longer a name length limitation.
  2736. + Changed alt+8 for mod * to just * in the hotkey listing.
  2737. + Fixed crash when referencing (by param) sprites > 256.
  2738. + The string system has been redone. Strings are now dynamically
  2739. sized and don't have an artificial maximum length. Writing to
  2740. string.N will guarantee that the size of the string becomes at
  2741. least N, while reading in this way will return 0 if out of bounds
  2742. to maintain the illusion of null termination. Be careful when using
  2743. this.
  2744. + $str.length returns the length of string $str (this is faster than
  2745. iterating through it to find when chars hit 0)
  2746. + Vlayer is dynamically sized. The vlayer_width/vlayer_height counters
  2747. still work as per usual, but the vlayer_size counter has been added
  2748. to adjust the maximum size. The default is 32768.
  2749. + Fixed bug not allowing things to move over goop.
  2750. + Fixed bugs causing current directory to be changed when importing
  2751. things from other directories.
  2752. + Properly implemented support for volume "string"
  2753. + Fixed a few commands not working when they should from the global
  2754. robot (such as put to dir of player)
  2755. + Fixed a bug where going to a label at the end of a robot would treat
  2756. it as if it's the first of its name in a sequence of labels.
  2757. + Fixed a bug involving moving the a block with the player not moving
  2758. what was underneath the player.
  2759. + New help file, thanks MUCHLY to Terryn for pulling off this enormous
  2760. effort!
  2761. June 6, 2005 - MZX 2.80h
  2762. + Fixed a bug which could cause crashes when quiting the game.
  2763. + Fixed some bugs when changing boards and other things that can
  2764. cause duplicate players.. I think.
  2765. + Fixed a bug that could cause crashes when adding boards
  2766. + Improved response time in editor for slower computers/high load
  2767. situations
  2768. + Fixed some endian issues with the GUI
  2769. + Fixed some crash when moving the mouse cursor around in the editor
  2770. + Fixed bug where you if you had a robot whose name is the same as
  2771. the global robot it wouldn't get messages (fixes yoyo in Weirdness)
  2772. + Fixed debug box not moving with text input
  2773. + Fixed bug with duplicate player appearing when killed and a new one
  2774. can't be put at 0, 0
  2775. + Added copy/paste for outside of MZX to/from the robot editor. It
  2776. only works in Windows and X11, and functionality may be limited in
  2777. X11 right now (currently seems to work in native X11 apps and
  2778. GTK 2.6 apps but not earlier GTK or QT, also try shift + insert to
  2779. paste)
  2780. + Fixed bug in resizing involving overlay blanking.
  2781. + Fixed clear messages/projectiles not working (and damaging the game
  2782. instead)
  2783. + Fixed behavior of P key in editor for wildweasel.
  2784. + Fixed random in Robotic not correctly swapping the range if they're
  2785. given in the wrong order
  2786. + Fixed clip length in [ messages
  2787. + Fixed crash when changing volume without a game loaded
  2788. + Redid internal GUI system, fixes some minor things
  2789. + New file loading/saving window - press del to delete a file/dir,
  2790. alt + n to create a new directory, alt + r to rename a file/dir.
  2791. + Added PC speaker volume control to F2 settings and config.txt
  2792. + Fixed yet another crash bug with resizing boards
  2793. + Fixed inability to type * in text placement in the editor
  2794. (although this adds inability to turn on mod * while F2 is on...)
  2795. + Added ctrl + n in the editor to load a module for listening only
  2796. (won't set the current board's module, and will let you choose
  2797. ones from different directories)
  2798. + Fixed crash on macros with more variables than can be displayed
  2799. in their configuration.
  2800. + Fixed bug that causes char selection cursor to reset to 0 on
  2801. unhandled keys (and continuously do so for lock keys)
  2802. + Tweaked ctrl + dir in text entry boxes.
  2803. + Added gdm2s3m in-tree to the contrib/ directory. gdm2s3m no longer
  2804. needs to be installed on the system before compiling mzx.
  2805. + Improved the build system to automatically build .c and .cpp files
  2806. with compound system CFLAGS/CXXFLAGS, respectively.
  2807. + Made package.sh automatically ship the source package with a
  2808. Makefile.dist to warn the user that they need to run config.sh before
  2809. 'make'.
  2810. + Rectified inconsistency in source copyrights.
  2811. + Added multicharacter editor. Select multiple keys in the character
  2812. selection with shift. The char editor also now has the ability to
  2813. perform operations (delete, copy, scroll, etc) on subblocks. Hold
  2814. down shift or press alt + b to highlight a region (press escape to
  2815. remove the latter). Blocks copied like this will be pasted to where
  2816. the cursor is at. Other small things in chareditor tweaked/changed...
  2817. No longer press tab to toggle through set/clear/toggle draw modes,
  2818. instead tab for set mode and shift + tab for clear (no more toggle).
  2819. Mouse behavior is modified as well. In non-SMZX left click sets,
  2820. right click clears. Shift + F2 will cut a block (clear + copy)
  2821. alt + x/alt + i can now be used to import/export partial charsets
  2822. while in the char editor. You can do so for several in series:
  2823. put a # in the name of the charset then set the First for the
  2824. first number # will be replaced with and the Count value to
  2825. indicate how many in series to work with.
  2826. For instance, saving s#.chr with first = 0, count = 3, starting
  2827. at offset 100, with a 2x2 char selection will save charsets
  2828. s0.chr from 100, s1.chr from 104, s2.chr from 108, and
  2829. s3.chr from 112.
  2830. *** NOTE *** Series import/export will only work correctly with
  2831. char selections that are one in height (can still be split up
  2832. another way in the editor itself). So if you want to use
  2833. partial charsets on your edits it's important that you select
  2834. all the chars in a row.
  2835. + Made characters for the editor/GUI use another charset that's
  2836. protected. Please notify me if any characters are incorrect.
  2837. Modify mzx_edit.chr to change this charset.
  2838. + The same thing goes for colors. It doesn't work for SMZX, which
  2839. also might look a bit different in the editor...
  2840. + Added option (defaults on) to protect chars 32-127 in input
  2841. boxes and strings in the robot editor.
  2842. + Mouse warping goes to middle instead of top corner now, so there
  2843. isn't a biased towards moving up.
  2844. + Hopefully fixed another bug with the cursor and changing boards...
  2845. + Fixed module looping problem in modplug...
  2846. + Added libmodplug 0.7 with both patches (see contrib/) in-tree.
  2847. Removes system dependency on libmodplug.
  2848. + Made auto-backup on by default (3 count)
  2849. + Made if touching idle, beneath always false instead of like nodir
  2850. + Fixed bug that caused bad things to happen if you pressed too many
  2851. different keys too rapidly.
  2852. + Made mouse wheel emulate up/down in dialog boxes and list menu.
  2853. + Added ctrl + backspace to intake (delete previous word)
  2854. + Made modulo operator use floored instead of truncated mod (uses
  2855. positive remainder instead of negative)
  2856. + Fixed crash when testing after using ctrl + z to clear a board.
  2857. + Fixed bug where sending other robots to subroutines caused the
  2858. return address to be to the next instruction like local subroutine
  2859. calling works.
  2860. + Fixed bug where going to a label on the last line of the robot could
  2861. screw the game up.
  2862. + Fixed a bug where the editor froze if you tried to fill the board with
  2863. players (eheh...)
  2864. + Fixed a bug that could cause crashes when sending all sensors something.
  2865. + Fixed some crashes when exporting/saving fails.
  2866. + Fixed import world's ability to go over the board limit and cause
  2867. crashes.
  2868. + Allowed input of decimal numbers for params.
  2869. April 1, 2005 - MZX 2.80g
  2870. + Fixed crash on alt + x in robot editor.
  2871. + Fixed missing line on alt + h in robot editor.
  2872. + Introduced incorrect enter action in robot editor (didn't reset to beginning
  2873. of the line), fixed.
  2874. + Fixed garbage appearing when moving from a larger to smaller board and being
  2875. outside of that board's scroll region.
  2876. + Fixed bug that could cause glitches/crashing when resizing the board
  2877. + Fixed error with global next option not retaining the three checkmark
  2878. options correctly.
  2879. + Added work around so that move block moves the player (won't move it on
  2880. inter-board moves)
  2881. + Fixed bad palette loading for Linux introduced in 2.80e or f or something
  2882. + Made it so block highlighting doesn't highlight the debug window.
  2883. + Made the debug window move if necessary when home/end is pressed.
  2884. + Added autorepeat buffering so previous keys can be resumed.
  2885. + Fixed bug with swap world possibly not working (crashing??) off Windows
  2886. + Fixed more problems with garbage/crashes when resizing with the cursor
  2887. in a position causing the scroll to go off the edge
  2888. + Fixed incorrect text cursor offset with force_height_multiplier on.
  2889. + Redid way directories are loaded internally so you can load dirs with over
  2890. 4096 entries now. Might be faster (unsure)
  2891. + Chest contents list menu looked funny, fixed.
  2892. + Changed default.spl to smzx.pal so you can load it more sanely.
  2893. + Export block wasn't getting the last selected line. Fixed.
  2894. + Hacked scroll editor so it wouldn't crash when removing lines. Scroll code
  2895. either needs to be 100% overhauled or replaced by robots somehow...
  2896. + Fixed config files not being closed.
  2897. + Added include file option for config files. Use it like this:
  2898. include configfile e.g. include subconfig.cnf will load subconfig.cnf's
  2899. options
  2900. + Fixed freadN not terminating strings.
  2901. + Fixed graphical glitch when using the mouse in the char selector.
  2902. + Fixed save games crashing when they can't load fopened files.
  2903. + Fixed some other problems with save games and fopened files...
  2904. + Accidentally had title screen running a bit slow...
  2905. + Value strings starting with ( not parsed as an expression if they
  2906. don't end with the )
  2907. + Fixed problem with key_code being triggered for keys that aren't
  2908. in-game
  2909. + Removed the unimplemented if player dir and if not player dir
  2910. commands from RASM
  2911. + Added extended macros. This allows for parameter based macros to
  2912. be entered in the robot editor via a window or by command. See
  2913. macro.txt for more information.
  2914. + Fixed player cloning after flip/mirror and player placing.
  2915. + Added random seeding that was mysteriously missing...
  2916. + Finally added drive changing for Windows builds.
  2917. + Fixed mousex/mousey for resolutions other than 640x350 (only applies to
  2918. fullscreen)
  2919. + Fixed crash on weird invalid death/endgame boards...
  2920. + % and & messages clip correctly now.
  2921. + Fixed potential crash on double closing the files.
  2922. + Fixed crash bugs with placing sensors and maybe scrolls.
  2923. + Fixed sending sensors when you have robots of the same name (fixes
  2924. Weirdness chapter 1)
  2925. + Fixed bug that can screw up your world when placing scrolls or sensors..
  2926. sometimes.
  2927. December 26, 2004 - MZX 2.80f
  2928. + Fixed a bug that could cause crashes when auto-quoting params in the robot
  2929. editor (eg, set x 1 -> set "x" to 1)
  2930. + Fixed a bug that could crash the robot editor if you added a new line prior
  2931. to the first line of a marked block, then did an action on it.
  2932. + Fixed a bug where clearing the first and only line could cause it to appear
  2933. as if it hadn't been cleared at all.
  2934. + Unified global and global next parameter setting so that nothing is lost
  2935. between first/next but information can be cancelled without application.
  2936. + Fixed E/S block markers appearing in the robot editor when they should be
  2937. off the screen.
  2938. + Left click position in robot editor mysteriously disappeared after having
  2939. been added somewhere after 2.80d. Readded.
  2940. + Added option to hide the hotkeys help and horizontal border in the robot
  2941. editor with alt + h. Also added a config.txt option to have it default
  2942. this way.
  2943. + Search/replace in the robot editor. ctrl + f to find or replace/replace all,
  2944. ctrl + r to repeat either search or replace (depending the last one you did,
  2945. if you cancelled this does nothing)
  2946. + The load_game counter sequence was broken; fixed.
  2947. + Hopefully fixed all means of overrunning the current line max length in the
  2948. robot editor...
  2949. + Fixed robot editor validation not showing every 13th line
  2950. + Fixed aesthetic problem with validation report....
  2951. + Fixed crash with setting message column less than 0.
  2952. + A couple things added for 2.80e mysteriously disappeared in source handling.
  2953. Readded.
  2954. + Changed max board size prevention to auto resize the lower dimension to the
  2955. max that can be handled with the higher (ex, 30000x25000 becomes 30000x559)
  2956. + Added floodfill to char editors (alt + f)
  2957. + Added single depth undo to char editors (alt + u)
  2958. December 19, 2004 - MZX 2.80e
  2959. + Fixed a bug causing problems with static overlay if a non-overlaid sprite
  2960. is displayed so it's clipped off the edge of the screen.
  2961. + Fixed a bug in the display of c?x color boxes in the F2 menu in the robot
  2962. editor
  2963. + Fixed a bug that caused incorrect thisx/thisy for one cycle after copyblock
  2964. + Fixed a bug preventing calls to nonexistant subroutines from passing that
  2965. point in the robot
  2966. + Fixed crash on sam 0 "file"
  2967. + Fixed a bug where loading new SFX may not correctly overwrite previous ones
  2968. + Fixed a bug where you could only load/unload so many mods before MZX couldn't
  2969. load anymore.. same bug as the SAMs but went unnoticed!
  2970. + Fixed a bug that caused you to be infinitely stuck in the global settings
  2971. dialog box when you press previous on the next page.
  2972. + Fixed a bug where going to next then exiting would not save the changes
  2973. from the previous page.
  2974. + Fixed a bug that could cause crashes while ending modules.
  2975. + Fixed a bug that could do the same kind of thing with sams.
  2976. + Fixed an allocation bug when loading MZX worlds that could lead to crashes.
  2977. + Fixed a bug that caused MZX to crash if you interpolated an expression with
  2978. a value equal to or greater than 1 billion.
  2979. + Fixed a bug where mixing ccheck1/2 with sprites from board and vlayer could
  2980. cause problems (that's the short version of the explanation, I'll spare you
  2981. the long one)
  2982. + Fixed a bug that could cause certain old MZX games to crash after the title
  2983. screen
  2984. + Somewhere broke missiles between 2.80c and 2.80d. Fixed.
  2985. + Fixed error in lit bomb anim sequence setup in char ID editor.
  2986. + Reworked a lot of robot editor code; adding/deleting lines while marked areas
  2987. are active should work more naturally now and it's hopefully no longer possible
  2988. to crash it in the same ways it was previously.
  2989. + Fixed crash when setting mesg row to less than 0.
  2990. + Fixed mouse presses not working in the robot editor.
  2991. + Made MZX ignore alt + tab so you can safely switch in your WM without it
  2992. triggering...
  2993. + Added numerical key entry for number boxes. Use 0-9 to add to the most
  2994. significant digit and backspace to take it away.
  2995. - Fixed maximum board size to about 16.7 million tiles (128MB), for now.
  2996. + Added config.txt option to make MZX pause when key focus is lost
  2997. (when clicking on another window, perhaps) or when it's minimized. Music will
  2998. still continue.
  2999. + Added save/load position to the editor. Works for loads inbetween boards as
  3000. well. Press ctrl + num to save to slots 0 through 9 and alt + num to load from
  3001. that slot. Please press shift + 8 or the numpad * key instead of alt + 8 to
  3002. set mod wildcard.
  3003. + MZX now ignores the mouse scroll wheel instead of interpreting it as a click.
  3004. + Fixed a further bug that could cause playing samples to crash.
  3005. + Added config file option to revert the robot editor to the default palette
  3006. when loaded.
  3007. + Fixed bug in shoot command.
  3008. + Fixed error when making save name in editor but cancelling.
  3009. + Auto-backup - see config.txt for details.
  3010. + Joystick key mapping - see config.txt for details.
  3011. + You can now load game-specific config files by creating game.cnf for the
  3012. corresponding game.cnf (for instance, caverns.cnf). This is mainly useful
  3013. for joystick key mapping. Note that these settings will NOT go away if
  3014. another game is loaded that doesn't have a .cnf.
  3015. + Alt-enter finally works as block action in the robot editor.
  3016. + Loading a .mzx/.sav from another directory indirectly (via command-line or
  3017. robotic) will now actually change the current working directory.
  3018. + Fixed bug that crashed MZX with ctrl + i in the robot editor.
  3019. October 9, 2004 - MZX 2.80d
  3020. + Fixed cursor going invisible when escaping from import in the editor
  3021. + Fixed robot editor entry when pressing OK on global info
  3022. + Fixed lack of name for MZB import/export (any MZB's exported in prior
  3023. beta versions still won't have a name)
  3024. + Fixed some problems with setting the mouse position
  3025. + Fixed problem with exits not bringing you all the way to the edge if width
  3026. over 400 or height over 200
  3027. + Fixed bug that cleared too much when increasing both width and height while
  3028. resizing the board
  3029. + Fixed problem with 1 char shortcut commands with spaces immediately after them
  3030. + Fixed problems with load_robot and load_bc (caused crashes and infinite loops)
  3031. + Optmized RASM heavily (this should be most noticable when doing a lot of
  3032. external robot loading from text files)
  3033. + Fixed inability to use absolute paths in loading a game from command line
  3034. + Fixed lastshot/lasttouch conditions with directions not working
  3035. + Fixed char editor in robots not going into SMZX mode when proper
  3036. + Cleaned up source code so it passes -Wall without complaint and in the process
  3037. corrected some glaring code errors that may have corrected random problems
  3038. + File opening broken in 2.80c, fixed
  3039. + Implemented MZM2 saving and loading and rewrote mzm.cpp (if anything is changed
  3040. or fixed regarding MZMs, attribute it to this). MZM2s can be of larger
  3041. dimensions, smaller filesize for same amount of data, and can store robots.
  3042. + Fixed bug that could cause MZX to crash when making new strings
  3043. + Block operations to overlay when overlay was off caused crashes - fixed
  3044. + Fixed a problem with sprite ccheck2 against other sprites
  3045. + Optimized function counter lookups a bit; speed gain for all counter accesses
  3046. (especially ones that begin with certain characters such as _)
  3047. + Fixed disassembly error with ' ' character
  3048. + Fixed assembly error where condition extended dir (such as blocked opp seek)
  3049. was not getting compiled with the dir extension
  3050. + Fixed editor bug where the param was not being cleared when overwriting things
  3051. by double placement
  3052. + Fixed inability to use counters with playercolor/bulletcolor/missilecolor
  3053. + Added ability to use counters in place of p?? in the robot editor
  3054. Note - even though this expands functionality of the editor this does not
  3055. require a version number change because the worlds will still be playable in
  3056. older MZX versions (and will display correctly in the robot editor - you simply
  3057. won't be able to correctly edit the commands)
  3058. + Mouse correctly limited to screen edges now
  3059. + Fixed inability to overwrite robots with pushable robots and vice-versa,
  3060. as well as scrolls with signs and vice-versa
  3061. + Possibly fixed problem with windowing error when editing global robot (?)
  3062. + Fixed disappearing cursor after color selection box with mouse (and other places?)
  3063. + Fixed bug in sprite clipping that caused some to be clipped off inappropriately
  3064. + Made board_id/board_param counters readable
  3065. + Added bound checks for all counters using board_x/board_y/overlay_x/overlay_y
  3066. + Removed ability to put robots, scrolls/signs, and sensors (with the put command in
  3067. Robotic)
  3068. + Fixed potential direction corruption bug causing directions not to work
  3069. sometimes even if they display correctly in the robot editor
  3070. + Fixed copy overlay to MZM copying to overlay too
  3071. + Fixed a bug where debug window could display the wrong amount of robot mem
  3072. and potentially even crash MZX
  3073. + Fixed help_menu counter not doing anything (durr)
  3074. + Changed sprite draw order so they're drawn underneath the message bar,
  3075. debug box, and time remaining display
  3076. + Changed put p?? in Robotic so it will put default params if available
  3077. + Fixed a bug that could cause copies from overlay to vlayer to not end up at
  3078. the correct destination
  3079. + Fixed a bug where c?x and cx? would not display correctly in the robot editor
  3080. + Optimized copy blocks a bit using variable length arrays instead of malloc
  3081. August 16, 2004 - MZX 2.80c
  3082. + Fixed issues with the commands counter not being reset
  3083. + Color intensity now gets reset when you enter the editor
  3084. + SAMs got cutoff sometimes now.. fixed
  3085. + Fixed bug where loading a world with empty boards could change the starting,
  3086. endgame, and death boards
  3087. + Fixed bug where you could text enter off the bottom of the board, causing
  3088. problems
  3089. + Fixed bug involving cutting/clearing the entire robot in the robot editor
  3090. while not at the first line
  3091. + Fixed robot name entry for global robot not disappearing on small boards
  3092. + Fixed bug where you could duplicate the player by holding down a direction
  3093. as a saved game loads
  3094. + Fixed bug where you could go to line 0 in the robot editor
  3095. + Saving an MZM now auto-adds the .mzm extension...
  3096. + Fixed black screen on quicksave
  3097. + Fixed bug where opening a file didn't close the old one if one was open
  3098. (so it'd eventually crash MZX)
  3099. + Changed alt+backspace behavior in intake so it doesn't exit
  3100. + Added clipping for refx/refy/width/height for sprites (less than 0 at
  3101. initialization, greater than board width/height at draw)
  3102. + Fixed direction parsing for move all
  3103. + Fixed bug where creating things on top of the player would use a slot
  3104. for robots/scrolls/signs/sensors instead of just copy to the buffer
  3105. + Added ability to use chars as immediates in Robotic commands
  3106. (ie, set "$str.0" 'a')
  3107. + Added options to enable oversampling and specify resampling mode in
  3108. the config file (higher quality audio)
  3109. + Building with patched modplug that fixes loading 2-channel mods
  3110. outputted by FT2. If you're building yourself, see build.txt.
  3111. + Fixed inability to mouse click in alt + h mode
  3112. + Fixed ability to mouse click outside of board range
  3113. + Should work better for Linux users; case insensitivity for file opens
  3114. has been added.
  3115. + Fixed close bug that was affecting Linux builds (may affect more)
  3116. + Keypad enter works where normal enter works now
  3117. + Fixed disappearing cursor when cancelling out of abandon changes box
  3118. when loading a new world in the editor
  3119. + Fixed problems when loading/saving robots outside of ID range (do not
  3120. hardcode ID's people)
  3121. + Fixed problem with NO BOARD exits being set to something else when
  3122. empty boards were being stripped or when worlds were being imported
  3123. + Fixed bug where auto-decrypting worlds didn't work if the XOR value
  3124. was negative
  3125. + Fixed problem with rid not working the first cycle
  3126. + Fixed inability to interpolate (with &&'s) counter names larger than
  3127. 14
  3128. + Added new robot mem counter in debug box (only kb precise, rounds up)
  3129. + Fixed ability to clone the player on non-title board after testing
  3130. + Lengthened size of mod name buffers
  3131. + Fixed bug where send x y doesn't work from the global robot
  3132. + Fixed a few bugs that could cause MZX to crash
  3133. + Fixed a bug that prevented copyrobot "string" from working in some
  3134. situations
  3135. + Fixed a bug allowing player duplication in board importing
  3136. August 11, 2004 - MZX 2.80b
  3137. + Made it possible for robots to move through teleporters
  3138. + Fixed bug with pressing shift in text entry boxes
  3139. + Made it so alt + tab does not switch draw modes in editor
  3140. + Fixed a disassembly error for color intensity N percent command
  3141. + Fixed problem with looping on mods that do not loop explicitely
  3142. + Fixed alt + dir scrolling in the char editor
  3143. + Fixed not being able to click the rightmost char in the char editor
  3144. + Readded unmark (alt + u) to robot editor (mysteriously disappeared??)
  3145. + Fixed key label so it returns proper unicode values
  3146. + The player and pushable robots can now be pushed by the push command
  3147. + Fixed bug where you could clone the player by switching boards
  3148. + Fixed bug where you could either turn off overlay or switch to boards
  3149. that don't have it while in overlay edit mode...
  3150. + Fixed bug where remains of debug window would not be cleared in editor
  3151. if the board width is too small
  3152. + Fixed bug where turning off the menu with a board too small would mess
  3153. things up
  3154. + Fixed bug where run lengths were saved one too large... this could fix
  3155. stability problems in at least occasional cases (with saved worlds or
  3156. save games, at least)
  3157. + Fixed placing solid things beneath robots (like bombs)
  3158. + Added support for a keyboard plus in the char editors
  3159. + Fixed previous button in SFX editor
  3160. + Made robot name box disappear when robot char box comes up...
  3161. + Fixed bug where mods restart after pressing P if they're the same mod
  3162. as what was playing before
  3163. + Fixed problem with changing params (with P) in the editor.
  3164. + Fixed bug where null boards were not being pruned from old worlds upon
  3165. load
  3166. + Made file name saving box larger (for saving games and worlds)
  3167. + Fixed bug where default (100%) palette intensity values would not be
  3168. applied to the palette a game loads with
  3169. + Fixed bug where exporting char sets that are full size caused a 0
  3170. byte charset to be exported (8bit wraparound)
  3171. - Removed export text in the board editor. Don't think anyone wanted it...
  3172. + Added support for forms such as :line
  3173. + Fixed sporadic incompletion of strings without trailing quotes at the
  3174. end of the line
  3175. + Fixed bug where clearing/cutting the last line of a robot crashed MZX
  3176. + F4 in robot editor now works more generally
  3177. + Made line numbers in robot editor error report start at 1
  3178. + Added ctrl + G to go to a line in the robot editor (ala nano)
  3179. + Made it possible to change a robot's color in the editor
  3180. + Fixed bug where spitfire, seekers, and missiles didn't hurt something
  3181. immediate adjacent to whatever shot it
  3182. + Fixed editing of spitfires
  3183. + Made default speed 4 again (5, bleh)
  3184. + Readded quicksave/quickload
  3185. + Readded F8 clear (always works - be careful)
  3186. + Fixed autorepeat problems for spacepressed/delpressed.
  3187. + Wrapped around sprite values so LogiCow's bad code would work (HTMCIAB)
  3188. + Cleared block commands inbetween board changing and other things like
  3189. that
  3190. + Fixed bug where MZX would crash if put dir player overwrote the robot
  3191. doing it
  3192. + Fixed bug where playing SAMs would eventually crash MZX
  3193. + Fixed some mod * problems (hopefully?)
  3194. + Fixed bug where pasting blocks over the edge of the board in the editor
  3195. would cause MZX to crash
  3196. + Uses new GDM2S3M source that fixes some bugs. If your converted GDM's
  3197. have problems, delete the S3M's it generated.
  3198. August 9, 2004 - First release, MZX 2.80 BETA