All right. Hello everyone. Happy Friday. Looks like You have sound some stuff out of my pockets here. Let's get settled in Okay. Hello everyone. My name is Tim and I go by foamy guy on get hub and Discord speaking of discord. Let me pull up the Chat which is showing below me here. We can turn off a full of these previews. We don't quite need all of these Let's close that one. How's it going Timmy? Happy Friday DeShipu, how's it going? Thanks for the confirmation on sound Beata Hello and happy Happy day. Happy Friday and everything made it through another week Well now here see Grover. How's it going? so Again, you know hello to everyone. My name is Tim and this is the circuit python deep dive a fruit deep dive program and And originally this program was started by Scott working on the circuit python core Scott's a lead developer He is on a break right now from streaming still because he's just had a child very recently So he's uh, you know, not getting as much sleep and having to dedicate time obviously to taking care of the child So I'm filling in on the streams for a deep dive at this point in time And so that's what we were doing For folks that might be new or watching this video in the future if you don't know what i'm talking about You know, if you don't know what this video is going to be about We are working on circuit python, which is a implementation of python that runs on tiny computers called microcontrollers There's a bunch of pictures of them on the downloads page here This is circuit python.org the website for circuit python, which is where you can go if you'd like to learn more about it In addition to that, I'd encourage you to head over to the discord and join us there Ada fru.it slash discord. That's the chat that is showing right below me there on the screen These are all the different devices that can run circuit python We are writing python code that runs on these tiny devices. Essentially this main chip here Is a little computer for all intense purposes And we can write python code for it and it will run it and we can interact with all the peripherals on the device Like this one happens to have a bunch of rgb leds It also has a speaker over here. It has two buttons.  I think a light sensor a couple other things So we can interact with all these different peripherals with our python code Um, so that's kind of like, you know, the 50 000 foot view of what we're Looking at and then getting in more specifically to my project today I will be continuing on the game and watch octopus Game which I'll pull up my camera here. This is the game that I have been making for The pygamer device which mine is inside of a case, but I'll pull this up here so you can get a look at This is the actual device that I'm using We'll even head over to the product page where we will be able to see a couple more angles of this device So this is one of these microcontrollers that runs circuit python. This one, of course has a screen on it It's kind of like a little handheld gaming device So this is what I am working on today on the octopus game I will mention, um, you know, we made it over here to adafruit.com Adafruit is a hardware and software company based out of new york and adafruit is the company that pays The folks that work on circuit python both folks that work on it full-time like scott and jeff and dan and catney As well as folks who work on it part-time like myself Tech trick and I believe there's Potentially a few others at this point that are kind of on the fringes doing guides and doing Form help and all kinds of stuff like this So adafruit is, you know, paying those of us that get paid to work on circuit python for it So if you want to help support the circuit python project One of the ways you can do that is by purchasing hardware from adafruit So if you head over to adafruit.com, you can see a list of all the hardware they sell Lots of the different microcontrollers that run circuit python They sell those lots of the stuff that you can plug in and hook up and use the microcontrollers with like rgb lights and buzzers and beepers and You know buttons and joysticks and sensors and all kinds of Add-ons if you will they sell all sorts of stuff like that so you can find those on adafruit.com And then I'll just say again, you know, thanks on behalf of all of us that work on the project Thank you for supporting it by purchasing hardware from them Um, so let's catch up on the chats here. I think I saw a couple go by how's it going? Uh, let's see near doc. Uh, how's it going and ask patrick w c grover to shabu and dj devon Paul, uh, how's it going paul looking and listening on a new smart tv nice, uh, so for the moment we'll not write things That's cool. Yeah, no worries It's always nice to uh, I've essentially got smart tv's my tv's are they are smart tv's But really I just am using them as a standard display, but I have a computer plugged into them So I end up doing sort of smart tv type stuff on there So let's dive in and I think where I left off folks are interested There are vods of this particular project so you can watch back. Um, I think last week on the deep Web workflow stuff, maybe the week before that we might have started on this game if not on the deep dive I don't remember for certain. Um, definitely on my saturday stream So if you're interested in this particular game and watch octopus project You can go back and find the videos where I've done the bulk of what you know, what has been done so far Uh, so if you're interested in getting more of the history of this project You can find those and then at the end, of course, there will eventually be a guide for this And so you'll be able to follow along if you want to build this particular game Um, and then I'm also trying to write the guide with a an eye towards like, you know Maybe if you want to make your own one of these relatively simple style games as well, right? Like it's one thing to just You know run the octopus game and play it But I'm also trying to write the guide for somebody who might want to either Build their own game and watch game that's brand new that hasn't been Um, you know created before in which case I guess it's not a game and watch game But you know build your own game based on these sort of simple hide and show graphics Um, or if you even wanted to implement one of the other Nintendo game and watch games because there are actually a handful of these different games floating around out there I just happened to pick this one to start with And I may still do some others as well. So We have the guide to look forward to as well once all of this is all said and done Where I am at right now though, I think I'm just working on game mode behavior what I have right now is All of the sort of objects exist and do what they're supposed to do Of course, I just got my diver caught right there I don't know does it reset? That's one of the things I guess we need the behavior for still is Resetting after you get caught. So why don't we start there since we are in fact caught right now? Uh, one thing is these are the wrong projects. Let's go pie charm And I'm just gonna pull this here Let's get device workspace this window And we'll bounce that back Like we were split here last time. So let's get back to a normal looking thing here We might as well just go ahead and get a serial Connection as well. I'm sure we're gonna want to see the serial output or get to the repel or something at some point So I'll do that And then basically what we need to do is Make some mechanism that's gonna Basically advance the game state after the diver gets caught Kind of let's see the screen is covered by chat. Oh, let's see get to obis here Uh, I will it is kind of wider today. Isn't that the chat here? Let me uh See there's nothing Private on this is there So it's easier if I do this. We'll go back to curtain a minute here. Uh, let's shrink this a bit And shrink this a bit Can you move the peg ever? Yeah, we're working on the uh On the layout a bit here And actually we have some room to go further there. We can actually come back a bit on this Covers up a lot of the code. Honestly, we'll probably spend a lot of time with this full screen So we'll switch back and forth like that that way the camera is over there. We can see it um Okay, um, so let's see where we're getting caught. I think that kind of re re Get in the mode here. So octopus game Let's look at codepie as well codepie is basically just going to be at this point You know, I started writing all this code where I was putting stuff in codepie But at this point a lot of it has all been refactored and most of it lives uh inside octopus game The main stuff that's still in codepie is like The core sort of top level group that the graphics gets shown with and then the button handling Uh for the actual physical buttons and in this case, I'm using uh start and select. Oh, it did eventually reset there It actually reset. Well, maybe it's Reset it by doing this Must have reset. Maybe when I connected the terminal or something I don't think it does automatically move on if it if it does actually Automatically go then it's it takes too long. I'll tell you that because we're still caught there now So it probably should be like One or two seconds max something like that not very long Uh, so in codepie, we're basically getting the button events from the actual button hardware And then if the buttons got pressed we just send them into the game object By calling these functions octopus game right button press and left button press Uh, and then either way no matter if there was a button press event or not We also will call game.tick, which will Be kind of the primary, you know driving force behind our game We call this tick over and over inside a tick. It's responsible for like Updating the state and doing stuff as things happen inside of here. So Let's take a look at when we get caught. So If we are in normal gameplay If the diver is not caught then go ahead and call tick on the octopus Which will cause the tentacles of the octopus to either extend or retract But this is only if the diver is not caught because this says if caught diver Tau grade is hidden which means it's not showing Let me also shuffle these chats back to the top here. Wikipedia says there were a total of 62. Wow. I did not realize there were that many 62 game in the watch. I think there are some more Modern like remakes as well. The original run was back in the 80s or 90s early 90s potentially But I think there are some newer ones like with color screens and some more fancy stuff. I've seen a couple zelda ones floating around 62 though, I did not realize so if the diver is caught though Well, let's just keep going down here. I guess if the player's index is Zero And the player is not hidden then The player's index is zero and the player Is not hidden. Oh, okay, and uh zero Tentacles zero segment two Kyle grid is showing It's yeah, if it's not hidden So this is checking a specific one of these. This would be tentacles zero segment Two it would actually be checking this one. I wonder though. Why is that curl location index zero? Oh, no tentacles zero a excuse me tentacles zero a which is actually this horizontal one Tentacles zero a is the one that comes out here So this bit of code right here is basically saying if this tile grid at the very end the tippy tip one on this Tentacle that comes out here if that tile grid is visible And if the user's location is index zero, which is this one right here right next to it Then the player is going to get caught. We're going to show the caught diver And then we basically have a series of these one for each index So this player index matches up with this tentacle end This player index matches up with this one This player index matches up with this one This player index matches up with this one down here And this player index at the treasure chest matches up with the last one all the way over here right by the treasure And that is essentially what all of these are doing and if they're true then it's saying show the caught diver Um, and then here we have if uh, if not caught diver hidden so if it is showing Then we check if it's actually been long enough for the animation delay And if it has been long enough for the animation delay then we update the tile index inside of our caught diver tile grid Which is this tile grid right inside here. That's got the diver whose arms and legs are shaking like that The way those are shaking is because there are two tiles in that tile grid and we are swapping back and forth between them Web archive has a large collection of emulators Of those games that work and run in the browser. I did find one Uh, I did find an octopus that ran in the browser played that on one of the streams and I used that to figure out some of the behaviors we'll probably get back to that at some point truthfully because I need to Figure out more of the fine-grained details about differences between game modes a and b I think Like roughly speaking. I think one of them is more or less like infinite You don't really lose lives and it doesn't really count scores. And then the other one is like Actually the game where you do lose lives and it does count score. Um, I think that's the difference but I do need to like Actually try it on a on a real one. Hopefully that's legit to the original way Um, see if I can catch it in a video So we basically want something here that says like if we have been caught long enough Then go back to like not being caught anymore. I think um So we should define a variable for like what is long enough. How long do we want the diver to be caught? Um caught diver Delay caught diver delay Not diver length Time length length Uh, let's say two seconds to start with 2.0 So then when we first change like when we very first get caught we need to store the time So we'll make a Variable for this as well and then inside of um Go caught diver. I believe is the name of the function right here When this first gets called we'll go self dot Diver caught time Equals now I'm actually having now though. So I guess we will go now equals Time dot monotonic Now we have that time and then back inside of our tick. We basically want to go Check that time against our constant up at the top there If we're showing the caught diver if now Is less than or equal to self dot diver caught time plus Uh, let's see plus, um Game dot caught diver Length so if we are still within the uh length here Then we're gonna do the animation bit If we are not still within that length Then we basically want to go back to Kind of like the beginning essentially. So I think what we'll do is uh self dot hide caught diver Yeah Do it for us, right Parents still have the octopus one somewhere. Oh, that's awesome. I looked into uh, I looked into them on ebay there Um touch on the extensive side truthfully though. It's like over a hundred bucks for an original one Uh, I may still pick it up one of these days because it would be kind of cool to uh have them side by side But let's get caught by this one. Okay, there we go. So Yep, okay. I think a little bit longer. Oh Oh interesting That was weird.  It's like we got caught again I'll just wait here in the first tentacle. It'll get me Right there. It got me Goes back Oh, you see there's a gap in that In that, uh tentacle there That gets weird. It must have lost its state of, uh Where the actual Which it must have lost its state about which segments we're showing Probably what we want to do is just reset it all the way back to, um Like base with no tentacles out May have dropped potentially We got I'm back to green now. So I think I probably just cut out on me for a minute there the uh network Uh, but it is back to showing good frame rates on obs now. So it looks like it came back automatically Let me check, uh, one other place over here. Actually, let's do this. Uh, I don't know what this shows Let me do it over here Yeah, this one. I think I pause or check your encoder settings They streaming maybe I just never updated. I don't know I mean same experience on youtube seems okay now Okay, we did I did get it back into here. I will pause this one So that should hopefully free up a bit of the bandwidth as well Make sure I don't have any others running here Okay I'll throw the obs down here and try to keep an eye on the uh There I'll try to keep an eye on the little green, uh Red yellow green chart Yeah, I will say the good thing is usually usually knock on wood when my Network does skip a beat like that. It Generally comes back and is okay Keeps losing it if you are still having trouble try refreshing the page That's sometimes I notice when I'm watching streams if it does Cut out and then come back like sometimes refreshing afterwards is, uh Gets it back to working better. Uh, so give that a try if you didn't Um, and then I'll press on for now and I'll try to keep an eye on the uh On the thing over there So we were back in here when we call hide caught diver We want to also say self dot octopus hide all tentacles. Nope not hidden just hide all tentacles. No hide all segments. Excuse me So when the diver Goes back to not being caught anymore then All the tentacles segments get hidden that way We're basically starting back at the beginning again because when you when you first start All the segments are hidden. They kind of start showing one at a time Um, so that should reset us. I do think we want to go a little bit longer. The two seconds felt really quick So let's try maybe four seconds Uh, and then let's see where that gets us Oh, uh, let me Camera instead of that So we can get caught there we go already Four seconds. Yeah, it feels a lot Feels like a lot better time. I do see this one is still showing Uh There are actually two of them So do our hide caught? Uh, excuse me. Does our hide all segments not work right? Let's check on that again real quick. So I'm just gonna get caught by the first one here So then get caught although this time they weren't actually showing I guess. Oh, but this one Goes on Okay, you know what it is is it's not that they, um It's not that they don't get hidden It's that when the octopus ticks start happening again It doesn't have the right state anymore. So as part of Hide all segments we need to also actually reset the state of like Which tentacles are hidden and which ones are showing? Um, because it kind of like keeps track of that in order to You know extend out and retract back Uh, let's see curious Let's see. Should you put all of those weights into a configuration constant so you can tune them on different microcontrollers? Yeah, definitely, uh, and I have a couple of them like all the ones I do have are in uh, I mean they're in I guess I would call them configuration constants. They're in variables at the at the top of their respective classes When it comes time to like publish the code I may pull a few of them out. So like You know, I don't know some of the ones inside the oct to post like base tick delay or I don't know some of these things might come out and just go into code pie that way You don't have to dig to try to edit them, but um Yeah, you can definitely play with those Let's take a look inside of, um The hide all segments Where is that actual tick for calling? hide all segments Okay, so yeah, this is just going through the list and setting them to hidden it needs to also, um Reset the state essentially Which are these indexes here? I think it should just set them all to zero or negative negative one It's negative one Yeah, I do. I think it is negative one because zero is actually Meaning that the first segment is showing that is segment zero Of this tentacle and when that index is on zero it means that one is showing so negative one Is actually the number that means that no segments on that tentacle are showing and we do need to go indexes here Need to be all back to negative one when we call hide all segments um Ker index Oh, I see. Okay. This is how it sets them. Actually it starts them Oh, interesting. They're in a list, but they're but they're actually variables themselves. So maybe we should Just edit them on their own So we'll just go self dot each of these tentacle zero Ker index equals negative one one Well, nope. Nope. There we go two Three Uh, and then I know I think we'll need to do um directions as well I think we should reset them all back to extending also So let it get caught Uh, I wonder if the way that I have these as variables and inside of a list Yeah, I it's unclear to me the way these tie together like when I put this When I put this variable this field inside this list if I update it later in this list Is that updating this variable or not? I don't actually know If it's not then I then I think that's our problem because I do think later on it's uh Maybe editing these inside of the list rather than on the individual variables To look at what it shows That's zero or The directions are correct, but the uh indexes Are not Even though we just set them. So I think that I think we kind of have two copies of these and we don't really want two copies of the same Yeah, because in the list this is one, but as the individual variable right here, it's negative one It's tricky actually inside of uh octopus tick We're gonna need to Do some stuff differently All right, and so the crux of this is that tentacle zero is different from the rest Tentacle zero has a zero a and a zero b One of them goes down this one here goes down zero b and then zero a goes out horizontally That's the only tentacle that has a split that behaves that way In the standard gameplay This tentacle here tentacle one also does have a split, but it never uses this Second leg of the split only when you catch the diver. That's the only time it shows this tip one here Um, and so then in the standard extracting uh extending and retracting It will never actually show the b side. So it doesn't Need different behavior, but tentacle zero since it can be on either segment zero or segment Excuse me tentacle zero a or tentacle zero b which are the you know the break point here It needs different behavior. And so this is the behavior for Tentacle zero Extending and then this is tentacle zero retracting And then here is if it's not on tentacle zero. This is any of the other tentacles And they all essentially do the same thing right now because they all have the same behavior And it's basically trying to use those lists Uh, but the problem is when it goes to update the values inside those lists That is not transferring back to the original variables And so I think what we should probably do is Maybe do away with These all together as individual variables and just only keep them inside of the lists So we won't have tentacle zero cur index tentacle one tentacle two We won't have all of these we will just have tentacle cur indexes It will be a list that contains all of them And same thing for directions actually because that's going to be the next The next thing that has the same situation, which is we will get rid of all of these directions and we will only Use this list Let's start that Weird we also have these but I think these we never update really we just update the tile grids inside them How's it going? Uh, Todd bot nice to see you. Happy Friday So let's comment these ones as well we are uh facing the realities of I think like value versus reference type thing is pretty much the core concept of what uh What's troubling us right here I have a ping in one of the other channels or oh, this was the live broadcast channel of course right there Oh in the past on the stream, I got you boiler alert Whenever you catch up, I guess it's not really a spoiler alert because you don't hear me Well, I guess maybe you do. I don't know uh Okay, so then here we're not going to be setting any of these I'm just going to delete these ones and Well, no, let's not delete them instead. I guess we're going to go I mean, is there a fill? They're like list that fill You can do that in python That would be convenient repeat Oh, but this is from iter tools. We probably I don't know if we have iter tools I don't see it at least not right away. So I'll just do it this way. So we'll go, um technical index is zero Of course, this could be in a for loop. I guess we could loop over the ranges or something but In fact, actually let's do that because then we could do both inside Now we go through all four of them and set each one back to negative ones list colon equals Value so negative one in my case times length Interesting. I don't know that I've ever seen a list colon equals That's basically like for replacing everything inside of a list That's pretty nifty. I do like that. Thank you Colon, yeah, I've never seen I've seen colons. I've never seen the colon by itself I've always seen a colon either with a number on the left or the right and I never remember Which side does what I always have to guess and check This actually gets even easier. We don't even need the for loops You could do like an arbitrary subset of the list as well, right? Like you could do One three or something and then as long as this number matches However many this is actually targeting, which I don't know if it's Like probably You know zero on one side, but one on the other side or whatever. It's like off by one on one Not the other You could probably just override a subset That's interesting Colon the accessor by itself Okay Apprehension which will give you the a one line for the loop. Yeah, I like this this one is essentially the one liner as well And I'll actually use the same ones When we set it here because this is actually now doing the same thing Well, yeah, I was kind of like trying to make it so that These would be the same variable, but it doesn't work like that. I think Kind of site. Oh, it doesn't exist. I see before you do that to it. Okay, so we can do Oh, no Tendacles tentacles Nicole Kerr indexes The list so then what we'll have to do also is We will have to change the logic of tentacle zero Because that one was referring to these to the zero variables directly rather than the lists Whereas tentacles one through three. They were all using the lists I'm gonna leave these for now we're we're gonna come back and cut them out eventually but I'm gonna leave them just for now. We don't need this anymore We probably don't need these but I'll keep them for a second. And then yeah, these all of these we're gonna have to fix so Instead of tentacle zero current index. It's actually a tentacle current index is zero Play everywhere where this gets used and then direction here No longer that but instead is Tentacle directions zero Pats do still exist. Well for tentacle zero actually is the only one with different paths, but they do still exist. YouTube's live again. Thank you Now hopefully we'll fingers crossed again knock on wood. Hopefully we're done with that for for the day It's usually not multiple times in the same day.  I guess Uh, we do have another index one here this Now Zero is modifying the things inside the list Oh, uh, no. Yeah path still exists. That one's fine. Um And then one through three they were already using the lists anyway So those should keep behaving the same Well, this works It means after we go back to not being caught All tentacles revert back and they start extending a correct order Which they are these ones at the tip here are not extending even before it's their turn like they were before so that's what we fixed By doing that this way Let's see Pitch up here Failed to watch previous episode on game and watch had an idea on how to emulate the liquid crystal display if you draw the glyph on a Glyph on a single bitmap with a with palette, but each element uses a unique color Then your color palette can be a set of black and white depending on whether you want it to display or not. I assume kind of like a bit display The image would never change only the palette To apply could that work fast enough? I think it probably would be faster to be honest with you because I think that color Uh changing colors inside the palette is actually one of the most efficient ways to change the screen. I think um So honestly the animation probably would be faster that way. The thing is though my delay My game tick delay is high enough that We're limited not by well, that's the octopus one, but Um, what is the actual tick delay? Basically, we're not we're we're not limited by the uh We're not drawing as fast as we can we're drawing slower than it's possible. So we don't necessarily need to speed up Um, I guess actually it doesn't State as normal gameplay It actually doesn't have a tick delay The tick is just going as fast as it can but all of the animations like Animating the cot driver here. This one is having the diver animation delay, which is 0.3 seconds Uh, what is another animation the octopus itself is an animation because it's moving the tentacles and that one does have its own delay, which is that 0.75. I think it was a base tick delay 0.75 so The quickest thing we're updating is three tenths of a second, which is not, you know, super slow But is slow enough that we don't need to push it as far as we can Do you have a look at maim? I think they're doing game and watch emulation for a few years. I haven't uh, I haven't looked into maim I should do that I ended up with uh, not I ended up with basically A background one bitmap for the background. It's basically a an on-disk bitmap that is the entire background Including the octopus body Um, I'll show you my assets here. You'll get a you can get a sense for what, um How the game is put together kind of graphically speaking Uh, I don't know. Did I just call it octopus background or No, let's take a look at the uh That actually put in the background here octopus game On-disk bitmap bg with shadow. Okay. I need to rename that eventually Oh a little big, okay So that's our background and we're loading this in an on-disk bitmap and then for each of the segments They all have their own tile grid that we are hiding and showing inside the octopus object Uh, and then for our moving diver We have one tile grid that moves to these different locations and also changes tile based on which You know, which sprite the character is at that point in time Uh, and then we have a couple of other tile grids up here for these things Yeah, it's pretty much what we what we ended up with as far as like different assets for the uh For the interface and then I do have a copy of the background here, which doesn't have the uh Little silhouettes. I called them shadow in the name bg with shadow, but it doesn't have those like little silhouettes behind You know behind the actual black filled in bits So the original game like because of the way the screen works, you know If you look at it at an angle you would see those kind of like cutouts Um, I don't know if we're gonna go with the one with the shadow or without or maybe eventually We'll make it user selectable or something But it is super nice to use the one with the shadows while we were placing all the tile grids in the right spot because I could line them up Nice Great thing is uh that I had exactly that game and watch nice in the past. They could not because there's no rom I think they had the decapped the chips. Oh, okay Let me catch up here. What what was that one too though? Let's see Eddie Devon, uh, I thought it was my new tv which connected. Uh, yeah, nope. I was cutting that on you Sorry about that quickly connected the ethernet cable Yeah Not nope. Nope. Definitely on my side installed discord on the ipad. Oh nice It's good. I need to get a uh, I should get a chat. It would be nice to have a chat on its own On its own thing like that an ipad separately or something like that that way I could uh type in the chat without it being on this computer That would be kind of nice It would be fun to adjust the darkness of the shadow later uh with the joystick to emulate the funky lcd contrast controls Oh, that's a neat that's a neat idea for sure. Yeah, because you kind of those games They did kind of they could have a contrast setting where Kind of makes it more or less visible those silhouettes I don't actually know what the technology behind that was but I do remember that that kind of like toggling the The contrast of the game and like kind of like different ambient light would look better at different settings of that contrast Uh in this type of game, I never did play a game in a watch game, but I had similar types of uh Games like the games with the same type of display technology Um All right So we're good on that I think one thing we an another thing we still need is actually uh enforcing the life loss and I guess another thing is we need to put the diver back in the boat after he gets caught. Uh, so diver gets caught here Diver gets uncot. You know, it's no longer caught here, but it never showed up back in the boat Which is what we want to happen. I think so octopus game Basically back where we were Well, actually we could do this inside hide caught diver kind of makes sense to do that. I think probably Pretty much anytime you hide the caught diver I think we always are gonna want To go back to the first position inside the boat boat diver tile grid hidden false I guess the player We might need to change the player index. I'm not sure. Let's see what this does I'm gonna try to get caught Oh, no, we don't have uh, we have an error. Let's see. There's no game boat diver tile grid A boat diver tile grid I have a boat diver tile grid Does it call? Oh, okay calls this before I see Uh, so let's put that Here I'm gonna try to get caught actually down here Because what I want to see next is the diver should show it back in the boat But I suspect his index will actually still be this one Not technically the first one. So if I go over again, yeah, we're all the way back to here So let's reset the index Which is I think diver player just diver player index or location index. Maybe diver player Locations Current uh, current location index self that player Yeah, uh dot Location index zero It's supposed to be zero or is that another one where it needs to be negative one. I think it's zero I think zero is the first one below the boat if I recall, right But yeah, I think technically this one below the boat is zero and then the the diver that's in the boat Is actually a whole different tile grid. So it doesn't actually have a uh location index. Okay, so now we're caught Back to the boat Oh Hmm, that's weird Got caught again. Hmm happens when you press right button, for instance We did put the boat diver to be showing So this stuff will happen we'll hide this we'll show the player Hmm, maybe there's some kind of refresh or something we need like Yeah, this you need to call this After we change the location Honestly, we should be updating the sprite index too. Otherwise our diver is gonna be showing the wrong sprite for the one under the boat Both of those and then also which it's uh was it It did not show me because it's like, um underscored All right, we'll make it uh, we'll make it private or not private. I mean As long as you don't uh emulate breaking the glass. Oh wow, I think my camera just crashed The camera for the pie gamer As long as you don't emulate breaking the glass that made the rainbow effect to kill the game That's how half of the game and watch ended. I'm afraid Sitting in the living room, uh, I have airco unit today. It's 40 degrees centigrade in lisbon My car this afternoon the temp meter indicated 41.5. That sounds very hot I am a fahrenheit temperature Right person. I don't know exactly how hot that is but it sounds very hot The the rough estimate in my mind is I think like 20 degrees Celsius is like room temperature ish, which is around 70 ish Fahrenheit that's kind of the one And then of course, I know the freezing points as well But I don't know any other sort of like common temp so 41.5. I would assume is Very hot probably over 100 fahrenheit something like that. It's very hot Cars do get incredibly hot though Uh, this did not actually. Oh, okay. We just never did the refactor. There we go All right, now it's not private so we're not calling it now. We should actually be back to Beginning it is weird that it jumped though. Honestly, I'm not sure All right, right the camera's dead Now the camera's back, but none of the settings are right caught down here again Well, another thing we will still implement is the game speeding up as you get points right now It's a static speed And it's kind of slow It's supposed to start slow to make it easy and then as you get points it speeds up to make it harder We're just waiting. Here we go. We finally got caught. We go back There we go Hot by the last one. Do we get stuck there? Is it simply just getting caught the second time doesn't reset or is it that getting caught by A certain tentacle doesn't reset Two tentacle. Let's do this one. That's the one we were on before I guess. Let's do this one how it resets That's working right so let's wait till we get hit by nope. Let's do this one Come sooner I get caught by The last one One by the treasure chest Is it always that one? Learn a little bit more about this before we jump back to the code Excuse me. Would it would it know that when it hits the object Or the end to go back and start over or is it trying to just keep continuously making one loop without starting over Right now It is starting over in that the diver gets reset back to the boat When you after you get caught And after he wiggles a little bit, you know, just being caught there by the octopus Um But it is not resetting in the Like there will never be a game over right now Like we won't run out of lives yet because we're not subtracting them. So it At this point the expected behavior is for it to just continue looping over and over you get caught Then after a few seconds you go back to the boat and then you can just do it again And right now that is intended to go forever But we have a bug here where it's uh, it seems like if you get caught by the last tentacle, it's not It's keeping you caught too long. Basically If so, would it be a hardware problem not a software problem? I think this is going to be a Software problem for sure. Yeah, I think the hardware is is no problem 105.5 f. Yeah, that's very hot That is uh, too hot. I would say even officially too hot Um That is weird. I wonder why it would be doing that. So Because it's weird because we set the diver caught time Inside show caught diver. I wonder if we're getting called again. Maybe we're getting called more than once Because if it kept calling it over and over Then it would keep resetting the diver caught time and it would never Elapse because you'd never get to the Now would never catch up Uh, then at each vector point, uh, if it's captured at that exact vector point, uh, is there return or a loop the exact vector point? Uh, I'm not sure if I understand that one at each vector point. It does check each point essentially each location, uh for the diver the diver has One two three four five possible locations that are below the below the boat And each one of those locations matches up with a tentacle segment So that first diver location matches up with that first tentacle segment that's on right now The next diver here matches up with this tentacle segment right here the end one This one is tied to the one that's next to it This one's tied to the one that's next to it. They're basically all Tied to that one that is right next to them And then if the diver is in that location When that last tentacle turns on that's when you get caught by it So that's when your diver moves to here checks his legs and arms and then you're supposed to get reset back But i'm thinking that probably it's continuing to call show caught diver Which is ultimately making it so we never Get uncaught basically we never go back to Loop again Yeah, indeed. This is just getting called over and over Which i guess is because this tip is still here and Technically the divers index is still here Because we did not actually change it until Tied caught diver So we probably should actually although i thought we were checking if the Player was visible which should also make that not count though, right? So where do we actually have that that's an octopus tick i believe here Oh, no, it's not checking the player. So actually really what it I see I see okay the logic is written to assume That only location index zero that's the only one where it's checking whether the player is hidden or not Because that's the only one where the player gets hidden by the By the player Moving essentially so if we reset this If I go down one or two and then go back At this point right now my diver is still at location index zero, but the diver tile grid is hidden And this and not right here is making it so that our diver is not able to get caught technically It's actually right here Technically this segment right here would want to catch it But because of this and not player hidden It's allowing it to not get caught. So really we need that same logic actually on all of the indexes I just didn't realize it at the time because I was not accounting for Hide caught diver and show caught diver changing The player's visibility Maybe we should just make one one one check out here. I don't know. I'll leave it like this for now We could refactor it later. I think this should fix it though Let's see it doesn't seem Natural for all the tentacles to retract suddenly after the diver's caught would expect that only tentacles one and two to reset with zero a and b and Three counting with their previous animation sequence. We could potentially leave them. Let's look Let's look at what it does Thank you young man, uh, we both learned something today. Awesome. Yeah, it's good to hear The time time check should be greater than equals time check for uh, which time check. Oh, uh, let's see what time check Sorry, I'm not sure where I was when you said that Uh, why wouldn't the index be zero in the boat? Yeah, I mean, it's just a choice that I made when I was coding it But basically diver zero index is right here and the boat one It's technically a separate object from the from the codes perspective This one up here in the boat is its own object. It's not the same object as the one that moves here Uh, and the reason that is is because it's a different size and the sprites turned out like All of the sprites for these ones here. They are the same size, but this one up here was a different size Um And it's each one was a different size from itself So like it made sense to make that as a different sprite sheet and then once it's a different sprite sheet It kind of in circuit python display aiola and it also makes sense to make it its own tile grid Uh, and then because it's its own tile grid, it's not part of the location indexes Essentially we we park on uh location index zero We make this player hidden and then this one gets shown. So it's kind of a little magic trick We trade between two different tile grids there um Right, uh Game and watch octopus online. I did find one of these one day online Why would you do that? Because we want you to click on the ads. Well, okay This is flash. Maybe I said emulator You have to have a an app to play this So I think this was actually the one I found it was SVG game. I thought I should have saved that link somewhere Aren't it? Okay. Well, I don't want to spend too long just looking around for the one that we can play Uh, if anybody does happen to find or have handy a link for playing it in the browser And you drop that in I definitely appreciate it. I found it if A week or two back one of the other streams. I did find it.  So what I'll do is I'll just go to the youtube There's like this six minute video Which I've been using to figure out a lot of stuff about how it works. There's longer ones as well actually Oh, they do. Yeah, they stay Oh that time it read well, okay, but that was like a game mode change Because even this change too I think you must have pressed game a or game b or something So there you can see some of the strategy of like having to wait While you're down here and then he had to wait again for this one Come on buddy get caught Pull me out here. Oh, he's really staying down there this time But you can kind of tell here. It's like speeding up the tentacles are starting to move faster and faster and faster Oh, finally got caught. Okay, so This one's all the way down. Yeah, they stayed they stayed where they're at. Good call Yeah, thank you. See Gerber. So we should um Yeah, tentacles, uh One and two need to change because those ones actually grab ahold of them, but tentacles zero and four and three Zero minute. Do we have more tentacles than this? zero No, okay. Yeah zero and uh Three index Both are gonna just stay where they're at tentacles one and two Will change to the specific way they need to look while they're grabbing the diver and then when the diver Basically, we don't want to reset them anymore. So we did that inside of what hide or show caught diver one of the two was Where was it? Was it uh Where we called this from? A bunch of places Where did we actually put that? This was the code we wrote this way. Okay, so this one is in A knit it's definitely a knit Where did we have the other one of those? Here we go hide all segments. That's where I did it Okay, well actually so hide all segments we do want to do it inside of there The thing is we probably just don't want to call this from where we are but We need we do need to set the um We need to set the index for tentacles one and two so this is basically hiding all of tentacle one Well, except for zero And one actually so it's hiding two three and four. It's hiding The last three here And then it's showing the one tip here So I guess what we should do is leave the index on zero one for that one. So What was it indexes? tentacle current indexes one equals Direction we'll just leave it in whatever direction it's in So the boat is basically the health bar Yes, the boat well the boat does double duty a little bit the two Divers on the right side of the boat that is essentially your health bar. Those are the number of lives you have remaining the diver On the left of the boat is not really part of your health bar. That one is more or less just Graphics, honestly That one represents sort of the negative one index. That's the location where you're safe from all the tentacles And of course like I was talking about before in our code. It's actually a different object So it's not there's not a literal negative one index, but like You know from the viewer's perspective, it's gonna feel like there is From the player's perspective, I should say um And then the other thing that that first one on the very left there does is it does the animations for pulling the bag up So when we return here, of course, my mouse was right over it But you can see him there lifting the bag over and over as he basically retrieves the treasure From the water essentially and that's those are the Those are the primary purposes of the left one, but the right to those two are the life life meters essentially Pika pika octopus says you need play a flash player. Yeah, I think I found that one too, but I don't have flash player either There definitely was one somewhere. I uh I'll have to pull back up the link. I I think it was implemented as an svg game So I was for a minute. I was trying to search like svg game, but And come up with it and yeah, so this one it was like it was an actual svg You know xml right just live on the page and it was changing the The values inside the xml. It was actually really cool to be honest with you Oh, is this it? This is it I download this Yeah, I downloaded this I would make sense why I was not able to find it Yeah, here we go Oh, but it's on I think now I have control over it. Oh, I can't I cannot actually go up. That's interesting I didn't know that Okay, we'll need to we'll need to enforce that you can only go back to the boat if you have treasure See I try to go back. I'm pushing left right now. It's not letting me This is also way faster. Oh, I can't move anymore. Oh, I got stuck. I think probably I focused it wrong or something It's like a browser issue not a uh Oh, no, I don't know. It's not working very good Oh My fingers got on the wrong buttons Oh, actually that keeps these out Huh It does hide these Keeps these out tentacle, uh, two Do they did it did extend them specifically or did it just keep them where they were Keeps them where they are It doesn't extend them If they're out it keeps them out though Okay zero one two Three I think this is actually the only one it was Hiding which would have I think we would have could have got a gap before this reminds me of all the electronics My parents couldn't afford when I was younger Uh, well, I mean the good news is nowadays you can uh rebuild and relive these things on a single device, right? Like that's the cool thing about this is once we're done We'll be able you could play this not only on a pi gamer, which is about you know A pi gamer is not a cheap device necessarily, right? It's about 45 or 50 dollars I want to say which is You know not the in the most expensive video game ever certainly, but It's kind of expensive for some people, right? Uh, but there is also pi badges Uh, yeah pi badge and then there's a pi badge lc And you could play the same game on that and that one those are like 20 or 25 dollars And the cool thing is you could write other game and watch games Like we might go on to make a series out of this I'll pick another one after octopus we might make more of these things And then you can play multiple games on one platform That makes it kind of cool because you don't have to buy each game individually Uh, which is certainly how nintendo would have wanted you to do it Did want the calculator watch nice. Yeah Is he okay? Yeah calculator watch or you know what this reminds me of also is like calculator games if you if you ever had a ti ti 83 or ti 84 or whatever and you could write games on the calculator Definitely had lots of those going around in my high school Tentacle 2 It is weird. Why are we I wonder why are we saying tentacle 2 segment zero? We wouldn't really want that hidden though, right? We would want that showing Because that one's like touching the diver. I think it did not actually hide though. I don't think Weird ti 89 assembly nice So then uh I guess tentacle 2 we just leave the index alone right tentacle 1 we change it because we actually hid potentially we hid A couple of these segments down here Between zero and three segments We hid these last three of course if they were already hidden then it doesn't matter but We reset back to one and that makes sense tentacle 2 should just stay where it's at I am still suspicious of these. I don't quite get why these are here and they don't seem to be doing that So i'm also confused about What they do if anything Zero and one are up here by the cot diver And they're still showing Oh, maybe those exist in the cot diver image Maybe we're cheating because the cot diver is one of the things that's its own sprite They called cot diver They're not Diver cot small I see Basically those Basically those segments are inside this So then I think we don't want to hide them though. I think we just leave them showing Let's make sure it doesn't cover anything up because that that would be the one reason that we might want to hide it is uh If it's like gonna cover up the the animated one But as long as the animated one still looks good, I think we just leave those there And that way we don't have to worry about adjusting the index Because if we do hide those Then we might I think we might need to adjust the index to account for it Yeah, that looks good to me still Yeah, and then it just now just picked up where it left off So we didn't really reset the first one did Well the uh the the one index which is the second tentacle the index one tentacle Did reset but index two stayed the same And all the rest of them stayed the same this one even now has the tip extended so that stayed We reset. Oh, we did get a gap in there. Why did we get a gap in there? Not touching anything on tentacle two anymore Have stock ish Yeah, pi badge 25 ish Yeah, stock is a problem probably though. I haven't looked lately. They could very well be out of stock Pro tip if you're in the u.s If you have a micro center near you the micro center stocks ate a fruit stuff at least the one near me does So sometimes you can find stuff like that there. I'm pretty sure my local one has pi badges on the shelf But there aren't like I don't there's only a handful of cities that have micro center. It's not everywhere I yeah, I don't know. Why did we um Feel like that tentacle two is still Got some weirdness with it. I think we want to get caught while tentacle two is like all the way out Okay during hide caught diver I see We don't want those the only The only tentacle segment we change in hide caught diver is Tentacle one be the tip the tip that is basically holding the divers head right there That's the only tentacle that changes when we hide the cot diver We shouldn't be changing anything else at this point Yes, we are on twitch as well Yeah, we don't have the twitch chat. I don't uh, I'm not quite My attention span can't quite handle more than two chats even two chats is a little much for me sometimes But yeah, so I don't have the chat like on the screen or anything and i'm not watching the The twitch chat, but we are streaming over there So I will take this opportunity to mention to if anybody is watching on twitch and you want to get involved or ask a question or Send a comment or anything like a discord or the youtube chat. Those are the two places to do it I won't see the twitch chat during the stream Out of stock on digikey. Ah That's all that's another good backup tip as well to those check digikey in this case if they're out of stock too It doesn't uh, it doesn't get you there, but that's definitely a good good tip good place to check I assume at some point we'll get a newer version The the one thing is the pie badge and the pie gamers all these devices are based on the same d51 Um, which I think Essentially the same d chips are a little harder to get right now than you know, like an rp20 40 for instance or like an esp32 You know s2 or s3 or something some of those newer ones Uh, I think some of those are a little easier to get in today's. Oh, hey this time, uh We had a gap. We need to show tentacle one segment one Segment zero segment one Is it one a one or is it just one? tentacle one segment one pink, uh 20 40 feather. Yeah, I like the pink feather as well Um, I don't know if I finished my train of thought, but I think the samd 50 ones really all the samd chips I think are a little harder to get these days, but uh rp20 40 is esp32 s2's An s3's and some of the other newer chips. I think those are a bit easier. So Maybe hopefully You know one of these days, we might get a new pi gamer or a new pi badge. Uh, based on the rp20 40 or esp32 s2 I would not be too shocked if that came along one of these days, of course I don't even though I do work for uh, adafruit on circuit python. I don't have any inside knowledge. So This is definitely not like guaranteed, you know, you did not, you know, did not hear it for me I'm not guaranteeing anything but I would not be surprised as a as a customer of adafruit seeing the things they have released in the past. I would not be surprised if At some point we got a newer pi gamer or a newer pi badge Circuit playground as well. I think is Probably coming one of these days as well Okay, I think we're good now. It's no longer having any gaps in it Looks like all the tentacles are getting set to the right spots afterwards Ah, like this one here is still just all extended Those middle ones stay like that. They pick up where they left off. Everything's all good Yeah, I think we're looking good there one thing I noticed in the browser one is I'm not allowed to do this I'm not allowed to go back up unless I have treasure Um, which also I guess it would be considered a bug the fact that I went up and it's showing the treasure one Even like if I was allowed to go up there It should be showing the one that doesn't have the treasure bag because I did not have any treasure so that Would be a bug if that's how it was supposed to behave at all, but the real answer is We're not even supposed to be able to go there Don't even go there We just can't go back once we get down Only if you have treasure then you can go back up If there's a way to turn the sound off So in our left button press Here which is kind of like the highest level Place this is when codepie tells our game object that the left button was pressed We will Put another condition on this Uh treasure count greater than zero Yeah, there we go now. We're stuck go get some treasure now. We can of course I ran into the tentacle Might start at a slightly faster rate I think I overshot how slow it would go knowing that eventually it's going to speed up based on your score but we might have Ended up a little too slow I will say too. I feel like it's easier to rack up points in my version Like maybe we're giving them too many points when they're here Because I think the logic right now is oh Index out of range in 47 Calls player move forward 507 Calls update 490 Index out of range That'd be this index curse bright index Or would that mean that This entire number what we came up with with all of this was more than How many were in this thing Might be a tricky bug to reproduce This is the first time I've seen it too Same player play again Hi gamer. Oh, let me see here But I promised I I have no power for that They're like, okay. Yeah, never caught up I Will say fingers crossed. I hope it does Tell you I'm hoping for it as well Especially I think ESP would be really cool or I mean now that we have an rp2040 with wi-fi really the thing I think would be cool is a pi gamer with wi-fi, which there was a David mentioned or I don't know if you're talking maybe you're not talking about the older one but there was a pi gamer at one point with a A spy esp 32 connected also kind of like the pi portal I don't think it ever actually got released though But it existed for a minute and it had a build It may still be listed on circuit python.org, but I don't know. I think I'm not sure any hardware ever made it outside of beta fruit on that one But like an esp 32 s2 on a pi gamer that would be super slick I think pi gamer has eight megs of flash while the pi bridge has two megs the same amount of ram so both should work Yeah, and I think the sprites and stuff for the game are relatively small So it shouldn't uh shouldn't be a problem at two megs. Of course, you can't have as many other programs on it but After starting to run out of ram continually with ram hungry feathers since tft Uh Graphics project. I'm starting to really appreciate more of the amount of ram and s ram. Yeah, definitely That is one of the things too. Like all of my traditional programming is super high level stuff like Circuit python is this is the only programming I've ever done where I have to be like cautious about ram really Obviously, it's best to not waste ram if you can avoid it, but at the same time like Oh, there's a gap there It's best to not waste ram if you can avoid it, but at the same time like in the pc environment ram is basically infinite, right like You never really use too much ram whereas in circuit python. You definitely run out Pretty quick, especially if you're doing graphic stuff It takes a lot of ram to hold bitmaps and things so I think when it When it says uh show caught diver it should be turning on segment zero of Tentacle one and it seems like it is not So we'll try to recreate this bug again later as well, but let's make it do Actually should be showing zero and one. I think I just never If it's a random chance like you'd have to get caught while zero is not showing in order to notice that bug So I think that was the first time I actually got caught in that state I'll wait until tentacle one Is retracted and then I'll try to get caught by a different one I will say to not resetting the tentacles does make the game a little bit harder because you won't be able to just like Do the exact same pattern Okay, here we go Okay, yeah, perfect. Yeah, I think we're good to go there I wonder what it was about taking the treasure earlier somehow we triggered that index out of bounds error Possibly a good point saw the feather pads. Oh, uh, you can plug an airlift into the pygamer. That's true You can yeah an airlift feather wing you should be able to plug into the pygamer but like In esp 32 s2 with it all in one. It's just the network seems to be a little bit smoother because it doesn't have to communicate over spy Like a feather esp 32 s2 compared to like a pyportal or something I feel like the feather Won't let me back up It means my current treasure is zero But why would my current treasure be zero because also I have the bag showing so My current treasure was actually zero I shouldn't have the bag visible I wonder what my current treasure is It's times like this. I wish there was a console where I could like Look at the variable right now. I'd love to know what the value inside the variable of I got caught I love to know what the value in like Picking treasure or whatever. I don't know the name of the variable off the top of my head truthfully Actually, I'm back to already having the bag right now Oh, you know what I think when you get caught it's not emptying your treasure And it should be I think honestly we should do this inside of here since all five of these call show caught diver It seems kind of lame to put some logic here and then duplicate it five times Instead of putting it in here and just having it once right Treasure count so we need to reset that to zero first of all And then actually oh, I think my camera just crashed again Treasure right camera Yeah, when I come back down, I shouldn't have the bag, but I do Oh, I don't Okay, so let's fix that That's gonna be right button press Okay, so this is what's adding to the score when you take treasure. So here is actually Branch I'm after if the boat diver is not Hidden which means it is showing Actually, I think we want to do this in the left button press right left button press if the index is zero If the treasure count is greater than zero Hide the player Show the boat diver We actually already have this if statements. So I guess I just had this too far down honestly because now this is up here You don't need this again Called deposit treasure So actually I guess inside of here Oh, oh, okay. Yeah state Okay, this is the state of the game though. So it should also go self dot player dots curse state equal player dot State equal diver player That state no treasure because we're depositing it so after we Once we start depositing it we essentially have no more and it'll basically just run On its own to run us down to zero Okay, let me uh catch up here on the chat Yeah, the feather wing connector is on the pi gamer and the pi badge but the lc left it off But you could solder one if you bought one Yeah, it is surface mount. So it's kind of small but it is on the larger side of surface mount things though. So it's like You don't have much experience with surface mount. It's actually a good thing to start with and it might be better to practice with something less expensive, but It is a bigger as far as surface mount things go. So a good idea. Glad they put those pads there Optional airlift must have been in mind when they designed it. Yeah, I think so airlift package bundler The way to do it automatically in download games over wi-fi future is looking cool. Definitely agree Yeah, web workflow. I think is gonna bring a lot of stuff like setting up Games and stuff automatically to your device I think that can uh be a thing that web workflow makes a little bit easier for some stuff too Use it for load cell thermal camera motor controller rtc thermal camera wings, uh, not all at the same time though Really cool. I had no ideas in the feather ecosystem. Definitely will put one of those on the wishlist. Yeah High badges and the pi gamers. Yeah, they're They're kind of like the weirdest ones of the feather ecosystem because they just have the stamp on the back, but It does have the stamp on the back and you can put wings onto them So it's pretty sweet in adapter to connect the badge to a feather cricket for robot. Nice Or do we know in the aid of fruit IO you could put your high scores? That's true. We could send our high scores over to aid of fruit IO We could make like a scoreboard to go on your tv or something gotta leave early. Thanks for the stream Yeah, thanks. Thanks for hanging out as Patrick. Have a good night A good weekend and everything. I'll be signing off here in just a few minutes. Anyway, so not gonna miss too much Um, I will check here. So let's make sure that we properly Get rid of our bag now. Now we have the bag All the way back We still have it Oh, but now Now we don't I think it's probably because we didn't call update I think what happened is we set the current state To no treasure But that uh update location this thing This is what actually checks the state and then decides Which sprite to show so we did not actually We changed states, but it didn't matter until we called this again And so actually the part that's weird is the fact that this doesn't get called When you go from boat diver to location index zero on the player diver. How's it going Johnny? um So do we just call update? I'm not sure if that's what we need to do or do we set Our sprite Index manually I guess calling update seems like the better thing to do I don't know if that's gonna bother it like This might make the player show in a place or with a sprite that we don't want it to I'm not sure I have to see I got caught like right when I went down I don't think the bag was there though. So I do think it worked They're near the end of it Finally been able to catch a stream for the first time far too long I hope everyone's doing well and having a lovely friday. How's it going? Is that Keith? I think yeah, Keith the EE Thanks for hanging out for a bit with us here Hope you have a nice hope you had a nice day nice friday and a nice weekend and all that such Plus one out there it is Okay, and so as soon as I go down I should not have the bag which I don't anymore. So we're good now Okay, oh, I thought it was gonna get me Yeah, I think we collect them too fast here I'm just spamming the button and it's basically giving me one treasure per button spam, of course I Didn't start running back fast enough. So we ended up losing it, but This one I feel like It's a little slower. It's not one per It's not one per button press. I will say too. It also starts a little bit faster Oh gosh, oh dear I think it's like every three presses you get one score Maybe two presses. I was trying to do it and I was going slow, but I got caught Okay, so game a is taking lives. Okay, so we're at the end of the game here. This is game over We'll need to make the logic for that What does game b do? Feels a little faster, but I'm not sure if it actually is I will say I don't actually spot the difference I was thinking the difference between a and b was that one of them didn't take your lives away But that does not appear to be the case. We lost lives on both of them So I'll have to do some research and figure out what is the uh specific difference between game a and game b We'll slow this down as well Maybe every two presses I'm gonna try to get in there one more time Yeah, I think it's two presses get you one score Which what I'm doing right now is every oh this automatically bumps you down Did it do that in game a? Of course, maybe the first life is different Oh, no, it does it did automatically. Okay Okay, so automatically pushing them off the boat collecting treasure slower Game over sequence of just continue to flail I'm gonna start noting these down We'll probably hook up the a and b buttons on the pi gamer to be game a and game b as well On the real one. There's buttons for game a and game b We'll probably use A and b these two buttons for those What was the third one I said? Oh automatically pushing them off the boat that way they have to go Basically that limits the game because like in my version the way it's written right now you can You can just wait here forever, right? Like it will never force you to actually play Um, but the real one it looks like does so that's a good list of concrete things I'll need to research game a and game b to figure out the exact differences there to implement those Um, but we're getting pretty darn close here. We got a lot of the rest of the functionality implemented Especially around the diver getting caught. Uh, I thought we were a little closer than we were but we definitely are pretty much there now um Yeah, I'm feeling pretty good about this. I will Let's see today is friday I'll be back tomorrow for my stream on saturday morning. That's saturday morning at 10 a.m. Central time um, and so if you're interested in following the development of this game then, um That's the next time you can see me work on it. We'll be tomorrow morning at 10 a.m. Central I'll be on my own youtube and my own twitch instead of adafruit here. We're on the adafruit channel for youtube and twitch If you want to get a notification you can follow me on twitch. I am foamy guy underscore twitch over there So you can follow me and then you'll get a notification when I start streaming on saturdays Um, I will pick up where I left off here tomorrow morning. So I'll be working on that game a game b stuff I'll knock out those three items And I'll try to look into the difference a little bit more and we'll try to get those two modes flushed out um And then after that it's time to get into the guide I guess there's maybe a little work to do on the the points up here as well These are just the standard font. We'll get a nice seven segment looking font for them But that'll be pretty quick and easy. I think so That's kind of the the remaining things to do on this project. Um, and that's what we'll be working on tomorrow So thank you everybody for watching. Let me see what this one is one reason pie game as a samd is Compatible. Oh, that's a good point. Yeah samd 51 has got the make code stuff. And I think you're right Yeah, I don't believe there is compatibility yet on rp20 40 or even maybe sp32 s2. I don't think either which is a good point Yeah, make code Was one of the primary like other ways to program this device. Yeah, definitely a good point Thanks for the screen. Yeah, for sure. Thanks for watching. See Grover and everybody else David Paul I know a couple of folks left keith johnny. Thanks for tuning in as Patrick left a little bit ago DJ Devin see Grover. I think all of you for interacting in the chat here see Grover I think thanks for the suggestions and stuff. You got me on the right track for a few of those things Uh, the shippu was around for a bit. Thanks to the shippu if you're still hanging out Um, I think we got just about everybody on the discord side, right? Uh add in um I didn't I didn't see that when it came through so sorry. I didn't mention it before but thanks for tuning in if you're still here Definitely appreciate having you Charles, thanks for tuning in as usual and chatting in the in the youtube with us here Uh, Paul DJ Devin I think we got everybody Todd bot. Uh, thanks for tuning in Uh over on the youtube side. We got some of the usual suspects beata. Thanks for tuning in as usual Jason Perry. Uh, thank you. I don't Don't recall seeing your name before so you might be a new viewer. Uh, maybe not though too. I don't have the best memory, but Um, uh, either way though. Thanks for tuning in clippership. Uh, gordy g And axl magnus manson. Uh, yep. Thank you to all you folks. Um, yeah, again, I'll be back tomorrow morning. Thanks everybody. Hope everyone


