Walfie's Nonograms is a homebrew GBC game featuring 150 different nonogram levels, with the grids increasing in size early on from 5x5 to 10x10 up to 15x15. This TAS aims to beat all of those levels as fast as possible with superhuman levels of precision and nonogram solving.
Game objectives
- Emulator used: Bizhawk 2.11.1
- Aims for fastest completion
- Also aims for fastest IGT completion (not that there would be any differences if the TAS was optimised for one timing method over the other)
For a while I've been wanting a game to challenge me with my routing of grid-based movement and that eventually led me to picking up this nonogram game, where the movement is as stripped back as it can get without the added gameplay of having to move a character places in a grid-based space. With the help of a nonogram solver and GIMP for drawing the routes I'd use, it started out fairly simple with the idea being you could only move up, down, left or right on each frame, and each cell can be shaded in every other frame. I could then clean up the input sequences afterwards so that consecutive inputs where one or both of them don't also shade in a cell can also be on consecutive frames.
This then led me to understanding how the game registers inputs and being able to streamline the routing process. The game can process up to two inputs every two frames. That means you can have up to 2 different directions held on the same frame or two consecutive frames with different inputs, but there'd always have to be a break frame between. It can't handle holding 2 directions on one frame and then another direction the next. It allowed me to really save time off of some of the levels I'd completed by this point and it also meant I could do diagonal moves in a single frame which was an absolute gamechanger. Being restricted to just the four directional inputs was intended as part of this learning experience but it also made it a tedious and uncertain process whether a route I came up with was perfect. With diagonal inputs, I could skip ahead to working out which bits of the solution needed excess moves and figure out the minimum moves a level would need based on that.
It didn't come without quirks, however. For starters (this isn't really about inputs but) levels are only counted if the internal timer ticks over to 0:01 which is why I wait on the 5x5 puzzles. Then the biggest cause of grief for me was the start of each level. A can be pressed before any directional inputs can, so on levels where the starting cell is shaded, the input sequence will alternate between an A press and a direction until the route goes over an unshaded cell, where the A press and directions can be synced back up. That wasn't much of a problem but the inconsistency of when you can make you first input was. Some levels start off with a diagonal input so normally I would have the inputs on the same frame but this isn't possible, so I split it up into two frames but other time not even this was enough and I'd need to leave a blank frame between the inputs. Additionally, I'd also have to put, for example, the right input first because the down input wasn't being registered on that first frame. Other times in the middle of a sequence, the game would decide not to move on from a cell and so it'd clear the cell which is why in a couple of levels there seems to be a random gap between some inputs and there didn't seem to be a particular reason for this. Other routes in the same level would have the same problem on that same frame.
While working on the TAS, I also put together a spreadsheet to track my progress can because I was interested in seeing the moves to cells ratio of each level and how it relates to the size of the grid. It doesn't exactly add anything to the TAS but for anyone interested, here it all is. There will also be some discrepancies between the number of moves written in the table and what actually happens because a level that starts with a diagonal input will have that registered as one move here but in the game, as previously mentioned, it will be split up into two different directional moves.
| Level | Time | Moves | Cells | Picture | Size | |
| 1 | 0:01 | 16 | 16 | Heart | 5x5 | 1 |
| 2 | 0:01 | 20 | 19 | Kitten | 5x5 | 2 |
| 3 | 0:01 | 14 | 14 | House | 5x5 | 3 |
| 4 | 0:01 | 12 | 12 | Umbrella | 5x5 | 4 |
| 5 | 0:01 | 15 | 16 | Hourglass | 5x5 | 5 |
| 6 | 0:01 | 17 | 16 | Puppy | 5x5 | 10 |
| 7 | 0:01 | 11 | 10 | Anchor | 5x5 | 9 |
| 8 | 0:01 | 19 | 19 | Ghost | 5x5 | 8 |
| 9 | 0:01 | 15 | 16 | Tower | 5x5 | 7 |
| 10 | 0:01 | 11 | 9 | Down Arrow | 5x5 | 6 |
| 11 | 0:02 | 58 | 57 | Penguin | 10x10 | 11 |
| 12 | 0:01 | 54 | 51 | Cherries | 10x10 | 12 |
| 13 | 0:01 | 48 | 45 | Carrot | 10x10 | 13 |
| 14 | 0:01 | 48 | 46 | Jelly Donut | 10x10 | 14 |
| 15 | 0:02 | 57 | 56 | Music | 10x10 | 15 |
| 16 | 0:02 | 58 | 56 | Boat | 10x10 | 19 |
| 17 | 0:01 | 49 | 47 | Man With Hat | 10x10 | 18 |
| 18 | 0:01 | 47 | 43 | Fried Egg | 10x10 | 17 |
| 19 | 0:01 | 50 | 48 | Octopus | 10x10 | 16 |
| 20 | 0:01 | 49 | 48 | Wall Peek | 10x10 | 15 |
| 21 | 0:02 | 69 | 68 | Moon Reflection | 10x10 | 21 |
| 22 | 0:01 | 40 | 40 | Magnifying Glass | 10x10 | 22 |
| 23 | 0:01 | 45 | 44 | Yarn Ball | 10x10 | 23 |
| 24 | 0:01 | 50 | 46 | Snake | 10x10 | 24 |
| 25 | 0:01 | 47 | 44 | Brush | 10x10 | 25 |
| 26 | 0:01 | 52 | 50 | Laptop | 10x10 | 30 |
| 27 | 0:02 | 57 | 56 | Mahjong Tile | 10x10 | 29 |
| 28 | 0:01 | 55 | 53 | Mushroom | 10x10 | 28 |
| 29 | 0:01 | 46 | 39 | Walfie Face | 10x10 | 27 |
| 30 | 0:01 | 50 | 49 | Pizza | 10x10 | 26 |
| 31 | 0:01 | 50 | 48 | Hair Bow | 10x10 | 31 |
| 32 | 0:01 | 55 | 51 | Snail | 10x10 | 32 |
| 33 | 0:01 | 43 | 38 | Rabbit | 10x10 | 33 |
| 34 | 0:01 | 50 | 50 | Burger | 10x10 | 34 |
| 35 | 0:01 | 48 | 48 | Shrimp | 10x10 | 35 |
| 36 | 0:03 | 111 | 107 | Fried Rice | 15x15 | 40 |
| 37 | 0:04 | 126 | 122 | chocojDog | 15x15 | 39 |
| 38 | 0:02 | 72 | 66 | walfasRat | 15x15 | 38 |
| 39 | 0:03 | 114 | 107 | Glorp | 15x15 | 37 |
| 40 | 0:04 | 141 | 137 | op Ratlo | 15x15 | 36 |
| 41 | 0:03 | 105 | 99 | Bear | 15x15 | 41 |
| 42 | 0:03 | 102 | 94 | Pumpkin | 15x15 | 42 |
| 43 | 0:04 | 133 | 132 | Treasure Chest | 15x15 | 43 |
| 44 | 0:03 | 111 | 110 | Ham | 15x15 | 44 |
| 45 | 0:04 | 122 | 121 | Fishing | 15x15 | 45 |
| 46 | 0:04 | 116 | 115 | Froggy Chair | 15x15 | 50 |
| 47 | 0:03 | 100 | 94 | Capybara | 15x15 | 49 |
| 48 | 0:04 | 117 | 113 | Cool Sunglasses | 15x15 | 48 |
| 49 | 0:03 | 97 | 94 | Candy | 15x15 | 47 |
| 50 | 0:04 | 139 | 132 | Scissors | 15x15 | 46 |
| 51 | 0:03 | 89 | 86 | Cow | 15x15 | 51 |
| 52 | 0:03 | 100 | 94 | Bag of Sugar | 15x15 | 52 |
| 53 | 0:05 | 155 | 150 | Godot Logo | 15x15 | 53 |
| 54 | 0:04 | 127 | 120 | Tombstone | 15x15 | 54 |
| 55 | 0:04 | 130 | 128 | Snowman | 15x15 | 55 |
| 56 | 0:03 | 95 | 90 | Squirrel | 15x15 | 60 |
| 57 | 0:03 | 104 | 97 | Frog | 15x15 | 59 |
| 58 | 0:03 | 113 | 111 | Crab | 15x15 | 58 |
| 59 | 0:03 | 98 | 96 | Bonfire | 15x15 | 57 |
| 60 | 0:03 | 85 | 75 | Sheep | 15x15 | 56 |
| 61 | 0:03 | 96 | 89 | Goat | 15x15 | 61 |
| 62 | 0:03 | 91 | 82 | Sign | 15x15 | 62 |
| 63 | 0:03 | 105 | 104 | Horse | 15x15 | 63 |
| 64 | 0:05 | 148 | 137 | Jester | 15x15 | 64 |
| 65 | 0:04 | 132 | 130 | Wi-Fi | 15x15 | 65 |
| 66 | 0:04 | 125 | 121 | Dinosaur | 15x15 | 70 |
| 67 | 0:04 | 126 | 124 | Mimic | 15x15 | 69 |
| 68 | 0:03 | 115 | 106 | Cookie | 15x15 | 68 |
| 69 | 0:04 | 116 | 112 | Rooster | 15x15 | 67 |
| 70 | 0:04 | 139 | 138 | Earth | 15x15 | 66 |
| 71 | 0:03 | 89 | 88 | Banana Peel | 15x15 | 71 |
| 72 | 0:03 | 104 | 101 | Lollipop | 15x15 | 72 |
| 73 | 0:03 | 96 | 95 | Mug | 15x15 | 73 |
| 74 | 0:03 | 110 | 108 | Witch Hat | 15x15 | 74 |
| 75 | 0:03 | 116 | 112 | Panda | 15x15 | 75 |
| 76 | 0:04 | 128 | 121 | Game Boy | 15x15 | 80 |
| 77 | 0:03 | 101 | 101 | Tin Can | 15x15 | 79 |
| 78 | 0:03 | 102 | 100 | Pocket Watch | 15x15 | 78 |
| 79 | 0:03 | 93 | 90 | Tea Bag | 15x15 | 77 |
| 80 | 0:03 | 111 | 107 | Headphones | 15x15 | 76 |
| 81 | 0:03 | 103 | 96 | Walfie Stare | 15x15 | 81 |
| 82 | 0:02 | 77 | 75 | Ace of Hearts | 15x15 | 82 |
| 83 | 0:03 | 98 | 94 | Potion | 15x15 | 83 |
| 84 | 0:03 | 106 | 106 | Flag | 15x15 | 84 |
| 85 | 0:05 | 152 | 149 | Water | 15x15 | 85 |
| 86 | 0:03 | 109 | 106 | Floppy Disk | 15x15 | 90 |
| 87 | 0:05 | 146 | 145 | Alligator | 15x15 | 89 |
| 88 | 0:05 | 150 | 150 | Butterfly | 15x15 | 88 |
| 89 | 0:03 | 87 | 85 | Tuba | 15x15 | 87 |
| 90 | 0:04 | 121 | 116 | Maneki Neko | 15x15 | 86 |
| 91 | 0:04 | 117 | 115 | Pie | 15x15 | 91 |
| 92 | 0:03 | 94 | 88 | GriddyGoose | 15x15 | 92 |
| 93 | 0:03 | 107 | 106 | Musical Keyboard | 15x15 | 93 |
| 94 | 0:04 | 127 | 120 | Skyline | 15x15 | 94 |
| 95 | 0:04 | 115 | 115 | Drum | 15x15 | 95 |
| 96 | 0:03 | 100 | 96 | Potted Cactus | 15x15 | 100 |
| 97 | 0:03 | 114 | 112 | Present | 15x15 | 99 |
| 98 | 0:02 | 85 | 85 | Axe | 15x15 | 98 |
| 99 | 0:04 | 138 | 136 | Fish | 15x15 | 97 |
| 100 | 0:03 | 91 | 92 | Lawn Mower | 15x15 | 96 |
| 101 | 0:04 | 126 | 124 | Suitcase | 15x15 | 101 |
| 102 | 0:04 | 117 | 116 | Rose | 15x15 | 102 |
| 103 | 0:04 | 136 | 131 | Calendar | 15x15 | 103 |
| 104 | 0:03 | 98 | 89 | Controller | 15x15 | 104 |
| 105 | 0:02 | 82 | 75 | Taco | 15x15 | 105 |
| 106 | 0:04 | 132 | 133 | Plane | 15x15 | 110 |
| 107 | 0:03 | 99 | 94 | Ice Cream Truck | 15x15 | 109 |
| 108 | 0:05 | 145 | 142 | UFO | 15x15 | 108 |
| 109 | 0:03 | 98 | 94 | Sketchbook | 15x15 | 107 |
| 110 | 0:04 | 115 | 112 | Ice Cream Bar | 15x15 | 106 |
| 111 | 0:04 | 123 | 114 | Milk Carton | 15x15 | 111 |
| 112 | 0:04 | 120 | 119 | Sushi | 15x15 | 112 |
| 113 | 0:03 | 111 | 106 | Cat in Box | 15x15 | 113 |
| 114 | 0:03 | 109 | 102 | Parrot | 15x15 | 114 |
| 115 | 0:03 | 88 | 85 | Pineapple | 15x15 | 115 |
| 116 | 0:04 | 133 | 132 | Sword | 15x15 | 120 |
| 117 | 0:05 | 156 | 150 | Spray Can | 15x15 | 119 |
| 118 | 0:03 | 96 | 93 | Paint Bucket | 15x15 | 118 |
| 119 | 0:03 | 103 | 93 | Desert Cactus | 15x15 | 117 |
| 120 | 0:04 | 126 | 124 | Cake | 15x15 | 116 |
| 121 | 0:04 | 128 | 122 | Christmas Tree | 15x15 | 121 |
| 122 | 0:03 | 108 | 104 | Bald Streamer | 15x15 | 122 |
| 123 | 0:03 | 93 | 88 | Marshmallow | 15x15 | 123 |
| 124 | 0:04 | 123 | 117 | Bad Apple Reimu | 15x15 | 124 |
| 125 | 0:03 | 90 | 87 | Clover | 15x15 | 125 |
| 126 | 0:04 | 116 | 114 | Lighthouse | 15x15 | 130 |
| 127 | 0:04 | 118 | 115 | Walfie | 15x15 | 129 |
| 128 | 0:04 | 118 | 110 | VacuOsly | 15x15 | 128 |
| 129 | 0:03 | 89 | 88 | Sugar Glider | 15x15 | 127 |
| 130 | 0:03 | 99 | 97 | Flower | 15x15 | 126 |
| 131 | 0:03 | 103 | 100 | Cyclist | 15x15 | 131 |
| 132 | 0:04 | 117 | 117 | Jerboa | 15x15 | 132 |
| 133 | 0:04 | 117 | 111 | Squid | 15x15 | 133 |
| 134 | 0:03 | 105 | 102 | Hamster | 15x15 | 134 |
| 135 | 0:03 | 103 | 101 | Ramen | 15x15 | 135 |
| 136 | 0:03 | 97 | 92 | Golf | 15x15 | 140 |
| 137 | 0:04 | 125 | 120 | Anglerfish | 15x15 | 139 |
| 138 | 0:03 | 90 | 78 | Anime Face | 15x15 | 138 |
| 139 | 0:03 | 103 | 96 | Statue of Liberty | 15x15 | 137 |
| 140 | 0:03 | 112 | 108 | Camera | 15x15 | 136 |
| 141 | 0:03 | 105 | 105 | Bow and Arrow | 15x15 | 141 |
| 142 | 0:04 | 115 | 115 | Windmill | 15x15 | 142 |
| 143 | 0:03 | 113 | 112 | Vim Logo | 15x15 | 143 |
| 144 | 0:03 | 102 | 97 | Mint Aiboo | 15x15 | 144 |
| 145 | 0:03 | 95 | 91 | Aseprite Crocodile | 15x15 | 145 |
| 146 | 0:03 | 113 | 105 | Mountain | 15x15 | 150 |
| 147 | 0:03 | 110 | 105 | Ragnarok Poring | 15x15 | 149 |
| 148 | 0:03 | 109 | 104 | AC Leaf | 15x15 | 148 |
| 149 | 0:03 | 111 | 109 | Kasane Teto | 15x15 | 147 |
| 150 | 0:03 | 106 | 102 | Sunset | 15x15 | 146 |
Challenger: This is a nice homebrew GBC title being all about nonogram puzzle levels, it is very well developed, detailed and polished into this system. I love it!
Excellent job completing all puzzles in a short amount of time, and if everything wasn't enough yet, Cephla returned to the game once more: the new moviefile not only improves this submission by over a minute but also most levels are 00:01 IGT faster than before.
Walfie is the cherry on top of the cake :) Accepting for publication!