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)

Comments

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: Claiming for judging.
Challenger: Replacing movie with an updated one thanks to a significant new trick.
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!

despoa: Processing...


TASVideoAgent
They/Them
Moderator
Location: 127.0.0.1
Joined: 8/3/2004
Posts: 18072
Location: 127.0.0.1
This topic is for the purpose of discussing #10629: Cephla's GBC Walfie's Nonograms in 26:39.690
Walgrey
She/Her
Reviewer, Skilled player (1038)
🇨🇦 Canada
Joined: 10/27/2022
Posts: 116
Location: 🇨🇦 Canada
Yesssssss!!! Thank you for doing this! I attempted this a while back but stopped after I learned you can hold A to highlight cells as you move the cursor instead of repeatedly tapping it. I figured that I would need to redo the TAS to account for this, so I just stopped. Did you hold down A or did you just alternate A on every other frame?
Hi! I'm Kathryn!
Cephla
She/Her
Skilled player (1343)
🇬🇧 United Kingdom
Joined: 8/7/2021
Posts: 95
Location: 🇬🇧 United Kingdom
Ah, I was not aware you could hold A which is a bit silly, wish I'd come across it earlier. It doesn't seem like too bad of a fix, I've got every level otherwise complete and 28 levels in and it's saved 230 frames so I'll definitely continue with implementing this which I hope shouldn't take too long. Seems like it'll be a pretty major time saver
synabler
He/Him
Editor, Active player (391)
🇰🇷 South Korea
Joined: 7/11/2016
Posts: 60
Location: 🇰🇷 South Korea
If you're interested, I've been developing a nonogram TAS optimizer: Thread #27349: Computationally Optimizing Nonogram TASes. There's still some work left to be done to make it scalable to handling nearly hundred 15x15 puzzles, which has been on hold due to other projects and Palworld, but I'll get back to it pretty soon.
Cephla
She/Her
Skilled player (1343)
🇬🇧 United Kingdom
Joined: 8/7/2021
Posts: 95
Location: 🇬🇧 United Kingdom
https://tasvideos.org/UserFiles/Info/639218968260090301 Being able to hold A did manage to save a huge amount of time (4620 frames and 1:22 IGT) and it also means that the slowest levels are now only 4 seconds long rather than 5 seconds. Just like when I was first optimising it before submitting by cutting out the frames between inputs that pressed A and then a direction that doesn't, it was really apparent how seemingly random it is whether consecutive directional inputs will get recognised or not. It was definitely a lot less common for an orthagonal direction and then a diagonal to work, but then a diagonal and orthagonal would sometimes work, but not nearly as often as two consecutive orthagonal inputs would, though even these would sometimes not work randomly. While my intention and goal for this TAS was to get the number of moves down to a minimum which I feel I have been largely successful at, a future submission of this game would benefit from maximising the amount of alternating directions so as many frames can be cut out as possible. One thing I did add to two levels because they were easy and obvious optimisations was wrapping round the board if there was a large gap between shaded cells. The number of use cases for this would likely be small because not many levels have massive gaps between shaded cells and going round the board isn't exactly speedy but it would be interesting to look into.
If you're interested, I've been developing a nonogram TAS optimizer: Thread #27349: Computationally Optimizing Nonogram TASes.
This would great for future improvements that include the above optimisations because the thought of planning out 150 levels manually while having to take into account more than just the amount of moves made could not sound more daunting
Walgrey
She/Her
Reviewer, Skilled player (1038)
🇨🇦 Canada
Joined: 10/27/2022
Posts: 116
Location: 🇨🇦 Canada
Late response but way to go, Cephla! Good job on the improvement!
Hi! I'm Kathryn!
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Location: 127.0.0.1
Joined: 8/3/2004
Posts: 18072
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [7411] GBC Walfie's Nonograms by Cephla in 26:39.690

1790506909