minsoft [Lexaloffle Blog Feed]https://www.lexaloffle.com/bbs/?uid=15648 Raspberry Pi 4 <p>Has anyone got Pico-8 working on Raspberry Pi 4? Specifically under Raspbian Buster, console/terminal mode?</p> <p>I've got it running in the Desktop, but there are graphics issues (tearing, non-smooth scrolling) so want to run it from the console. I have done this in the past on Pi 1/3, but am having trouble with the Pi 4...</p> <p>Launching Pico-8 give me the following error:</p> <div> <div class=scrollable_with_touch style="width:100%; max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre> SDL Error: Could not create EGL window surface ** FATAL ERROR: Unable to create window (SDL restoring keyboard) Segmentation fault </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>(pico8_dyn gives the same error)</p> <p>Anyone know what I need to do?</p> https://www.lexaloffle.com/bbs/?tid=35027 https://www.lexaloffle.com/bbs/?tid=35027 Sun, 11 Aug 2019 16:50:39 UTC Tube Runner <p> <table><tr><td> <a href="/bbs/?pid=49306#p"> <img src="/bbs/thumbs/pico49305.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=49306#p"> Tube Runner 1.0</a><br><br> by <a href="/bbs/?uid=15648"> minsoft</a> <br><br><br> <a href="/bbs/?pid=49306#p"> [Click to Play]</a> </td></tr></table> </p> <p><strong>Gameplay</strong></p> <p>Fly through the tunnel as fast as possible avoiding the walls. The tunnel is divided in to Zones, with four Quadrants per zone. Each zone is progressively longer and more difficult than the previous, with sharper turns, more turns, and narrower sections.</p> <p>Each quadrant has a time limit - note that this is not the time limit that the quadrant must be completed in, but the time until your ships engine power is cut (T+ engine shut-off). Engine power is required for anti-gravity and maneuvering as well as propulsion...ie if the time runs out your hope lies in gliding (or sliding!) to the finish. As quadrants advance, the time limit becomes stricter. Note that your progress in the quadrant is indicated by the right hand HUD gauge.</p> <p>Hitting walls will slow you down, and reduce the energy of the ship (indicated by gauge on left hand side of HUD). Energy will be slowly replenished during the period of flying through the 'safe section' at the end of each ZONE (grey section with orange stripes). If energy becomes fully depleted the ship will fail and you will lose a life. Similarly, failure to complete a quadrant in time will cost a life. You begin the game with three lives, indicated by the three red lights on the left hand side of the dashboard.</p> <p>Points are continuously awarded for progress, with a bonus for completing each quadrant (unless T+ shutdown occurs). Additional ships can be unlocked by making progress in the game. Faster ships will yield higher scores than slower ones.</p> <img style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/files/15648/tr1502_0.gif" width=256 height=256 alt="" /> <p><strong>Controls</strong></p> <p>Insert Coin = Up / GPIO input (defaults to free play so not required!)<br /> U/D - pitch<br /> L/R - roll<br /> (O)/(X) - yaw<br /> (O)+(X) - brake</p> <p><strong>Tips</strong></p> <ul> <li>Learn to use the controls! You will need to use and know when to use roll and yaw most effectively.</li> <li>Brake just before / during the 'charge section' at the end of each zone (grey section with orange stripes) to have more time to charge energy.</li> <li>Aside from the above, don't brake!</li> </ul> <p><strong>DIP Switches (menu items)</strong></p> <p>NOTE altering these will reset game!</p> <p>RESET PROGRESS<br /> CREDITS: FREE (default) / UP / GPIO<br /> GPIO OUTPUTS: OFF (default) / ON </p> <p><strong>GPIO Input / Outputs</strong></p> <p>IMPORTANT: GPIO pins are referred to by Raspberry Pi 'WiringPi' standards. See below for WiringPi configuration.</p> <p>DISCLAIMER: I will not be responsible for damaging your device. Please do not enable GPIO settings, or connect anything to GPIO pins to anything if you are unsure what you are doing!</p> <div> <div class=scrollable_with_touch style="width:100%; max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre> --- MINSOFT GPIO STANDARD --- PIN TYPE SETTING FUNCTION DETAILS 0 INPUT (PULL UP) CREDITS: GPIO Credit switch Connect switch between pin and ground (via optional resistor, eg 1k ohm) 1 OUTPUT GPIO OUTPUTS: ON Start/Warning LED Connect LED between pin and ground (via suitable resistor, eg 220 ohm) 2 OUTPUT GPIO OUTPUTS: ON Start/Warning LED Connect LED between pin and ground (via suitable resistor, eg 220 ohm) 3 OUTPUT GPIO OUTPUTS: ON Vibration motor Connect motor via suitable circuit (eg http://playground.arduino.cc/uploads/Learning/solenoid_driver.pdf) 4 OUTPUT N/A N/A N/A </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p><strong>WiringPi Configuration:</strong></p> <div> <div class=scrollable_with_touch style="width:100%; max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre> //set pin 0 as input, pull up (COIN) gpio mode 0 in gpio mode 0 up //set pins 1-4 as outputs gpio mode 1 out gpio mode 2 out gpio mode 3 out gpio mode 4 out </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> https://www.lexaloffle.com/bbs/?tid=30776 https://www.lexaloffle.com/bbs/?tid=30776 Thu, 15 Feb 2018 14:24:24 UTC Cosmo Boing Deluxe <p> <table><tr><td> <a href="/bbs/?pid=47371#p"> <img src="/bbs/thumbs/pico47369.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=47371#p"> Cosmo Boing Deluxe 1.0</a><br><br> by <a href="/bbs/?uid=15648"> minsoft</a> <br><br><br> <a href="/bbs/?pid=47371#p"> [Click to Play]</a> </td></tr></table> </p> <p><strong>Introduction</strong></p> <p>After receiving feedback on 'Cosmo Boing!' from operators and players during location testing in select arcades, minsoft is pleased to announce the release of...'Cosmo Boing Deluxe'!</p> <img style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/files/15648/cbd.gif" width=256 height=256 alt="" /> <p><strong>Gameplay</strong></p> <p>Bounce to the finish line, avoiding gaps and holes using the direction tiles to your advantage, in this action puzzler for 1 or 2 players.</p> <img style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/files/15648/cbdrc6_0.gif" width=256 height=256 alt="" /> <p><strong>Controls</strong></p> <p>Insert Coin = Up / GPIO input (defaults to free play so not required!)<br /> Move Left / Right = Left / Right<br /> Start Game / Jump = Z or X (Shift or A for player 2)</p> <p><strong>DIP Switches (menu items)</strong></p> <p>RESET HISCORE<br /> CREDITS: FREE (default) / UP / GPIO }<br /> GPIO OUTPUTS: OFF (default) / ON } NOTE altering these will reset game!<br /> ATTRACT SFX: ALL (default) / SFX / MUS / NONE }</p> <p><strong>Scoring</strong></p> <p>Direction tile: 1 point<br /> Consecutive direction tiles (combo): 5 points per tile, plus 25 bonus for every 5 tile combo.<br /> Level clear: amount varies depending on level difficulty, zeroed when a life is lost. Additional bonus for leftover jumps (over initial amount).</p> <p>Bonus lives are awarded every 3000 points.</p> <p><strong>Power-Ups (green animated icons)</strong></p> <p>Bonus jump (flashing dot)<br /> Bonus life (bouncing ball)<br /> Super jump (green up arrow)<br /> Fill 20 gaps (rotating square)</p> <p><strong>Tips</strong></p> <p>Watch as far ahead as you can - it might save you from reaching a dead end.<br /> When you die, remember where you went wrong and pick a better route next life.<br /> Jumps are precious - don't press jump button unless you have to.<br /> 'Combos' earn jumps - be on the lookout for potential combos.<br /> Pressing jump on an 'up' arrow does a long jump - this can be useful!<br /> Stage 10 of each planet will have an extra life - try to collect it!</p> <hr /> <p><strong>WHAT'S NEW (over Cosmo Boing):</strong></p> <p>Gameplay</p> <p>Pressing Jump on 'up' arrow tile will now do a long jump (jump over 2 tiles).<br /> Jumps (in addition to points) can now be earned by using combos. Note jumps are earned in fractions (tenths).<br /> Player ball 'bounces' off screen boundary (previously just stopped).<br /> 'Hole' tiles now individually vibrate before degenerating, giving player more chance to avoid them.<br /> New power-up which will fill in 20 gaps with safe tiles (persists after death).</p> <p>Levels &amp; Scoring</p> <p>Levels divided into 5 planets, 10 stages per planet.<br /> Steeper difficulty curve - levels are harder from the start.<br /> No. starting jumps is dependant on level difficulty (previously always 3).<br /> Point no longer scored for hitting a normal safe tile.<br /> Bonus point power-up removed.<br /> End of level bonus no longer reduced for using jumps.<br /> Additional end of level bonus for leftover jumps (50 each over starting count).<br /> Bonus lives now awarded every 3000 points (previously 1000, then every 2000).</p> <p>Cosmetic</p> <p>'Deluxe' title screen.<br /> Attract mode now features instruction screens.<br /> Progress bar moved to bottom of screen (previously on left hand side), and colour (red/orange/green) indicates progress.<br /> 'Combo gauge' removed to increase map visibility - combo count &amp; score now indicated on tiles hit.<br /> Jump icons replaced with jump gauge indicating no. jumps: available (in player colour), and potential (flashing red) while mid-combo.</p> <p>Other</p> <p>Runs at 60 frames per second.<br /> New, original music.<br /> SFX tweaked.<br /> GPIO input/outputs for credit switch, player LEDs, and vibration motor/solenoid feedback (SEE GPIO SECTION).<br /> Added 'CREDITS', 'GPIO OUTPUTS' &amp; 'ATTRACT SFX' DIP switches.</p> <hr /> <p><strong>GPIO Input / Outputs</strong></p> <p>IMPORTANT: GPIO pins are referred to by Raspberry Pi 'WiringPi' standards. See below for WiringPi configuration.</p> <p>DISCLAIMER: I will not be responsible for damaging your device. Please do not enable GPIO settings, or connect anything to GPIO pins to anything if you are unsure what you are doing!</p> <div> <div class=scrollable_with_touch style="width:100%; max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre> --- MINSOFT GPIO STANDARD --- PIN TYPE SETTING FUNCTION DETAILS 0 INPUT (PULL UP) CREDITS: GPIO Credit switch Connect switch between pin and ground (via optional resistor, eg 1k ohm) 1 OUTPUT GPIO OUTPUTS: ON 1UP Start/Warning LED Connect LED between pin and ground (via suitable resistor, eg 220 ohm) 2 OUTPUT GPIO OUTPUTS: ON 2UP Start/Warning LED Connect LED between pin and ground (via suitable resistor, eg 220 ohm) 3 OUTPUT GPIO OUTPUTS: ON Vibration motor Connect motor via suitable circuit (eg http://playground.arduino.cc/uploads/Learning/solenoid_driver.pdf) 4 OUTPUT GPIO OUTPUTS: ON Solenoid Connect solenoid via suitable circuit (eg http://playground.arduino.cc/uploads/Learning/solenoid_driver.pdf) </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>NB solenoid operates after player death, ala Q*Bert</p> <p><strong>WiringPi Configuration</strong></p> <div> <div class=scrollable_with_touch style="width:100%; max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre> //set pin 0 as input, pull up (COIN) gpio mode 0 in gpio mode 0 up //set pins 1-4 as outputs gpio mode 1 out gpio mode 2 out gpio mode 3 out gpio mode 4 out </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> https://www.lexaloffle.com/bbs/?tid=30443 https://www.lexaloffle.com/bbs/?tid=30443 Thu, 14 Dec 2017 09:05:02 UTC Tie Hunt <p> <table><tr><td> <a href="/bbs/?pid=46691#p"> <img src="/bbs/thumbs/pico46690.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=46691#p"> Tie Hunt 1.0</a><br><br> by <a href="/bbs/?uid=15648"> minsoft</a> <br><br><br> <a href="/bbs/?pid=46691#p"> [Click to Play]</a> </td></tr></table> </p> <p><strong>Introduction</strong></p> <p>This is my homage to Owen Rubin's wonderful 1979 arcade game Tunnel Hunt, which features eye-wateringly fast psychedelic visuals and ominous sound. I have tried to retain the key elements of the game as best as I can (given smaller palette and lack of analog joystick), while adding a few variations to enhance to experience...</p> <img style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/files/15648/tiehunt_attract.gif" width=256 height=256 alt="" /> <p><strong>Gameplay</strong></p> <p>Hurtle through the tunnel blasting anything in your path. Your craft will increase speed over time, but hitting walls will slow it down (while also heating the hull). You can use this to your advantage, but overheating the hull will result in death!</p> <p>Lasers will also overheat if used too much, which will disable them for a time until sufficiently cooled. Shields can be activated to defend against enemy craft or fire (plasma balls), but will be reduced in power as a result. Shooting plasma balls will charge your shields fractionally (as well as award 50 points).</p> <p>There are four different types of enemy, which will require 1,2,5 or 10 shots to destroy. Points will be awarded based on the type of enemy destroyed, the time taken to destroy it, and enemy hostility (this increases over time). A bonus life will be awarded after 10,000 points, and every 30,000 points thereafter.</p> <img style="margin-bottom:16px" border=0 src="https://www.lexaloffle.com/bbs/files/15648/tiehunt_game.gif" width=256 height=256 alt="" /> <p><strong>Controls</strong></p> <p>Insert Coin = Up / GPIO input (defaults to free play so not required!)<br /> U/D/L/R - controls ship<br /> (O) / Z - shield<br /> (X) / X - laser</p> <p><strong>DIP Switches (menu items)</strong></p> <p>RESET HISCORE<br /> CREDITS: FREE (default) / UP / GPIO }<br /> GPIO OUTPUTS: OFF (default) / ON } NOTE altering these will reset game!<br /> ATTRACT SFX: OFF / ON (default) }<br /> Y-AXIS: NORMAL (default) / INVERT</p> <p><strong>GPIO Input / Outputs</strong></p> <p>IMPORTANT: GPIO pins are referred to by Raspberry Pi 'WiringPi' standards. See below for WiringPi configuration.</p> <p>DISCLAIMER: I will not be responsible for damaging your device. Please do not enable GPIO settings, or connect anything to GPIO pins to anything if you are unsure what you are doing!</p> <div> <div class=scrollable_with_touch style="width:100%; max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre> --- MINSOFT GPIO STANDARD --- PIN TYPE SETTING FUNCTION DETAILS 0 INPUT (PULL UP) CREDITS: GPIO Credit switch Connect switch between pin and ground (via optional resistor, eg 1k ohm) 1 OUTPUT GPIO OUTPUTS: ON Start/Warning LED Connect LED between pin and ground (via suitable resistor, eg 220 ohm) 2 OUTPUT GPIO OUTPUTS: ON Start/Warning LED Connect LED between pin and ground (via suitable resistor, eg 220 ohm) 3 OUTPUT GPIO OUTPUTS: ON Vibration motor Connect motor via suitable circuit (eg http://playground.arduino.cc/uploads/Learning/solenoid_driver.pdf) 4 OUTPUT N/A N/A N/A </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p><strong>WiringPi Configuration</strong></p> <div> <div class=scrollable_with_touch style="width:100%; max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre> //set pin 0 as input, pull up (COIN) gpio mode 0 in gpio mode 0 up //set pins 1-3 as outputs gpio mode 1 out gpio mode 2 out gpio mode 3 out </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> https://www.lexaloffle.com/bbs/?tid=30318 https://www.lexaloffle.com/bbs/?tid=30318 Sat, 25 Nov 2017 10:58:43 UTC Is SFX playing in channel x? [SOLVED] <p>Is there a way to tell what SFX is playing in a given channel? Or even just whether the channel is currently in use? I guess there might be a way to POKE for it...</p> https://www.lexaloffle.com/bbs/?tid=30308 https://www.lexaloffle.com/bbs/?tid=30308 Thu, 23 Nov 2017 05:14:54 UTC Cosmo Boing! <p> <table><tr><td> <a href="/bbs/?pid=31955#p"> <img src="/bbs/thumbs/pico31954.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=31955#p"> Cosmo Boing! v1.0</a><br><br> by <a href="/bbs/?uid=15648"> minsoft</a> <br><br><br> <a href="/bbs/?pid=31955#p"> [Click to Play]</a> </td></tr></table> </p> <p>Here is my first Pico-8 game, 'Cosmo Boing!', a fantasy arcade game for one or two players.</p> <p>The aim is simply to guide your ball to the finish line, without falling into a gap. Levels increase in length and difficulty as you progress. Use of 'direction' tiles is possible (and unavoidable), so use them to aid progress. You have 3 'jumps' (per level/life) which you can use to jump gaps or avoid certain tiles - use these wisely!</p> <p>Scoring:</p> <p>Safe tile: 1 point<br /> Direction tile: 2 points<br /> Consecutive direction tiles (combo): 5 points per tile, plus 25 bonus for every 5 tile combo.<br /> Level clear: amount varies depending on level difficulty, reduced by using 'jumps', and zeroed when a life is lost.<br /> Bonus point powerup: amount varies (random).</p> <p>Bonus lives are awarded at 1000 points, and every 2000 points thereafter.</p> <p>Power-Ups (green animated icons):</p> <p>Bonus points<br /> Bonus jump<br /> Bonus life<br /> Super jump</p> <p>Controls:</p> <p>Insert Coin = Up<br /> Move left/right = Left / Right<br /> Jump = X or Z (Shift or A for player 2)</p> <p>Note: when 2 players are active, players are given 5 jumps instead of the usual 3.</p> <p>This has been a fun project, taken me about 5-6 weeks to write (on and off). This is my first game and first Pico-8 project (wasn't even intended to be a game originally) so the code could be better/tidier.</p> <p>Hopefully there aren't any bugs, but please let me know if you find any! I'd also be interested to hear how far you can get. Hope you enjoy!</p> https://www.lexaloffle.com/bbs/?tid=27988 https://www.lexaloffle.com/bbs/?tid=27988 Fri, 28 Oct 2016 09:50:17 UTC Smooth scrolling / dropping frames? <p>I am new to Pico-8 so apologies if I'm missing something...</p> <p>I'm writing a game using the _UPDATE() and _DRAW() functions which scrolls vertically a pixel at a time. It scrolls smoothly most of the time but every now and then it seems to 'stutter' briefly. Note that the sound/music isn't affected.</p> <p>I have tried it on 3 systems and the problem is apparent on all of them, to some degree. From best to worst:</p> <p>Mac i5<br /> Raspberry Pi (1) B<br /> PocketChip</p> <p>I have used STAT(1) to find out CPU usage, and it never goes above 0.38 (on the Mac and Pi at least, I think slightly higher on PocketChip), so I would not expect frames to be dropped. I've put the STAT(1) at the very end of the _DRAW() function - is that the right thing to do?</p> <p>I've noticed slowdown (particularly on PocketChip) on other carts too, but couldn't say what the CPU usage is.</p> <p>Similar thread: <a href="https://www.lexaloffle.com/bbs/?tid=4089">https://www.lexaloffle.com/bbs/?tid=4089</a></p> <p>Any advice appreciated!</p> https://www.lexaloffle.com/bbs/?tid=27777 https://www.lexaloffle.com/bbs/?tid=27777 Fri, 30 Sep 2016 09:59:05 UTC