diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c67754c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+landing
+web.config
+videos/resources
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9fbef6c
--- /dev/null
+++ b/README.md
@@ -0,0 +1,29 @@
+# WiiNet
+
+The Internet Channel, revived
+
+
+## Features
+Right now, WiiNet contains 5 main features.
+1. Games
+ - Play a variety of Web games on the Wii
+ - Many are sourced from BlueMaxima's Flashpoint
+ - Categorised into USB Keyboard, Made for Wii, PC Games and Javascript
+2. Videos
+ - Stream videos from a few content creators
+ - Mainly WiiNet contributors and friends
+ - Get your own channel by pledging to the Patreon
+3. Media
+ - View many old-school Flash animations and media
+ - Get a full screen view by enabling the "press 1 to hide menu" feature in the Internet Channel's settings
+ - Many of them run at full speed, even on the Wii, due to their age
+5. Utilities
+ - A collection of browser-based utilities
+ - Some are Flash-powered, others javascript-based
+ - Things like Calculators and Paint tools
+6. Others
+ - A curated round-up of things that work great on Wii
+ - Webpages either ported to or made for the Internet Channel
+ - Links to other websites that are designed to work on the Wii
+
+That is all for now, stay tuned for more updates on the project by joining the [Discord](https://discord.gg/PBuAbQbrXJ)
diff --git a/credits/index.html b/credits/index.html
new file mode 100644
index 0000000..87047a9
--- /dev/null
+++ b/credits/index.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
Credits
+ Thanks for checking out the WiiNet Demo, and a special thank you to these people:
+
Development Team
+ HighSpeedTurtle - Founder/Lead Developer
+ soafen - Developer/Graphic Designer
+ SketchMaster2001 - Developer/Hosting Partner
+ Snoot Fox - Wii no Ma Assistance/Hosting Partner
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/games/10/games/farm/assets/chicken.swf b/games/10/games/farm/assets/chicken.swf
new file mode 100644
index 0000000..8700a44
Binary files /dev/null and b/games/10/games/farm/assets/chicken.swf differ
diff --git a/games/10/games/farm/assets/cow.swf b/games/10/games/farm/assets/cow.swf
new file mode 100644
index 0000000..3a3b0bf
Binary files /dev/null and b/games/10/games/farm/assets/cow.swf differ
diff --git a/games/10/games/farm/assets/duck.swf b/games/10/games/farm/assets/duck.swf
new file mode 100644
index 0000000..03578e0
Binary files /dev/null and b/games/10/games/farm/assets/duck.swf differ
diff --git a/games/10/games/farm/assets/goat.swf b/games/10/games/farm/assets/goat.swf
new file mode 100644
index 0000000..db3fbe2
Binary files /dev/null and b/games/10/games/farm/assets/goat.swf differ
diff --git a/games/10/games/farm/assets/horse.swf b/games/10/games/farm/assets/horse.swf
new file mode 100644
index 0000000..540c6da
Binary files /dev/null and b/games/10/games/farm/assets/horse.swf differ
diff --git a/games/10/games/farm/assets/mouse.swf b/games/10/games/farm/assets/mouse.swf
new file mode 100644
index 0000000..6d8f268
Binary files /dev/null and b/games/10/games/farm/assets/mouse.swf differ
diff --git a/games/10/games/farm/assets/pig.swf b/games/10/games/farm/assets/pig.swf
new file mode 100644
index 0000000..e7171b4
Binary files /dev/null and b/games/10/games/farm/assets/pig.swf differ
diff --git a/games/10/games/farm/assets/sheep.swf b/games/10/games/farm/assets/sheep.swf
new file mode 100644
index 0000000..b14f795
Binary files /dev/null and b/games/10/games/farm/assets/sheep.swf differ
diff --git a/games/10/games/farm/assets/sound/chicken_noise.mp3 b/games/10/games/farm/assets/sound/chicken_noise.mp3
new file mode 100644
index 0000000..23c83a4
Binary files /dev/null and b/games/10/games/farm/assets/sound/chicken_noise.mp3 differ
diff --git a/games/10/games/farm/assets/sound/chicken_speech.mp3 b/games/10/games/farm/assets/sound/chicken_speech.mp3
new file mode 100644
index 0000000..2bca5ca
Binary files /dev/null and b/games/10/games/farm/assets/sound/chicken_speech.mp3 differ
diff --git a/games/10/games/farm/assets/sound/cow_noise.mp3 b/games/10/games/farm/assets/sound/cow_noise.mp3
new file mode 100644
index 0000000..631b415
Binary files /dev/null and b/games/10/games/farm/assets/sound/cow_noise.mp3 differ
diff --git a/games/10/games/farm/assets/sound/cow_speech.mp3 b/games/10/games/farm/assets/sound/cow_speech.mp3
new file mode 100644
index 0000000..cd641a1
Binary files /dev/null and b/games/10/games/farm/assets/sound/cow_speech.mp3 differ
diff --git a/games/10/games/farm/assets/sound/duck_noise.mp3 b/games/10/games/farm/assets/sound/duck_noise.mp3
new file mode 100644
index 0000000..00eb9de
Binary files /dev/null and b/games/10/games/farm/assets/sound/duck_noise.mp3 differ
diff --git a/games/10/games/farm/assets/sound/duck_speech.mp3 b/games/10/games/farm/assets/sound/duck_speech.mp3
new file mode 100644
index 0000000..5b97590
Binary files /dev/null and b/games/10/games/farm/assets/sound/duck_speech.mp3 differ
diff --git a/games/10/games/farm/assets/sound/goat_noise.mp3 b/games/10/games/farm/assets/sound/goat_noise.mp3
new file mode 100644
index 0000000..f2dab07
Binary files /dev/null and b/games/10/games/farm/assets/sound/goat_noise.mp3 differ
diff --git a/games/10/games/farm/assets/sound/goat_speech.mp3 b/games/10/games/farm/assets/sound/goat_speech.mp3
new file mode 100644
index 0000000..af5eec6
Binary files /dev/null and b/games/10/games/farm/assets/sound/goat_speech.mp3 differ
diff --git a/games/10/games/farm/assets/sound/horse_noise.mp3 b/games/10/games/farm/assets/sound/horse_noise.mp3
new file mode 100644
index 0000000..46ac1cc
Binary files /dev/null and b/games/10/games/farm/assets/sound/horse_noise.mp3 differ
diff --git a/games/10/games/farm/assets/sound/horse_speech.mp3 b/games/10/games/farm/assets/sound/horse_speech.mp3
new file mode 100644
index 0000000..7e98231
Binary files /dev/null and b/games/10/games/farm/assets/sound/horse_speech.mp3 differ
diff --git a/games/10/games/farm/assets/sound/mouse_noise.mp3 b/games/10/games/farm/assets/sound/mouse_noise.mp3
new file mode 100644
index 0000000..3781a83
Binary files /dev/null and b/games/10/games/farm/assets/sound/mouse_noise.mp3 differ
diff --git a/games/10/games/farm/assets/sound/mouse_speech.mp3 b/games/10/games/farm/assets/sound/mouse_speech.mp3
new file mode 100644
index 0000000..6be1673
Binary files /dev/null and b/games/10/games/farm/assets/sound/mouse_speech.mp3 differ
diff --git a/games/10/games/farm/assets/sound/pig_noise.mp3 b/games/10/games/farm/assets/sound/pig_noise.mp3
new file mode 100644
index 0000000..ce56105
Binary files /dev/null and b/games/10/games/farm/assets/sound/pig_noise.mp3 differ
diff --git a/games/10/games/farm/assets/sound/pig_speech.mp3 b/games/10/games/farm/assets/sound/pig_speech.mp3
new file mode 100644
index 0000000..d0e9e7f
Binary files /dev/null and b/games/10/games/farm/assets/sound/pig_speech.mp3 differ
diff --git a/games/10/games/farm/assets/sound/sheep_noise.mp3 b/games/10/games/farm/assets/sound/sheep_noise.mp3
new file mode 100644
index 0000000..7932a57
Binary files /dev/null and b/games/10/games/farm/assets/sound/sheep_noise.mp3 differ
diff --git a/games/10/games/farm/assets/sound/sheep_speech.mp3 b/games/10/games/farm/assets/sound/sheep_speech.mp3
new file mode 100644
index 0000000..a0fe6b8
Binary files /dev/null and b/games/10/games/farm/assets/sound/sheep_speech.mp3 differ
diff --git a/games/10/games/farm/farm.swf b/games/10/games/farm/farm.swf
new file mode 100644
index 0000000..81bb8f7
Binary files /dev/null and b/games/10/games/farm/farm.swf differ
diff --git a/games/10/games/food/food.swf b/games/10/games/food/food.swf
new file mode 100644
index 0000000..f25b56c
Binary files /dev/null and b/games/10/games/food/food.swf differ
diff --git a/games/10/gamesmenu.swf b/games/10/gamesmenu.swf
new file mode 100644
index 0000000..22a19e0
Binary files /dev/null and b/games/10/gamesmenu.swf differ
diff --git a/games/11/game.swf b/games/11/game.swf
new file mode 100644
index 0000000..dc8d322
Binary files /dev/null and b/games/11/game.swf differ
diff --git a/games/12/game.swf b/games/12/game.swf
new file mode 100644
index 0000000..729b191
Binary files /dev/null and b/games/12/game.swf differ
diff --git a/games/13/3dfps.js b/games/13/3dfps.js
new file mode 100644
index 0000000..31201e3
--- /dev/null
+++ b/games/13/3dfps.js
@@ -0,0 +1,192 @@
+//////////////////////////////////////////////////////////////////////////////
+// //
+// 3DS Browser SDK - Raycasting Class v1.8.11 2011-07-20 //
+// (c) 2007-2011 Daniel Gump. All Rights Reserved. //
+// http://3dspaint.com //
+// hullbreach@hullbreachonline.com //
+// //
+// Nintendo 3DS is a trademark of Nintendo Co., Ltd. This software //
+// package is not associated with Nintendo but was created to support //
+// their products //
+// //
+// Redistribution and use in source and binary forms, with or without //
+// modification, are permitted provided that the following conditions //
+// are met: //
+// * Redistributions of source code must retain the above copyright //
+// notice, this list of conditions and the following disclaimer. //
+// * Redistributions in binary form must reproduce the above copyright //
+// notice, this list of conditions and the following disclaimer in //
+// the documentation and/or other materials provided with the //
+// distribution. //
+// * Neither this software nor the names of contributors may be used to //
+// endorse or promote products derived from this software without //
+// specific prior written permission. //
+// * If the explicit purpose of the software is not to support the //
+// Nintendo 3DS Internet browser, then the names of such must //
+// not be used in any derived product. The name shall be the //
+// HULLBREACH LITE SDK with a reference link to //
+// http://hullbreachonline. //
+// //
+// THIS SOFTWARE IS PROVIDED BY Daniel Gump ''AS IS'' AND ANY EXPRESS OR //
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED //
+// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE //
+// DISCLAIMED. IN NO EVENT SHALL Daniel Gump BE LIABLE FOR ANY DIRECT, //
+// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES //
+// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR //
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) //
+// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, //
+// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING //
+// IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //
+// POSSIBILITY OF SUCH DAMAGE. //
+//////////////////////////////////////////////////////////////////////////////
+function RayCast(){
+ //Canvas size
+ WIDTH=312; HEIGHT=205;
+ //Player's coordinates
+ X=1.5; Y=1.5;
+ U=0; V=1;
+ PLANEU=1; PLANEV=0;
+ ANGLE=0;
+ ROTATESPEED=.2; MOVESPEED=.2;
+ WALLSCENE=[]; TEXTURES=[]; TELEPORTS=[];
+ CANVAS=null;
+ SKYFILL='rgb(0,0,0)'; GROUNDFILL='rgb(0,0,0)';
+ SKYIMAGE = 0;
+ COLLISION=0;
+}
+RayCast.prototype.generateScene = function(){
+ CANVAS.fillStyle=SKYFILL;
+ CANVAS.fillRect(0,0, WIDTH,HEIGHT>>1);
+ CANVAS.fillStyle=GROUNDFILL;
+ CANVAS.fillRect(0,HEIGHT>>1, WIDTH,HEIGHT);
+ if(SKYIMAGE){
+ CANVAS.drawImage(TEXTURES[SKYIMAGE], -ANGLE*WIDTH/(2*Math.PI),-20);
+ CANVAS.drawImage(TEXTURES[SKYIMAGE], (2*Math.PI-ANGLE)*WIDTH/(2*Math.PI),-20);
+ }
+
+ //Player location
+ var rayX=X, rayY=Y;
+ //Ray length data
+ var sideDistX, sideDistY;
+ //Stepping data
+ var stepX, stepY;
+ var side, hit;
+
+ for(var column=WIDTH, camerastep = 2/WIDTH; column>=0; column-=6){
+ //Ray length
+ var deltaDistX = Math.sqrt(1+((rayV=V+PLANEV*(cameraX = column*camerastep-1))*rayV)/((rayU=U+PLANEU*cameraX)*rayU));
+ var deltaDistY = Math.sqrt(1+(rayU*rayU)/(rayV*rayV));
+
+ //Find initial side dist
+ stepX = stepY = -1;
+ sideDistX = rayX-(mapX=X|0);
+ sideDistY = rayY-(mapY=Y|0);
+
+ if(rayU>=0){
+ stepX = 1;
+ sideDistX = 1-sideDistX;
+ }
+ if(rayV>=0){
+ stepY = 1;
+ sideDistY = 1-sideDistY;
+ }
+ sideDistX*=deltaDistX;
+ sideDistY*=deltaDistY;
+
+ //Step DDA
+ do{
+ if(sideDistX>31?-perpWallDist:perpWallDist)))>>1)+(walkBounce=HEIGHT/(10*perpWallDist));
+ var drawEnd = ((lineHeight+HEIGHT)>>1)-drawStart;
+ var wallX = side?rayX+perpWallDist*rayU:rayY+perpWallDist*rayV;
+ var texX = ((wallX-(wallX|0))*(texture=TEXTURES[WALLSCENE[mapX][mapY]]).width)|0;
+ if((!side && rayU>0) || (side && rayV<0)) texX = texture.width-texX-1;
+ CANVAS.drawImage(texture, texX,0, 1,texture.height, column,drawStart, 6,drawEnd);
+ }
+}
+RayCast.prototype.loadScene = function(array){
+ if(WALLSCENE = array.split(';')) for (i=WALLSCENE.length;--i>=0;) WALLSCENE[i] = WALLSCENE[i].split(',');
+}
+RayCast.prototype.moveForward = function(){
+ COLLISION=1;
+ if(!WALLSCENE[(X+U*MOVESPEED)|0][Y|0]){
+ X+=U*MOVESPEED;
+ COLLISION=0;
+ }
+ if(!WALLSCENE[X|0][(Y+V*MOVESPEED)|0]){
+ Y+=V*MOVESPEED;
+ COLLISION=0;
+ }
+}
+RayCast.prototype.moveBackward = function(){
+ COLLISION=1;
+ if(!WALLSCENE[(X-U*MOVESPEED)|0][Y|0]){
+ X-=U*MOVESPEED;
+ COLLISION=0;
+ }
+ if(!WALLSCENE[X|0][(Y-V*MOVESPEED)|0]){
+ Y-=V*MOVESPEED;
+ COLLISION=0;
+ }
+}
+RayCast.prototype.moveLeft = function(){
+ COLLISION=1;
+ if(!WALLSCENE[(X-V*MOVESPEED)|0][Y|0]){
+ X-=V*MOVESPEED;
+ COLLISION=0;
+ }
+ if(!WALLSCENE[X|0][(Y+U*MOVESPEED)|0]){
+ Y+=U*MOVESPEED;
+ COLLISION=0;
+ }
+}
+RayCast.prototype.moveRight = function(){
+ COLLISION=1;
+ if(!WALLSCENE[(X+V*MOVESPEED)|0][Y|0]){
+ X+=V*MOVESPEED;
+ COLLISION=0;
+ }
+ if(!WALLSCENE[X|0][(Y-U*MOVESPEED)|0]){
+ Y-=U*MOVESPEED;
+ COLLISION=0;
+ }
+}
+
+RayCast.prototype.checkTeleports = function(){
+ for(tele=TELEPORTS.length;--tele>=0;){
+ if(TELEPORTS[tele][0]==.5+(Y|0) && TELEPORTS[tele][1]==.5+(X|0)){
+ if(TELEPORTS[tele][4]) document.location.href = TELEPORTS[tele][4];
+ Y = TELEPORTS[tele][2];
+ X = TELEPORTS[tele][3];
+ }
+ }
+}
+RayCast.prototype.isCollided = function(){ return COLLISION; }
+RayCast.prototype.setAltitude = function(alt){ ALTITUDE=alt>=-5*HEIGHT?(alt<=5*HEIGHT?alt:5*HEIGHT):-5*HEIGHT; }
+RayCast.prototype.setDirection = function(angle){
+ U = Math.sin(ANGLE=angle*0.0174533);
+ V = Math.cos(ANGLE);
+ PLANEU = Math.sin(ANGLE+1.5707963);
+ PLANEV = Math.cos(ANGLE+1.5707963);
+}
+RayCast.prototype.setGroundColor = function(r,g,b){ GROUNDFILL="rgb("+(r<0?0:(r>255?255:r|0))+","+(g<0?0:(g>255?255:g|0))+","+(b<0?0:(b>255?255:b|0))+")"; }
+RayCast.prototype.setLocation = function(x,y){ X=y; Y=x; }
+RayCast.prototype.setSize = function(w,h){ WIDTH=w; HEIGHT=h; }
+RayCast.prototype.setSkyColor = function(r,g,b){ SKYFILL="rgb("+(r<0?0:(r>255?255:r|0))+","+(g<0?0:(g>255?255:g|0))+","+(b<0?0:(b>255?255:b|0))+")"; }
+RayCast.prototype.setTeleports = function(teleports){ TELEPORTS=teleports; }
+RayCast.prototype.setTextures = function(textures){ TEXTURES=textures; }
+RayCast.prototype.setWalls = function(Walls){ WALLSCENE = Walls; }
+RayCast.prototype.initialize = function(canvas){ CANVAS = canvas.getContext("2d"); }
+RayCast.prototype.setSkyImage = function(img){ SKYIMAGE=img; }
+
+RayCaster = new RayCast();
\ No newline at end of file
diff --git a/games/13/css.css b/games/13/css.css
new file mode 100644
index 0000000..60bbb3b
--- /dev/null
+++ b/games/13/css.css
@@ -0,0 +1,8 @@
+body {
+ background-color: #BA00FF;
+ background-image: url('../../img/gradient.png');
+ background-position: top;
+ background-repeat: no-repeat;
+ color:#fff;
+ text-align:center;
+}
\ No newline at end of file
diff --git a/games/13/game.swf b/games/13/game.swf
new file mode 100644
index 0000000..afed6b0
Binary files /dev/null and b/games/13/game.swf differ
diff --git a/games/13/index.html b/games/13/index.html
new file mode 100644
index 0000000..7a23d9e
--- /dev/null
+++ b/games/13/index.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+ Dungeon Escape - by Daniel Gump
+