From 5fa83c9790af43eb98e08504d03e7a547df098ff Mon Sep 17 00:00:00 2001 From: Willems Davy Date: Mon, 10 Jun 2024 02:19:49 +0200 Subject: [PATCH] Add Waternet Game by Willems Davy / joyrider3774 --- site/static/carts/waternet.md | 51 ++++++++++++++++++++++++++++++++ site/static/carts/waternet.png | Bin 0 -> 2660 bytes site/static/carts/waternet.wasm | Bin 0 -> 25198 bytes 3 files changed, 51 insertions(+) create mode 100644 site/static/carts/waternet.md create mode 100644 site/static/carts/waternet.png create mode 100644 site/static/carts/waternet.wasm diff --git a/site/static/carts/waternet.md b/site/static/carts/waternet.md new file mode 100644 index 00000000..a91272a8 --- /dev/null +++ b/site/static/carts/waternet.md @@ -0,0 +1,51 @@ +--- +author: Davy Willems +github: joyrider3774 +date: 2024-06-10 +--- + +# Waternet + +This is the WASM-4 version of my Waternet game which is a multiplatform puzzle game initially written for old consoles and handhelds like Game Boy (Color), Game Gear, Master System, Analogue Pocket and Mega Duck using the gbdk sdk. This a port with many changes to make it work for WASM-4 + +## Controls + +| Button | Action | +|--------|--------------------------------------------------------------------------| +| A | Confirm in menu and level selector, rotate or slide action while playing | +| B | Back in menu, level selector and game | + +## Game Modes +The aim of the game, in any game mode is always to connect all pipes so that water can flow through them from the water point source. How you can accomplish this depends on the game mode. The game has a help section in the main menu where you can always check up on the rules of each game mode. + +### Rotate Mode + +You need to connect all the pipes so water flows through them, by pressing the A button on a pipe, to rotate the single pipe. + +### Slide Mode + +You need to connect all the pipes so water flows through them, by pressing the A on the arrows of a row or column. The row or column will move all pipes in the direction the arrow is pointing at. + +### Roslid Mode + +You need to connect all the pipes so water flows through them, by pressing the A on the arrows of a row or column. The row or column will move all pipes in the direction the arrow is pointing at. You can also press the A button on a pipe, to rotate the single pipe. This is a combination Rotate and Slide mode. + +## Graphics +Graphics (tiles), i converted using the [Gimp Image Editor](https://www.gimp.org/) and the [Gimp tilemap gb plugin](https://github.com/bbbbbr/gimp-tilemap-gb) from the gameboy tiles created in [Game Boy Tile Designer](http://www.devrs.com/gb/hmgd/gbtd.html) and the titlescreen graphic is based on a modified title screen image from my waternet game i made for [gp2x](https://www.willemssoft.be/index.php?main=5&sub=6&action=productdetails&id=218) and [windows](https://www.willemssoft.be/index.php?main=46&sub=7&action=productdetails&id=220). I designed the title screen in the [Gimp Image Editor](https://www.gimp.org/) to just have the word waternet and the waterdrop. + +## Sound + +Sound are just simple tones that play quickly + +## Music +Music was made using [Online Sequencer](https://onlinesequencer.net/), i created single channel, non mixed music files and later converted this music to an array storing the frequencies of notes to be used on WASM-4. I got [this idea](https://www.gamedeveloper.com/programming/making-a-game-boy-game-in-2017-a-quot-sheep-it-up-quot-post-mortem-part-2-2-) from the [sheep it up](https://gamejolt.com/games/sheepitup/267335) game developed by Dr. Ludos. He stored the frequencies to be used for the music notes in a array. So i used the same system and all i had todo was convert the music from onlinesequencer i made to such array (by hand) as well. + +You can find the music files i used for the game below: + +* Game Music: [https://onlinesequencer.net/2485064](https://onlinesequencer.net/2485064) +* Title Music: [https://onlinesequencer.net/2484977](https://onlinesequencer.net/2484977) +* Level Done Tune: [https://onlinesequencer.net/2484974](https://onlinesequencer.net/2484974) + +## Credits +Waternet game concept is based on the Net and Netslide game from the [Simon Tatham's Portable Puzzle Collection](https://www.chiark.greenend.org.uk/~sgtatham/puzzles/), +it's my own implementation of these 2 game concepts mixed into one game diff --git a/site/static/carts/waternet.png b/site/static/carts/waternet.png new file mode 100644 index 0000000000000000000000000000000000000000..00e8e98672f9663f0360dca59e280ed8f8f4e944 GIT binary patch literal 2660 zcmcIm`9BkkAKx(3gG8c7Oyo%9$a3Una%H(kuI0!>%599Xwo(!~5~0y3Oc+hiqg>+= zB3kZp?0M#Du5FHn(O2L9;QPb(htKtXeSY}7Kd<-e_4%Yb!EHo;llct*0EpVz!dwnx z*)J2~JM;pzEc9Uj#<dN^+nQ5^qIdu{QgSy93Le^ zP$-%heyR6&bh#RCvFd_yu9=#t_X4>l;9Ng?_wUjQ+xE7W_I7_}X^Rod1-sF?&kh0^ z=+E+%ltchEJ0?-5cQ*3HG&}kZ6GlErnm%Wg&0~MW2}g3|Y!4EGsUU-$qe`hQjdZ?} zWN@yTpI4+Yy~pZQ**_n>v)bRjwVs7ZNZiK(7Bu$uSBFP%_t*>t^$t}?z%f>!(yoC@@OyQc z?d|<OA083X>d=-Rm#XKJMQajCS(zxRw42BCV_1P1qBV&u_Raw% z*J^w>*W&=vWV5{dcfEEo%;r3y*d}}Fa%H#w4S64|q4%tSHk)tosodWeuA$8}2(niK z*khW!ww#92#F8=6+5KH{qqbC&!VF?W{7eD323xJlorEg(X31y?ed)PX_YTgnxJ{@9 z)R=`fA6b5lqLslafse|RQM8afq^1}F_hS#alXj1XfF-0)M1K`N$Kysh5&L)vDGljj zDwE`4a4E*tFx347B=+vuj<}IvI~ucW>Nqr3%gtVVP4lfuff8CTr^%mDs zCF=x)zS6)yF29v9zV;(g)*l(iM-DfYwOA@**x)!!JplaM89BMKEqEe zqC5^#;)>b=@G{9Wt21j#b+^7+cVHN2xb}idbn}i`zz1dY0Dj&fxnclo&UaI+)2)r( zFPXBPAvu$DaV%gN-DWu;H#BI>4Htn2*@~q#MiI^Rm8$8i4O#;8k zg3?tssuFbzB;oYs$fJ7#ras7q!+d+4LRH%~yi2U6i^A3$--IMJ~5otg+ z9my^(EeQi+#^N|QcI@ig^Y-lV{ z=ej*HuxT?jgl%D#%|k_oUY&g`y5qqr9K#ZdkSvx1)@&g^ON|=4Ker*g*hjEPx!*AQ z$Vr!;S*<3v*fuq~+398UBGB1cANP!l1Wt_TOCyIS6NHdMmRI*44THTme3!XZi%on- z`|#yb@)w45feTX=WO2~MGZn+4<-bV$396AI%P|o0I{Z^{*D_V%sq{s=lgLO5q=Hv1 z1Lt44@CnK8k__@1k7sg?>|&GBD)}Fk$t5+ygKrc~i51@63cG$%R%@~TX!=51!ObIz zj6A@Hb>jNA%*%$b*pe3q|8}C1R9m+0>mC)*JquUa^Oj%Pq%Qkw44sCKTjvW`N|i{l z*pyyFlT)iYKTWYYCU#5sp$|UT^7si2+Eh~G2as3)5oC;<8syQe<-$Ll@Qb~dOds6* z*2AH$hW^GbGS+|^`-T>Ub5ToE=GrxD zp;1?p<@KdcK|EOn{SOo*KFK|)1k0vKe`#5BE) zi;IvwTw@623MK13Db|6)G_|NkjH@9^a{=*OdNu|2@-G9xpKi?$a7e-9ce_;^Q>LDQ zZElssHIK2Kmy^*Q&WYqWtJ;p&jM`^S$(VMx5)6o3m z(tY^N5Fn=-&_j1?1EW%zeH=Ppxbm&FKFdK)kL;T! z7{ins*lD!uITtc3qYbe?{diZWr-DNb?qMj*$VA$0?&eHiBML`GcO2etMp~`%JAf+K zN8-89e=%iR-~S4X-58KDo4zwqx_CF7^Z4y#c6wN@391aR-lrVy4l)Q=|4~x)|0|Zv YGA^jD-1?c|diXX1?5yFiI!h$(KNv|WGXMYp literal 0 HcmV?d00001 diff --git a/site/static/carts/waternet.wasm b/site/static/carts/waternet.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6970574f46309b5efeae26f0a0aaf31365e6b31b GIT binary patch literal 25198 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