{"id":294,"date":"2023-12-06T10:12:28","date_gmt":"2023-12-06T10:12:28","guid":{"rendered":"https:\/\/retrorendezvous.org\/?p=294"},"modified":"2024-02-19T20:35:52","modified_gmt":"2024-02-19T20:35:52","slug":"the-lords-of-midnight-landscaping","status":"publish","type":"post","link":"https:\/\/retrorendezvous.org\/index.php\/2023\/12\/06\/the-lords-of-midnight-landscaping\/","title":{"rendered":"The Lords of Midnight : Landscaping"},"content":{"rendered":"\n<p>The Lords of Midnight was a popular and epic graphic adventure game by Mike Singleton for the ZX Spectrum (and other platforms &#8211; but not for the Beeb) originally released in 1984.<\/p>\n\n\n\n<p>Here&#8217;s a few screenshots of what it looked like:-<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/retrorendezvous.org\/wp-content\/uploads\/2023\/12\/LOM-ScreenExample3.jpeg\" alt=\"Image\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/retrorendezvous.org\/wp-content\/uploads\/2023\/12\/LOM-ScreenExample2.png\" alt=\"Image\"\/><\/figure>\n\n\n\n<p>I never completed the game but did remember these landmark graphics. The technique that the author Mike Singleton used was &#8220;Landscaping&#8221; &#8211; using scaled graphics shown as a first person perspective view. It was unique at the time &#8211; definitely moving computer graphics forward several notches.<\/p>\n\n\n\n<p>The challenge I&#8217;ve set for myself is can this be done on the Beeb with Basic? I&#8217;m only interested in getting as far as having a grid of locations, the player being able to move in one of the 8 compass directions and having a simple landscape view implemented.<\/p>\n\n\n\n<p>The code I have developed so far is in a link at the bottom of this post which includes:-<\/p>\n\n\n\n<p>1) The player grid set up, currently 16 x 16. Each location has a number representing a tree or mountain or just an empty space. The player grid is displayed at the moment for diagnostic purposes, showing the position of the player, with a note at the top of the screen showing which direction the player is facing.<br>2) The player being able to look in one of the 8 compass directions (using numbers 1-8) and move with the key &#8220;m&#8221;.<br>3) Some procedures to draw scaled mountains and trees. (adapted from graphics code with thanks to Dominic Pajak) . The current code just shows a demo of these scaled graphics being used.<\/p>\n\n\n\n<p>This is an example of scaled graphics I have developed so far. The tower from the code below has been removed for now to save memory.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/retrorendezvous.org\/wp-content\/uploads\/2023\/12\/ScaledGraphics.jpg\" alt=\"Image\"\/><\/figure>\n\n\n\n<p>I have a Graphics Extension ROM (GXR) &#8211; so am using some of this extended command set in my code.<\/p>\n\n\n\n<p>The big challenge is being able to represent the &#8220;landscaping&#8221; technique. I suspect this will be quite challenging squeezing it into memory, but I want to give it a go.<\/p>\n\n\n\n<p>Luckily this technique is outlined in detail on this web page (see below), where Christopher John Wild has put a lot of work into understanding the game and breaking it down.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.icemark.com\/tower\/landscaping.htm\">https:\/\/www.icemark.com\/tower\/landscaping.htm<\/a><\/p>\n\n\n\n<p>Here&#8217;s my Mode 1 version, where I&#8217;ve gotten to the point with displaying three elements; mountains, trees and towers shown in a perspective mode. The player grid is shown as a 15 x 15 grid. Use N,E,S and W keys to face in different directions and the &#8220;M&#8221; key to move one square.<\/p>\n\n\n\n<p>The following <a href=\"https:\/\/bbcmic.ro\/#%7B%22v%22%3A1%2C%22program%22%3A%2210MODE%201%5Cn20H%3D700%3AF%25%20%3D%20550%5Cn30pd%25%3D4%20%5Cn40cp%24%3D%5C%223579%5C%22%20%20%5Cn60ms%25%3D15%5Cn70DIM%20m%24%28ms%25%2C%20ms%25%29%5Cn80DIM%20D%24%284%29%5Cn90DIM%20R%284%29%5Cn100FOR%20L%20%3D%201%20TO%204%5Cn110R%28L%29%20%3D%20RND%2860%29%5Cn120NEXT%5Cn130DATA%20N%2CE%2CS%2CW%5Cn140FOR%20n%25%20%3D%201%20TO%204%5Cn150READ%20D%24%28n%25%29%5Cn160NEXT%5Cn170FOR%20y%25%20%3D%200%20TO%20ms%25%5Cn180FOR%20x%25%20%3D%200%20TO%20ms%25%5Cn190r%25%20%3D%20RND%2810%29%20%5Cn200IF%20r%25%20%3C%3D%205%20THEN%20m%24%28x%25%2C%20y%25%29%20%3D%20%5C%220%5C%22%5Cn210IF%20r%25%3E5%20AND%20r%25%20%3C%3D%209%20THEN%20m%24%28x%25%2C%20y%25%29%20%3D%20STR%24%28RND%282%29%29%5Cn220IF%20r%25%20%3D10%20THEN%20m%24%28x%25%2C%20y%25%29%20%3D%20%5C%223%5C%22%5Cn230NEXT%2C%5Cn250pX%25%20%3D%208%20%3A%20pY%25%20%3D%208%5Cn260PROC_Ls%28%5C%22N%5C%22%29%5Cn270COLOUR%202%5Cn280L%24%3D%5C%22N%5C%22%20%5Cn290REPEAT%5Cn300FOR%20y%25%20%3D%201%20TO%2015%5Cn310FOR%20x%25%20%3D%201%20TO%2015%5Cn320IF%20x%25%20%3D%20pX%25%20AND%20y%25%20%3D%20pY%25%20THEN%20COLOUR%203%20%3A%20PRINT%20TAB%28x%25%2B11%2Cy%25%2B15%29%3B%5C%22%40%5C%22%20ELSE%20%20COLOUR%200%20%3A%20PRINT%20TAB%28x%25%2B11%2Cy%25%2B15%29%3Bm%24%28x%25%2C%20y%25%29%5Cn330NEXT%2C%5Cn350REPEAT%5Cn360Com%24%20%3D%20GET%24%5Cn370UNTIL%20INSTR%28%5C%221234M%5C%22%2CCom%24%29%3E0%5Cn380IF%20Com%24%20%3C%3E%20%5C%22M%5C%22%20THEN%20L%24%20%3D%20D%24%28VAL%28Com%24%29%29%20ELSE%20PROC_MovP%28L%24%29%5Cn390PROC_Ls%28L%24%29%5Cn400PRINT%20TAB%280%2C0%29%5C%22You%20look%20%5C%22%3BL%24%3B%5C%22%20%5C%22%5Cn410UNTIL%20FALSE%5Cn420DEF%20PROC_Ls%28L%24%29%5Cn430PROC_SKY%5Cn440dx%25%3D0%3Ady%25%3D0%20%5Cn450IF%20L%24%20%3D%20%5C%22N%5C%22%20THEN%20dy%25%20%3D%20-1%20%3A%20dx%25%20%3D%20-1%20%5Cn470IF%20L%24%20%3D%20%5C%22E%5C%22%20THEN%20dx%25%20%3D%201%20%3A%20dy%25%20%3D%20-1%20%5Cn490IF%20L%24%20%3D%20%5C%22S%5C%22%20THEN%20dy%25%20%3D%20-1%20%3A%20dx%25%20%3D%201%20%5Cn510IF%20L%24%20%3D%20%5C%22W%5C%22%20THEN%20dx%25%20%3D%20-1%20%3A%20dy%25%20%3D%201%5Cn530FOR%20r%25%20%3D%20pd%25%20TO%201%20STEP%20-1%5Cn540nc%25%20%3D%20VAL%28MID%24%28cp%24%2Cr%25%2C1%29%29%5Cn550cs%25%20%3D%20%28%28nc%25%2B1%29%2F2%29*dy%25%5Cn570epy%25%20%3D%20F%25%20%2B%20%28400%20*%20%28r%25%20-%201%29%20%2F%20%28nc%25%20-%201%29%29%5Cn580sW%20%3D%201280%20%2F%20nc%25%5Cn590FOR%20c%25%3D%201%20TO%20nc%25%5Cn600IF%20L%24%3D%5C%22N%5C%22%20OR%20L%24%20%3D%20%5C%22S%5C%22%20THEN%20ey%25%20%3D%20pY%25%2B%28r%25*dx%25%29%20%5Cn601IF%20L%24%3D%5C%22S%5C%22%20THEN%20ex%25%3DpX%25%2Bcs%25%2B1%2B%28nc%25-c%25%29%5Cn602IF%20L%24%3D%5C%22N%5C%22%20THEN%20ex%25%3DpX%25%2Bcs%25%2Bc%25%5Cn610IF%20L%24%3D%5C%22E%5C%22%20OR%20L%24%20%3D%20%5C%22W%5C%22%20THEN%20ex%25%20%3D%20pX%25%2B%28r%25*dx%25%29%5Cn615IF%20L%24%3D%5C%22E%5C%22%20THEN%20ey%25%20%3D%20pY%25%2Bcs%25%2Bc%25%5Cn620IF%20L%24%3D%5C%22W%5C%22%20THEN%20ey%25%20%3D%20pY%25-cs%25%2B1%2B%28nc%25-c%25%29%5Cn630IF%20ex%25%20%3E%20ms%25-1%20OR%20ex%25%20%3C%201%20THEN%20edgex%20%3D%201%20ELSE%20edgex%20%3D%200%5Cn640IF%20ey%25%20%3E%20ms%25-1%20OR%20ey%25%20%3C%201%20THEN%20edgey%20%3D%201%20ELSE%20edgey%20%3D%200%5Cn650IF%20edgex%20%3D%200%20AND%20edgey%20%3D%200%20THEN%20El%24%20%3D%20m%24%28ex%25%2Cey%25%29%20ELSE%20El%24%20%3D%20%5C%221%5C%22%5Cn670epx%25%20%3D%20%28c%25%20-%200.5%29%20*%20sW%5Cn690%5Cn710IF%20El%24%20%3D%20%5C%221%5C%22%20THEN%20PROC_MT%28epx%25%2Cepy%25%2C%281%2Fr%25%29*1.5%29%5Cn720IF%20El%24%20%3D%20%5C%222%5C%22%20THEN%20PROC_TR%28epx%25%2Cepy%25%2C%281%2Fr%25%29*15%29%5Cn725IF%20El%24%20%3D%20%5C%223%5C%22%20THEN%20PROC_TW%28epx%25%2Cepy%25%2C%281%2Fr%25%29*3%29%5Cn740NEXT%2C%5Cn760ENDPROC%5Cn770DEF%20PROC_MovP%28L%24%29%5Cn780dx%25%20%3D%200%20%3A%20dy%25%20%3D%200%5Cn790IF%20L%24%20%3D%20%5C%22N%5C%22%20THEN%20dy%25%20%3D%20-1%5Cn810IF%20L%24%20%3D%20%5C%22E%5C%22%20THEN%20dx%25%20%3D%201%5Cn830IF%20L%24%20%3D%20%5C%22S%5C%22%20THEN%20dy%25%20%3D%201%5Cn850IF%20L%24%20%3D%20%5C%22W%5C%22%20THEN%20dx%25%20%3D%20-1%5Cn870IF%20pX%25%20%2B%20dx%25%20%3C%201%20OR%20pX%25%20%2B%20dx%25%20%3E%2015%20OR%20pY%25%20%2B%20dy%25%20%3C%201%20OR%20pY%25%20%2B%20dy%25%20%3E%2015%20THEN%20PRINT%20%5C%22Edge!%5C%22%20ELSE%20pX%25%20%3D%20pX%25%20%2B%20dx%25%20%3A%20pY%25%20%3D%20pY%25%20%2B%20dy%25%5Cn880ENDPROC%5Cn890DEF%20PROC_MT%28midX%2C%20sY%2C%20s%29%5Cn900GCOL%200%2C%201%5Cn910FOR%20M%20%3D%200%20TO%201%5Cn920GCOL%200%2C%201%20-%20M%5Cn930Z%20%3D%20sY%20-%204%20*%20M%5Cn940FOR%20L%20%3D%201%20TO%203%5Cn950A%20%3D%20midX%20-%20150%20*%20s%20%2B%20L%20*%20100%20*%20s%5Cn960MOVE%20A%20%2B%20%28R%28L%29*s%29%20%2B%2060%20*%20s%2C%20Z%20%2B%20106%20*%20s%20-%20%28R%28L%20%2B%201%29%29*s%5Cn970MOVE%20A%2C%20Z%5Cn980PLOT%2081%2C%20200%20*%20s%2C%200%5Cn990NEXT%2C%5Cn1010ENDPROC%5Cn1020DEF%20PROC_TR%28X%2CH%2CS%29%5Cn1030GCOL%200%2C0%5Cn1040Y%3DH%2BS*4%3AW%3DS%5Cn1050FOR%20B%3D1TO6%5Cn1060GCOL%200%2C1%5Cn1070MOVE%20X-W%2CY%3AMOVE%20X%2CY%2BS*2%3APLOT%2085%2CX%2BW%2CY%5Cn1080W%3DW*1.3%3AY%3DY-S%5Cn1090GCOL%2032%2C0%5Cn1100PLOT%2085%2CX%2BW%2F10%2CY%2BS*2%5Cn1110NEXT%20B%5Cn1120ENDPROC%5Cn1130DEF%20PROC_SKY%5Cn1140PRINT%5C%22%C4%91%C6%82%C4%8C%C4%93%C4%83%C4%86%C4%80%C4%80%C4%80%C4%93%C4%82%C4%84%C4%80%C4%80%C4%80%C4%93%C4%81%C4%80%C4%80%C4%80%C4%80%C4%93%C4%80%C4%87%C4%80%C4%80%C4%80%C4%85%5C%22%5Cn1150C%24%3D%5C%22%C4%80%C4%83%40%C4%80%C4%80%C4%820%C4%80%20%C4%80%C4%90%C4%80%C4%80%C4%81%C4%80%C4%81%5C%22%5Cn1160FORY%3D0%20TO%207%5Cn1170PRINT%5C%22%C4%92%5C%22%3BMID%24%28C%24%2C1%2BY*2%2C2%29%5Cn1180MOVE0%2CH%2BY*50%5Cn1190PLOT97%2C1280%2C50%5Cn1200NEXT%5Cn1210VDU%204%5Cn1220ENDPROC%5Cn1230DEF%20PROC_TW%28X%2CY%2CS%29%5Cn1240GCOL%200%2C0%5Cn1250BW%3D20*S%3ATH%3D50*S%3ACH%3D15*S%3ACW%3D30*S%3AWW%3D3*S%3AWH%3D2*S%3AWS%3DCW%2F4%5Cn1260MOVE%20X%2CY%3APLOT%20101%2CX%2BBW%2CY%2BTH%5Cn1270GCOL%200%2C1%3ADRAW%20X%2BBW%2CY%3AMOVE%20X%2CY%3ADRAW%20X%2CY%2BTH%5Cn1280GCOL%200%2C0%3AMOVE%20X%2BBW%2F2-CW%2F2%2CY%2BTH%3APLOT%20101%2CX%2BBW%2F2%2BCW%2F2%2CY%2BTH%2BCH%5Cn1290GCOL%200%2C1%5Cn1300MOVE%20X%2BBW%2F2-CW%2F2%2CY%2BTH%5Cn1310DRAW%20X%2BBW%2F2%2BCW%2F2%2CY%2BTH%5Cn1320MOVE%20X%2BBW%2F2-CW%2F2%2CY%2BTH%2BCH%5Cn1330DRAW%20X%2BBW%2F2%2BCW%2F2%2CY%2BTH%2BCH%5Cn1340MOVE%20X%2BBW%2F6%2CY%5Cn1350PLOT%2097%2CBW%2F6%2CTH%2F5%5Cn1360WX%3DX%2BBW%2F2-CW%2F2%2B%28WS-WW%29%2F2%5Cn1370WY%3DY%2BTH%2B%28CH-WH%29%2F2%5Cn1380FOR%20I%3D1%20TO%204%5Cn1390MOVE%20WX%2B%28I-1%29*WS%2CWY%5Cn1400PLOT%20101%2CWX%2BWW%2B%28I-1%29*WS%2CWY%2BWH%5Cn1410NEXT%20I%5Cn1420GCOL%2032%2C0%5Cn1430ENDPROC%22%7D\">link<\/a> will take you to the Owlet editor with the code.<\/p>\n\n\n\n<p>This <a href=\"https:\/\/stardot.org.uk\/forums\/viewtopic.php?t=28104\">link<\/a> is a post in the stardot forum outlining the progress of the code, with other forum members contributing and adding to the graphics.<\/p>\n\n\n\n<p>This is the <a href=\"https:\/\/bbcmic.ro\/#%7B%22v%22%3A1%2C%22program%22%3A%2210MODE%201%3AH%3D700%3AF%3D550%3Ap%3D4%3Ac%24%3D%5C%223579%5C%22%3Am%3D15%3A%5Cn20PRINT%20%5C%22Find%20the%20dragon%20in%20the%20land%20of%20Midnight%5C%22%5Cn25PRINT%20%5C%22You%20are%20shown%20on%20the%20map%20as%20%27%40%27%5C%22%5Cn30PRINT%20%5C%22Use%20keys%201-4%20to%20look%20N%2CE%2CS%20or%20W%5C%22%5Cn35PRINT%20%5C%22Use%20M%20to%20move%201%20space%5C%22%5Cn36PRINT%5Cn37PRINT%20%5C%22Map%20key%3A%200%20%3D%20plains%2C%201%20%3D%20mountain%5C%22%5Cn38PRINT%20%5C%22Map%20key%3A%202%20%3D%20forest%2C%203%20%3D%20tower%5C%22%5Cn39PRINT%5Cn40PRINT%20%5C%22Press%20any%20key%20to%20continue%5C%22%3APROCD%5Cn50G%3DGET%5Cn60CLS%3Ax%3DRND%28m%29%3Ay%3DRND%28m%29%5Cn70DIM%20g%24%28m%2Cm%29%3ADIM%20d%24%284%29%3ADIM%20r%284%29%5Cn100FOR%20L%3D1%20TO%204%3Ar%28L%29%3DRND%2860%29%3ANEXT%5Cn130DATA%20N%2CE%2CS%2CW%5Cn140FOR%20n%3D1%20TO%204%3AREAD%20d%24%28n%29%3ANEXT%5Cn170FOR%20j%3D1%20TO%20m%5Cn180FOR%20i%3D1%20TO%20m%5Cn190q%3DRND%2810%29%5Cn200IF%20q%3C%3D5%20THEN%20g%24%28i%2Cj%29%3D%5C%220%5C%22%5Cn210IF%20q%3E5%20AND%20q%3C%3D9%20THEN%20g%24%28i%2Cj%29%3DSTR%24%28RND%282%29%29%5Cn220IF%20q%3D10%20THEN%20g%24%28i%2Cj%29%3D%5C%223%5C%22%5Cn230NEXT%2C%5Cn250px%3DRND%28m%29%3Apy%3DRND%28m%29%3APROCl%28%5C%22N%5C%22%29%3ACOLOUR%200%3Alt%24%3D%5C%22N%5C%22%3APRINT%20TAB%280%2C0%29%5C%22You%20look%3A%5C%22%3Blt%24%3B%5C%22%20%5C%22%5Cn260d%25%3DABS%28x-px%29%2BABS%28y-py%29%3APRINT%20TAB%280%2C2%29%3B%5C%22The%20dragon%20is%20%5C%22%3Bd%25%3B%5C%22%20league%28s%29%20away%5C%22%5Cn290REPEAT%5Cn300FOR%20j%3D1%20TO%2015%3AFOR%20i%3D1%20TO%2015%5Cn320IF%20i%3Dpx%20AND%20j%3Dpy%20THEN%20COLOUR%203%3APRINT%20TAB%28i%2B11%2Cj%2B15%29%3B%5C%22%40%5C%22%20ELSE%20COLOUR%200%3APRINT%20TAB%28i%2B11%2Cj%2B15%29%3Bg%24%28i%2Cj%29%5Cn330NEXT%2C%5Cn350REPEAT%3Acm%24%3DGET%24%3AUNTIL%20INSTR%28%5C%221234M%5C%22%2Ccm%24%29%3E0%5Cn380IF%20cm%24%3C%3E%5C%22M%5C%22%20THEN%20lt%24%3Dd%24%28VAL%28cm%24%29%29%20ELSE%20PROCm%28lt%24%29%5Cn390PROCl%28lt%24%29%3APRINT%20TAB%280%2C0%29%5C%22You%20look%3A%5C%22%3Blt%24%3B%5C%22%20%5C%22%3Ad%25%3DABS%28x-px%29%2BABS%28y-py%29%3APRINT%20TAB%280%2C2%29%3B%5C%22The%20dragon%20is%20%5C%22%3Bd%25%3B%5C%22%20league%28s%29%20away%5C%22%5Cn410UNTIL%20d%25%3D0%5Cn411PROCD%5Cn413PRINT%20TAB%280%2C18%29%5C%22You%20found%20the%20dragon!%5C%22%5Cn419END%5Cn420DEF%20PROCl%28l%24%29%5Cn430PROCs%3Aa%3D0%3Ab%3D0%5Cn450IF%20l%24%3D%5C%22N%5C%22%20THEN%20b%3D-1%3Aa%3D-1%5Cn470IF%20l%24%3D%5C%22E%5C%22%20THEN%20a%3D1%3Ab%3D-1%5Cn490IF%20l%24%3D%5C%22S%5C%22%20THEN%20b%3D-1%3Aa%3D1%5Cn510IF%20l%24%3D%5C%22W%5C%22%20THEN%20a%3D-1%3Ab%3D1%5Cn530FOR%20t%3Dp%20TO%201%20STEP%20-1%5Cn540z%3DVAL%28MID%24%28c%24%2Ct%2C1%29%29%3Av%3D%28%28z%2B1%29%2F2%29*b%3Aw%3DF%2B%28400*%28t-1%29%2F%28z-1%29%29%3Au%3D1280%2Fz%5Cn590FOR%20k%3D1%20TO%20z%5Cn600IF%20l%24%3D%5C%22N%5C%22%20OR%20l%24%3D%5C%22S%5C%22%20THEN%20e%3Dpy%2B%28t*a%29%5Cn601IF%20l%24%3D%5C%22S%5C%22%20THEN%20f%3Dpx%2Bv%2B1%2B%28z-k%29%5Cn602IF%20l%24%3D%5C%22N%5C%22%20THEN%20f%3Dpx%2Bv%2Bk%5Cn610IF%20l%24%3D%5C%22E%5C%22%20OR%20l%24%3D%5C%22W%5C%22%20THEN%20f%3Dpx%2B%28t*a%29%5Cn615IF%20l%24%3D%5C%22E%5C%22%20THEN%20e%3Dpy%2Bv%2Bk%5Cn620IF%20l%24%3D%5C%22W%5C%22%20THEN%20e%3Dpy-v%2B1%2B%28z-k%29%5Cn630IF%20f%3Em-1%20OR%20f%3C1%20THEN%20fe%3D1%20ELSE%20fe%3D0%5Cn640IF%20e%3Em-1%20OR%20e%3C1%20THEN%20ee%3D1%20ELSE%20ee%3D0%5Cn650IF%20fe%3D0%20AND%20ee%3D0%20THEN%20el%24%3Dg%24%28f%2Ce%29%20ELSE%20el%24%3D%5C%221%5C%22%5Cn670ep%3D%28k-0.5%29*u%5Cn710IF%20el%24%3D%5C%221%5C%22%20THEN%20PROCmt%28ep%2Cw%2C%281%2Ft%29*1.5%29%5Cn720IF%20el%24%3D%5C%222%5C%22%20THEN%20PROCtr%28ep%2Cw%2C%281%2Ft%29*15%29%5Cn725IF%20el%24%3D%5C%223%5C%22%20THEN%20PROCtw%28ep%2Cw%2C%281%2Ft%29*3%29%5Cn740NEXT%2C%5Cn760ENDPROC%5Cn770DEF%20PROCm%28l%24%29%5Cn780a%3D0%3Ab%3D0%5Cn790IF%20l%24%3D%5C%22N%5C%22%20THEN%20b%3D-1%5Cn810IF%20l%24%3D%5C%22E%5C%22%20THEN%20a%3D1%5Cn830IF%20l%24%3D%5C%22S%5C%22%20THEN%20b%3D1%5Cn850IF%20l%24%3D%5C%22W%5C%22%20THEN%20a%3D-1%5Cn870IF%20px%2Ba%3C1%20OR%20px%2Ba%3E15%20OR%20py%2Bb%3C1%20OR%20py%2Bb%3E15%20THEN%20PRINT%20%5C%22!%5C%22%20ELSE%20px%3Dpx%2Ba%3Apy%3Dpy%2Bb%5Cn880ENDPROC%5Cn890DEF%20PROCmt%28mx%2Csy%2Cs%29%5Cn900GCOL%200%2C1%5Cn910FOR%20M%3D0%20TO%201%5Cn920GCOL%200%2C1-M%3AZ%3Dsy-4*M%5Cn940FOR%20L%3D1%20TO%203%5Cn950A%3Dmx-150*s%2BL*100*s%5Cn960MOVE%20A%2B%28r%28L%29*s%29%2B60*s%2CZ%2B106*s-%28r%28L%2B1%29%29*s%3AMOVE%20A%2CZ%3APLOT%2081%2C200*s%2C0%5Cn990NEXT%2C%5Cn1010ENDPROC%5Cn1020DEF%20PROCtr%28x%2Ch%2Cs%29%5Cn1030GCOL%200%2C0%5Cn1040Y%3Dh%2Bs*4%3AW%3Ds%5Cn1050FOR%20B%3D1%20TO%206%5Cn1060GCOL%200%2C1%3AMOVE%20x-W%2CY%3AMOVE%20x%2CY%2Bs*2%3APLOT%2085%2Cx%2BW%2CY%3AW%3DW*1.3%3AY%3DY-s%3AGCOL%2032%2C0%3APLOT%2085%2Cx%2BW%2F10%2CY%2Bs*2%5Cn1110NEXT%5Cn1120ENDPROC%5Cn1130DEF%20PROCs%5Cn1140PRINT%5C%22%C4%91%C6%82%C4%8C%C4%93%C4%83%C4%86%C4%80%C4%80%C4%80%C4%93%C4%82%C4%84%C4%80%C4%80%C4%80%C4%93%C4%81%C4%80%C4%80%C4%80%C4%80%C4%93%C4%80%C4%87%C4%80%C4%80%C4%80%C4%85%5C%22%3AC%24%3D%5C%22%C4%80%C4%83%40%C4%80%C4%80%C4%820%C4%80%20%C4%80%C4%90%C4%80%C4%80%C4%81%C4%80%C4%81%5C%22%5Cn1160FOR%20Y%3D0%20TO%207%3APRINT%5C%22%C4%92%5C%22%3BMID%24%28C%24%2C1%2BY*2%2C2%29%3AMOVE0%2CH%2BY*50%3APLOT97%2C1280%2C50%3ANEXT%3AVDU%204%5Cn1220ENDPROC%5Cn1230DEF%20PROCtw%28x%2Cy%2Cs%29%5Cn1240GCOL%200%2C0%3Abw%3D20*s%3Ath%3D50*s%3Ach%3D15*s%3Acw%3D30*s%3Aww%3D3*s%3Awh%3D2*s%3Aws%3Dcw%2F4%5Cn1260MOVE%20x%2Cy%3APLOT%20101%2Cx%2Bbw%2Cy%2Bth%3AGCOL%200%2C1%3ADRAW%20x%2Bbw%2Cy%3AMOVE%20x%2Cy%3ADRAW%20x%2Cy%2Bth%5Cn1280GCOL%200%2C0%3AMOVE%20x%2Bbw%2F2-cw%2F2%2Cy%2Bth%3APLOT%20101%2Cx%2Bbw%2F2%2Bcw%2F2%2Cy%2Bth%2Bch%3AGCOL%200%2C1%5Cn1300MOVE%20x%2Bbw%2F2-cw%2F2%2Cy%2Bth%3ADRAW%20x%2Bbw%2F2%2Bcw%2F2%2Cy%2Bth%3AMOVE%20x%2Bbw%2F2-cw%2F2%2Cy%2Bth%2Bch%3ADRAW%20x%2Bbw%2F2%2Bcw%2F2%2Cy%2Bth%2Bch%3AMOVE%20x%2Bbw%2F6%2Cy%3AGCOL%2032%2C0%5Cn1430ENDPROC%5Cn1440DEF%20PROCD%5Cn1450PRINT%5C%22%C4%92%C4%80%C4%81%C4%99%C4%84T%C4%80p%C4%81%C4%99%C4%84%28%C4%80%C4%98%C4%81%C4%99Ud%C4%80%60%C4%81%C4%99U%C6%8C%C4%80L%C4%81%C4%99Ul%C4%80p%C4%81%C4%99%C4%84%C3%88%C4%800%C4%81%C4%99%C4%84%C3%88%C4%80P%C4%81%C4%99U%C6%8C%C4%800%C4%81%C4%99U%C6%8C%C4%80L%C4%81%C4%99U%C6%8C%C4%800%C4%81%C4%99Ud%C4%80%20%C4%81%C4%99U%C2%B8%C4%80%C4%98%C4%81%C4%99U%C2%B8%C4%80%C4%88%C4%81%C4%99%C4%84%C6%8C%C4%80L%C4%81%C4%99%C4%84d%C4%80%20%C4%81%C4%99U%28%C4%80%C4%98%C4%81%C4%99UX%C4%80%C4%90%C4%81%C4%99U%28%C4%80%C4%98%C4%81%C4%99Ul%C4%80%C3%A0%C4%80%C4%99U%28%C4%80%C4%98%C4%81%C4%99Ut%C4%80X%C4%80%C4%99U%40%C4%80%C3%90%C4%80%C4%99UD%C4%80L%C4%80%C4%99U%40%C4%80%C3%90%C4%80%C4%99U%28%C4%804%C4%80%C4%99U%C4%80%C4%80%C4%80%C4%80%C4%99U%40%C4%80%C4%80%C4%80%C4%99%C4%84%C3%A0%C4%80%C3%AC%C4%80%C4%99%C4%84%C6%98%C4%80%C4%88%C4%81%C4%99U%C3%B4%C4%80%C2%B4%C4%80%C4%99U%C3%8C%C4%80%C2%B8%C4%80%C4%99U%C3%B8%C4%80x%C4%80%C4%99%C4%84%C3%8C%C4%80%5C%22%3B%5Cn1460PRINT%20%5C%22%C2%B8%C4%80%C4%99%C4%84%C6%98%C4%80%C4%88%C4%81%C4%99U%C6%98%C4%80%C2%AC%C4%80%C4%99Ul%C4%80%C3%A0%C4%80%C4%99U%C6%98%C4%80%C2%AC%C4%80%C4%99Ut%C4%80X%C4%80%C4%99U%C6%94%C4%80%7C%C4%80%C4%99Ut%C4%80X%C4%80%C4%99U%C3%80%C4%80%C4%80%C4%80%C4%99U%C6%90%C4%800%C4%80%C4%99U%C6%88%C4%80%C4%80%C4%80%C4%99%C4%84%C3%B0%C4%80p%C4%80%C4%99%C4%84%C6%98%C4%80%C2%AC%C4%80%C4%99U%C3%B0%C4%80D%C4%80%C4%99U%C6%94%C4%80%7C%C4%80%C4%99U%C3%84%C4%80%C4%98%C4%80%C4%99%C4%84%C6%84%C4%80%28%C4%80%C4%99%C4%84t%C4%80X%C4%80%C4%99U%5C%5C%C4%800%C4%80%C4%99UD%C4%80L%C4%80%C4%99UL%C4%80%C4%90%C4%80%C4%99U4%C4%800%C4%80%C4%99%C4%84%C4%88%C4%80%C2%A0%C4%80%C4%99%C4%84%C4%84%C4%80%C3%BC%C4%80%C4%99U%C4%98%C4%80h%C4%80%C4%99U%C4%94%C4%80%C4%88%C4%81%C4%99U0%C4%80%C7%A0%C4%80%C4%99U%C4%98%C4%80h%C4%80%C4%99U8%C4%80%C7%88%C4%80%C4%92%C4%80%C4%80%C4%99%C4%84p%C4%80H%C4%81%C4%99%C4%84p%C4%80%3C%C4%81%C4%99Ut%C4%80H%C4%81%C4%99Ut%C4%80%3C%C4%81%5C%22%3B%5Cn1470ENDPROC%22%7D\">final version<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"817\" src=\"https:\/\/retrorendezvous.org\/wp-content\/uploads\/2024\/02\/FoundTheDragon-1024x817.jpg\" alt=\"\" class=\"wp-image-378\" srcset=\"https:\/\/retrorendezvous.org\/wp-content\/uploads\/2024\/02\/FoundTheDragon-1024x817.jpg 1024w, https:\/\/retrorendezvous.org\/wp-content\/uploads\/2024\/02\/FoundTheDragon-655x523.jpg 655w, https:\/\/retrorendezvous.org\/wp-content\/uploads\/2024\/02\/FoundTheDragon-300x239.jpg 300w, https:\/\/retrorendezvous.org\/wp-content\/uploads\/2024\/02\/FoundTheDragon-768x613.jpg 768w, https:\/\/retrorendezvous.org\/wp-content\/uploads\/2024\/02\/FoundTheDragon.jpg 1516w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>The Lords of Midnight was a popular and epic graphic adventure game by Mike Singleton for the ZX Spectrum (and other platforms &#8211; but not for the Beeb) originally released [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":293,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","_price":"","_stock":"","_tribe_ticket_header":"","_tribe_default_ticket_provider":"","_tribe_ticket_capacity":"0","_ticket_start_date":"","_ticket_end_date":"","_tribe_ticket_show_description":"","_tribe_ticket_show_not_going":false,"_tribe_ticket_use_global_stock":"","_tribe_ticket_global_stock_level":"","_global_stock_mode":"","_global_stock_cap":"","_tribe_rsvp_for_event":"","_tribe_ticket_going_count":"","_tribe_ticket_not_going_count":"","_tribe_tickets_list":"[]","_tribe_ticket_has_attendee_info_fields":false,"footnotes":""},"categories":[27],"tags":[31],"class_list":["post-294","post","type-post","status-publish","format-standard","has-post-thumbnail","category-basic-programming","tag-graphics","entry"],"featured_image_src":"https:\/\/retrorendezvous.org\/wp-content\/uploads\/2023\/12\/ScaledGraphics-600x400.jpg","featured_image_src_square":"https:\/\/retrorendezvous.org\/wp-content\/uploads\/2023\/12\/ScaledGraphics-600x600.jpg","author_info":{"display_name":"Paul Bussey","author_link":"https:\/\/retrorendezvous.org\/index.php\/author\/paul-admin\/"},"_links":{"self":[{"href":"https:\/\/retrorendezvous.org\/index.php\/wp-json\/wp\/v2\/posts\/294","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/retrorendezvous.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/retrorendezvous.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/retrorendezvous.org\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/retrorendezvous.org\/index.php\/wp-json\/wp\/v2\/comments?post=294"}],"version-history":[{"count":4,"href":"https:\/\/retrorendezvous.org\/index.php\/wp-json\/wp\/v2\/posts\/294\/revisions"}],"predecessor-version":[{"id":394,"href":"https:\/\/retrorendezvous.org\/index.php\/wp-json\/wp\/v2\/posts\/294\/revisions\/394"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/retrorendezvous.org\/index.php\/wp-json\/wp\/v2\/media\/293"}],"wp:attachment":[{"href":"https:\/\/retrorendezvous.org\/index.php\/wp-json\/wp\/v2\/media?parent=294"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/retrorendezvous.org\/index.php\/wp-json\/wp\/v2\/categories?post=294"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/retrorendezvous.org\/index.php\/wp-json\/wp\/v2\/tags?post=294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}