A couple of days ago Ubuntu released version 23.04 Lunar Lobster, now 23.04 I've played around with it a little bit in the last couple of days and I've got to say I've been pretty impressed. Actually I'm usually impressed with the Ubuntu releases. The interim releases which are the non long term support releases, now sometimes those are hit or miss. There was one release about a year and a half ago I think it was 21.10 that honestly I was pretty harsh on that Ubuntu release because of performance. It ran really slow sluggishly, applications took forever to launch but that was kind of an outlier because the very next version of Ubuntu it looked like all of that stuff was fixed. It was very peppy and fast and performant. It seems like every version since that release things have improved as far as I know people complained about the speed of the snap packages and things like that. But I haven't noticed any issues with that at all with this latest release. One of the big changes with this release of Ubuntu 23.04 is the inclusion of a new installer, the subsequent installer which uses Flutter which is a toolkit that comes to us from GNOME but it functions and feels very much like the old traditional ubiquity installer that Ubuntu has always used except it does have a little bit more fresh, more modern look to it. But pretty much all the features that you expect to be there as far as being able to manually partition drives and some of the experimental feature options that were in the Ubiquity installer they're also here. You also have the option of doing the normal installation, the minimal installation but other than that the theming is great. You can do a light theme or a dark theme for the installer if you care about the color of the installer while you're waiting five to ten minutes for the installer to actually do its thing and it just looks good. The slideshow was very sharp, very professional, job well done on the installer Ubuntu. One of the things that has always impressed me about Ubuntu is the fact that it has a corporation behind it, a large corporation, Canonical, they have obviously money and a large team behind this distribution and you can tell because it's always very professional, polished, it's very well put together. It's not hacky like so many community distributions that look like they're just being held together by duct tape. No, no, no, Ubuntu is a very cohesive, coherent product and I love the default wallpaper. One of the things is the wallpapers with Ubuntu are usually very good but I have to say this may be the best wallpaper pack of any release of Ubuntu ever. If I go to change backgrounds, let me show you some of the wallpapers because usually they have a pretty good wallpaper pack and one or two will be like super outstanding like that lobster wallpaper. I love that but look at some of the other lobster themed wallpapers. Look at this thing. That is an amazing wallpaper and you got light and dark themes depending on whether you have the light or dark GTK themes set. By the way, you can set the light and dark default GTK themes in the installer while you're running through that new subsequent installer or you forget to set to a dark theme. If you later want to change it, you can of course open up the settings manager here. Here is some other lobster wallpapers. Look at this thing. That is an absolutely amazing wallpaper. Here's another one. A white lobster. That looks great against the black background and a dark theme. This wallpaper pack, I'm telling you because I've seen every wallpaper from every Ubuntu release since the beginning and they've always had some amazing wallpapers but this truly is the best in my opinion. The real standout feature for Ubuntu 2304 is the fact that it ships with GNOME 44 which is rather new, right? GNOME 44 hasn't been out that long. A matter of fact, GNOME 44 I don't think has even made it into the Arch Linux repose yet which is kind of weird but Arch Linux here lately has a problem really keeping packages up to date. There's so many out of date packages on Arch but that's its own separate video but Ubuntu has GNOME 44. I love this session menu. When I click on the power button, this new session menu, now I'm using Ethernet here on my computer so I have this wired section but I could kick on and off the network if I want to. If you were connected with Wi-Fi you would have a Wi-Fi menu that when you click on the Wi-Fi button you will see all the available Wi-Fi connections. If you had a Bluetooth connection, you would have a Bluetooth menu with a drop down as well.  You also have some buttons here that I normally wouldn't expect in this kind of power session menu. For example, we have a screenshot button to immediately go to the screenshot tool. Now, typically I would probably just go into the applications menu, show applications here and search for the screenshot tool or if I had it set to a key binding, I'd use that. Kind of an odd place to put the screenshot quick launcher there but I don't mind it. You also have a quick launcher for the settings which is of course your GNOME settings where we were just at looking at the wallpapers and the GTK theme a second ago. And of course in the logout session menu here you have the ability to log out or to lock the screen. Now of course you have a slider for your volume control as well. As far as the applications, the standard suite of applications that has come with Ubuntu forever is here. So it's typically a lot of the standard stuff. You're going to get Firefox, you're going to get some of the default GNOME applications, you're not going to get a whole bunch. For one thing, Ubuntu, kind of a minimal distribution. And this was the normal installation option. I didn't do what they call the minimal installation option. So this is the full installation but again, you don't get a ton of programs. You get just enough to get started.  Let's take a look at Firefox. Let's see what version of Firefox we're on. So if I go into the menu system and go to help and to about Firefox, we are on Firefox 111. So that's a really recent version of Firefox. And you notice I didn't even think about how fast it started up. It started up rather quickly, right? Especially in this virtual machine, which I'm running this in a virtual machine for purposes of this recording. The virtual machine only has six gigs of RAM. So it's like a kind of mediocre or underpowered laptop. You can say I had no problems with the speed of that. I didn't even really consider that, you know, takes a couple seconds, which is about normal, considering the specs. If I was running this on my main production workstation, probably wouldn't be an issue at all because it's a beast of a machine. I have 64 gigs of RAM on the actual host machine here. Now, one of the controversial decisions here in the last couple of versions of Ubuntu has been the decision that some of these applications no longer install as a dev pack using the app to package manager. Instead, they default to installing as a snap. And for the most part, this is not a decision that canonical made. This is not a decision that any of the Ubuntu team has made. This is a decision that the maintainers of these packages on Ubuntu have made. It's just easier for some of these packages that receive a lot of updates constantly like Firefox, for example, web browsers, especially are constantly being updated. So if you're packaging them for a static release distribution like Ubuntu, it might be better to package them as a snap, which can roll, right? That they constantly get updated. No, the snap packages are self-updating packages. So that's why Firefox and so many other, especially web browsers probably, are now going to start moving towards snap packages on Ubuntu. You're going to see other things that we'll default to installing as a snap. A lot of times when you go into the terminal now and do sudo apt install name of package, if the package is not available, it will warn you the package is not available through the apt package manager, but it will tell you the snap command to install it. A lot of your proprietary software is going to be like that. So if I tried to install something like discord or telegram or Spotify, you know, it's going to tell me, hey, apt can't install that. But you know what is found in the snap store? Do a sudo snap, install discord, for example, and boom, there you go. And I could open a terminal and put this to the test here. So let's open a terminal, zoom in and let's see if I can do a sudo apt install Spotify. Proprietary software, so is discord, so is telegram. That's why they're not in the standard repositories. So it's going to say, hey, you can't install that, right? But Ubuntu is very much like Debian in that they really don't like putting non free software in their repos. They're very anti proprietary software in the standard repos. That's why if you want Spotify, you can go get it as a snap. There's a lot of proprietary software out there that's packaged as snap. So that's why you're going to have to go get all of that as a snap. While I've got the terminal open, let's do a snap list. Let me zoom out so you can actually see the list. What is installed as a snap out of the box? Really nothing. Firefox, Firefox, the snap store, which is your software center. That's it. And then some of the other stuff are just dependencies that are needed. So really you have really one snap, you know, you have Firefox. So the people that say that Ubuntu is forcing snaps on people, not the case. That's really not the case at all. It's kind of a weird complaint. Let's also do an apt list dash, dash installed and get a list of everything that is packaged as a Debian package through the apt package manager. Let me up arrow and pipe that into WC dash L. WC is the word count program. If you give it the dash L flag, you get a line count. So let's get a line count of everything that was installed as a DevPack. 1,810 Debian packages are installed versus Firefox is installed as a snap. So definitely not forcing snaps on anyone. Because GNOME has moved to their new version 44, a lot of the GNOME applications have also been updated to newer versions with some newer features such as Nautilus here. So Nautilus, if you're looking in a list view, so by default, Nautilus has this view. But if you go into this list view and you go into preferences and under preferences, you have the general section here, expandable folders in list view. Slide that on, which in my case, it's already ticked on. And now if I go to a folder that has some sub directories or stuff in it and I click the little right pointing Chevron, the greater than sign, right? It's letting me know that I could get an expandable list here. So if I click on it, it's kind of hard to click. One thing I've noticed with this, it is kind of hard to hit that in just the right spot, but you get it to pop out and you can see now you get, you know, the Firefox directory, which is also expandable. Now, for me, I've never cared for this kind of expandable folder, this tree view and file managers. It's not something I've ever used in any of my file managers, but I know some people probably prefer it. And it's certainly nice to have options. Having more options is never a bad thing. Let's take a look at the Ubuntu software center. So let's open that. The very first time you open it, by the way, it will take a minute to load because it's got to download a new catalog of software, get all that information from the internet here. I just opened it not too long ago. So it pops up rather quickly for me here on camera. But you can see, looks nice, right? It's just your standard GNOME software center. And it's very easy, intuitive. There's the updates tab, which right now Firefox does have an update. So if I wanted to take that, I could hit update on Firefox, just update that one package, or I could hit update all to update all the packages that have an update available. This was just released two days ago. So obviously there's nothing to update. Just Firefox in this case has seen a minor bump from 111.0 to 111.0.1, it looks like. So not much difference with the software center. It's the same Ubuntu software center you've grown to know and love for those that use it. For me, I prefer opening a terminal and doing things at the command line. For example, doing a uname dash R to check the kernel version. Now this is a very recent kernel, 6.2.0. So that is good, especially for those of you that have some rather newer hardware that need the latest kernel for drivers and such. For those of you wondering about system resource usage, let's see if Htop is installed. It is not. So let's do a sudo apt install. Htop looks like Htop is also packaged as a snap because it told us we could install it either with apt or snap, but I installed it through the apt package manager. So let's do Htop. Now I have opened a lot of things on camera here in the last few minutes. So the RAM usage is actually a little higher than what I would have expected. 1.27 gigs of the six gigs of RAM that I gave this VM. That is high. Also, CPU is actually running rather high. Nearly 20%, 34% at fluctuates, but I'd say it's using about 20% of the CPU. Now we just opened the package manager a second ago and ran that update, installing Firefox. I don't know if that's, the package manager is still doing something. One thing we should also mention here, let me close the terminal, is that by default, 2304 Ubuntu defaults to GNOME on Wayland. So we're actually running GNOME on Wayland here. Now there is an option in the menu in your login manager. If you want to, you can switch to Ubuntu on Xorg. So you can go back to just using GNOME on Xorg if you need to. Now Wayland, a lot of window managers on Wayland have issues but the big desktop environments, GNOME and KDE have gotten most of the Wayland stuff kind of worked out. Most people are probably going to be okay and running GNOME on Wayland. If for some reason with your hardware, Wayland is an issue, you do have that fallback option in the login manager if you need to switch back to using Xorg. Overall, the couple of hours that I spent playing with Lunar Lobster in the last couple of days, it's been great. Like I've really been impressed with it. It actually makes me kind of want to install it, right? Especially having run rolling release distributions and some of the headaches that sometimes I get with broken packages and things like that. If I ever wanted to actually run a static release distribution, this one, this really wouldn't be a bad one, right? Going back to Ubuntu, damn, that's a sexy wallpaper. Anyway, guys, Ubuntu team, job well done on the big release 2304 Lunar Lobster. Now before I go, I need to thank a few special people. I need to thank the producers of the show, Gabe James Maxim, Homie's too bald, Matt Nimit, Mitchell, Paul, Royal West, Armor Dragon, Bash Potato Chuck, Commander Angry, George Lee, Marshdom, Methos, Nate, Erion, Paul, Peace, Archimedes, Royal Polytech, Realiteats for Less Red Prophet, Roland, Tools Devils, and William Zenibet. These guys, they're my high-steered patrons. Over on Patreon about these guys. This quick and cursory look at Ubuntu 2304 Lunar Lobster. It would not have been possible. The show's also brought to you by each and every one of these fine ladies and gentlemen, all these names you're seeing on the screen right now. These are all my supporters over on Patreon. I don't have any corporate sponsors. I'm sponsored by you guys, the community. If you like my work, subscribe to DistroTube over on Patreon. All right, guys, peace. Ubuntu understands how to make a sexy desktop. It's all about the wallpapers.