]> fortfriendship.online Git - gnargle.github.io.git/blobdiff - projects/pipboy.html
Merge branch 'main' of https://github.com/gnargle/gnargle.github.io
[gnargle.github.io.git] / projects / pipboy.html
index 8fbada20ac8cb618597431b909cb13c817b5adbe..091a5d8664f8cbc3bf527b9eb2497eaafd6ab78d 100644 (file)
     />
     <meta
       property="og:image"
-      content="https://athene.gay/img/projects/pipboy/pipboy2.jpg"
+      content="https://athene.gay/img/projects/pipboy/accurateLayout.jpg"
     />
     <meta
       name="twitter:image"
-      content="https://athene.gay/img/projects/pipboy/pipboy2.jpg"
+      content="https://athene.gay/img/projects/pipboy/accurateLayout.jpg"
     />
     <link rel="stylesheet" href="../main.css" />
   </head>
                 <h3 class="datestamp">22/03/2025</h3>
               </div>
               <p>
-                OK we're back again baby. And this time I sweart I am going to
-                do input. To show willing I've even already started diving into
-                the firmware to work out how it's done!
+                OK we're back again baby. And this time I swear I am going to do
+                input. To show willing I've even already started diving into the
+                firmware to work out how it's done!
               </p>
               <a href="../img/projects/pipboy/firmwareInputListener.png">
                 <img class="blog-img-lrg"
                 more perks than will fit in our available space. Then this
                 screen is basically done!
               </p>
+              <b>Code Updated. Check the github link to keep up.</b>
+              <p>
+                And now that's done too! Couple of bugs with loading the right
+                files to list (primarily loading too many) but smart use of the
+                modulo operator and we're done! I filled in every perk I think
+                is funny and applicable to me, did some manual edits to some of
+                the icons (new vegas icons seem to generally be less optimised
+                for a real monochrome display, a rare instance where Bethesda's
+                attention to detail is better than Obsidian's) and filled in all
+                their data and, well, that's it!
+              </p>
+              <video width="672" height="378" class="video-embed" controls>
+                <source
+                  src="../img/projects/pipboy/fullscreendemo.mp4"
+                  type="video/mp4"
+                />
+                Your browser does not support the video tag.
+              </video>
+              <p>
+                I'm pretty happy with it! This was a really enjoyable project
+                and let me flex a lot of the muscles I don't tend to use a lot
+                in my pure software day-to-day.
+              </p>
+              <p>
+                I might come back to this later and make a second screen with
+                stats on it, but that's basically the same layout etc as the
+                perks screen just with a number, so I probably won't write it
+                up.
+              </p>
+              <p>
+                So yeah, for now, I'll leave it here. Thank you for reading and
+                following my thought processes, if you did!
+              </p>
+              <b>Code Updated. Check the github link to keep up.</b>
+              <p>
+                OK I LIED one last update. I wanted to handle the selector on
+                the right moving away from INV gracefully. Until now, switching
+                this while in the app would do nothing, and to get around this I
+                had the click in of the left wheel as the 'return me to the main
+                menu' key. That's not very accurate to how it should work,
+                though.
+              </p>
+              <p>
+                So I dove into the firmware again and after a few false starts I
+                found checkMode(). This is called on a timer in all the other
+                apps every 50 milliseconds. I experimented a little with this
+                timeout in my app - 50ms made the perk list feel laggy (because
+                I'm loading data from disk so ops take a bit more time than
+                everything else in the system) so I tweaked it up to 100ms,
+                which was a nice compromise.
+              </p>
+              <p>
+                Twiddling the mode dial triggers a menu change, but I also made
+                sure to gracefully shutdown when a change was detected - this
+                includes running showMainMenu(), which if we don't do the
+                control handlers don't get registered properly. Important.
+              </p>
+              <p>
+                I also dropped in a handler for the torch button - it does
+                nothing other than shutdown and activate the torch normally.
+                While testing this I actually found a bug with the current
+                firmware - if you stay on the torch page and the time changes,
+                the footer will display over the torch screen. Neat!
+              </p>
+              <p>Anyway that is really it this time. Thanks for reading <3</p>
+              <div class="title-block">
+                <h3 class="blog-title">The Stats Screen</h3>
+                <h3 class="datestamp">22/03/2025</h3>
+              </div>
+              <p>
+                OK I WORKED ON IT A BIT MORE but as mentioned it wasn't
+                particularly exciting - this actually reuses basically all the
+                same code, with just a smidge more for drawing the skill points.
+              </p>
+              <p>
+                I did actually have all the skills in one big JSON but it caused
+                an out of memory error, so I abandoned it and went back to
+                individual files for each skill.
+              </p>
+              <p>Anyway, here's it working!</p>
+              <video width="672" height="378" class="video-embed" controls>
+                <source
+                  src="../img/projects/pipboy/statScreen.mp4"
+                  type="video/mp4"
+                />
+                Your browser does not support the video tag.
+              </video>
+              <div class="title-block">
+                <h3 class="blog-title">The Special Screen</h3>
+                <h3 class="datestamp">23/03/2025</h3>
+              </div>
+              <p>
+                Final update! I added the SPECIAL screen too, and reordered the
+                screens to match the in-game pipboy. Finally I also did some TLC
+                to make the app a lot more responsive and reduce redraws, so now
+                it feels really snappy :)
+              </p>
             </div>
           </div>
         </div>