Homebrew 3DS Junk draw

Axonic3D

Member
Newcomer
Joined
Sep 11, 2024
Messages
22
Trophies
0
Age
24
Website
linktr.ee
XP
167
Country
United States
Aww wow, thank you so much! I'm doing well, thank you. I'm glad to see the thread, you've made such amazing art with so little in the tool.

Glad you're a-okay, and thank you! I'm quite adaptable, which is funny to say after trying Colors! 3D again and feeling nauseous from using it. No, seriously. I can't stand using that app anymore. I don't know why.

Hm, if the color picker is the most useful thing I could add right now, I could try to do that. The problem is that I've stopped using windows because it's been so horrible to me and the only 3ds tooling setup I have is on there. I'll have to see if I can get it set up on linux. I know undo would be amazing, it's just very difficult to implement from what I remember. I'm already using up most of the video memory, so I'd have to copy between video memory and main memory to make a snapshot for undos, which is extremely slow. It would probably cause lag at the end of brush strokes. I can start looking around at solutions again though.

By color picker, do you mean the ability to craft a particular color, or the ability to pick up a color, like the eye dropper tool? Which one is more important? I can try to do both if possible (if I can get my setup working again).

Thank you for using the app, it makes me feel nice that you find it charming and want to use it.

The eye-dropper tool is what I'm referring to. I'd say it is of greater priority than undoing, as mistakes aren't so hard to fix (especially if one uses saves carefully, loading old saves or saving multiple backups) whereas changing colors is a constant action and remembering which were being used can be somewhat tedious, even if I set aside a palette to work with (which I did for my Gillbert illustration).

Linux seems to be the way nowadays, though the migration won't be easy. I'm afraid of when the day comes that I'll have no choice but to switch over to it too. Take your time and do what you can! If undoing isn't feasible, maybe an autosave feature or a save reminder feature could work as alternatives to not lose progress. You could also prompt users if they want to save a new file or overwrite the existing one (for the autosave I mean, since the app already prompts for overwriting when saving normally). I'm merely throwing ideas around, as I do.

In any case, your app has legitimately kept me creatively productive and I am evermore grateful of you for making it~★*
 
  • Like
Reactions: haloopdy

haloopdy

Member
OP
Newcomer
Joined
May 29, 2021
Messages
22
Trophies
0
Age
33
XP
244
Country
United States
Hm, I've been messing around with the code and I don't think an eyedropper tool will be possible in the traditional sense, which is a real shame. I can't query the texture without downloading the whole thing into memory first, and since the texture is too large, this fails. I've thought about alternatives but they're very slow.

I want to mess around with a different, simple solution to this problem. Assuming it's OK for the color picker to take up more of the screen (you may not be able to see your drawing anymore), I can dedicate something like 16-32 extra slots on the right of the palette for the last used colors on the current page. This should effectively solve the problem... mostly. I'm going to try it for a bit and see how it goes. I'm sorry it's not ideal, I'm just trying to keep the app simple (as you know) and unfortunately the eye dropper seems to be massively complicated. I wish it wasn't...

Edit: OK, I have a version with the historical color section. I'm going to test it for a bit myself and then if you'd like to test it for a bit, let me know. It's just an extra swatch of the last 32 colors you've used on a page. I actually want it to be 16 for performance reasons, but I noticed you used more than 16 colors for some of your drawings and honestly I don't know if 32 will be a performance issue.

Selecting the colors on the right will scroll the palette to the appropriate bank and select the color, so they're more like "shortcuts" than they are actual colors. Thus, they won't have the selection marker. Note that it will show ALL colors you've used on a page, including ones you've tested and gotten rid of. However, the latest colors will override older colors, and it's only per page. Again, I'll test it out and see if it's broken.

_20.01.25_17.57.20.04.png


Edit 2: Seems to work just fine, and I didn't run into any perceptible slowdown when opening the palette even on very large drawings with tons of colors/strokes on a single page. If you want to try it out:

https://github.com/randomouscrap98/3ds_junkdraw/releases/tag/0.4.1_pre2
 
Last edited by haloopdy,
  • Like
Reactions: Axonic3D

Axonic3D

Member
Newcomer
Joined
Sep 11, 2024
Messages
22
Trophies
0
Age
24
Website
linktr.ee
XP
167
Country
United States
Hm, I've been messing around with the code and I don't think an eyedropper tool will be possible in the traditional sense, which is a real shame. I can't query the texture without downloading the whole thing into memory first, and since the texture is too large, this fails. I've thought about alternatives but they're very slow.

I want to mess around with a different, simple solution to this problem. Assuming it's OK for the color picker to take up more of the screen (you may not be able to see your drawing anymore), I can dedicate something like 16-32 extra slots on the right of the palette for the last used colors on the current page. This should effectively solve the problem... mostly. I'm going to try it for a bit and see how it goes. I'm sorry it's not ideal, I'm just trying to keep the app simple (as you know) and unfortunately the eye dropper seems to be massively complicated. I wish it wasn't...

Edit: OK, I have a version with the historical color section. I'm going to test it for a bit myself and then if you'd like to test it for a bit, let me know. It's just an extra swatch of the last 32 colors you've used on a page. I actually want it to be 16 for performance reasons, but I noticed you used more than 16 colors for some of your drawings and honestly I don't know if 32 will be a performance issue.

Selecting the colors on the right will scroll the palette to the appropriate bank and select the color, so they're more like "shortcuts" than they are actual colors. Thus, they won't have the selection marker. Note that it will show ALL colors you've used on a page, including ones you've tested and gotten rid of. However, the latest colors will override older colors, and it's only per page. Again, I'll test it out and see if it's broken.

View attachment 481503

Edit 2: Seems to work just fine, and I didn't run into any perceptible slowdown when opening the palette even on very large drawings with tons of colors/strokes on a single page. If you want to try it out:

https://github.com/randomouscrap98/3ds_junkdraw/releases/tag/0.4.1_pre2
The palette taking up the screen is something I'm no stranger to, as it is what happens when opening the tools menus in apps like Flipnote Studio 3D and Art Academy. If it means more features, the palette menu can take up all the space it needs! If I may ask: do you look at other art apps on the 3DS for inspiration/ideas?

I played around with the latest pre-release and the history palette has saved me so much time, it is extremely useful. It took me a second to realize how the colors are added to the history tab, but it was smooth sailing after. I did have to be somewhat cautious about how I used it since it adds every drawn color (even if erased after). That said, I discovered that the history palette doesn't transfer over to other pages which can be useful for sorting colors.

Of all the things I've done with the app, making a "hints/tips/tricks list" is something I seriously ought to do. The app may be simple yet there are many neat things one can do with the existing features, such as using pages to create/organize color palettes, moving the canvas while keeping the stylus in place to create straight lines, creating smooth lines with the slow pen and so much more. As for how I go about doing it, I'm not sure. Another thread would feel too separate even if linked back. Adding it as a reply to this thread will eventually lead it to getting lost with the rest of the replies. I could create a video which, if you'd like, you could embed on the main post itself. Whatever I do, I'll keep you updated.

As for the update, I didn't notice any slowdown whatsoever at any point. Even when using it in Small Animation mode. Again, it's worth keeping in mind I'm using a New 3DS XL. If I may make a single suggestion, that would be to add a means of better organizing the history palette. So far the only way to clear it is to use a bunch of other colors to replace the existing ones and start over from there. Maybe holding a button and tapping on the color resets it back to white? Clearing the entire palette could be useful too. Granted, I'm thinking of functionality yet have no clue how it would work code-wise. Whatever the case, this feature will legitimately save hours of work and once again I'm evermore grateful for it.

Thank you again for all your work on this deceivingly simple yet deeply complex and abundantly versatile art tool!
 

haloopdy

Member
OP
Newcomer
Joined
May 29, 2021
Messages
22
Trophies
0
Age
33
XP
244
Country
United States
The palette taking up the screen is something I'm no stranger to, as it is what happens when opening the tools menus in apps like Flipnote Studio 3D and Art Academy. If it means more features, the palette menu can take up all the space it needs! If I may ask: do you look at other art apps on the 3DS for inspiration/ideas?
Ah glad to hear it's not a problem. I don't look at other apps for inspiration, no. I hope that's not weird... I've used Colors! 3d but I don't think about it when designing this app lol.

I could create a video which, if you'd like, you could embed on the main post itself. Whatever I do, I'll keep you updated.
I would definitely include the video in the post if you made it! Do whatever you like of course, no pressure!

add a means of better organizing the history palette. So far the only way to clear it is to use a bunch of other colors to replace the existing ones and start over from there. Maybe holding a button and tapping on the color resets it back to white? Clearing the entire palette could be useful too.
So, the history palette is actually extremely dumb. It gathers the last used colors every time you open the menu rather than keeping track of it as the image is drawn. I didn't want to slow down redraws, as adding this feature might significantly slow it down (though I'm not sure). I'll do some testing; if I build up the list on page load rather than every time you opened the menu, I might be able to make it manageable.

Would pinning colors be useful? That would actually be an easier feature to implement than clearing individual cells, as there's no concept of an "individual" history color.

Also, the history is a "rolling window", so the latest colors used on a page will always be available. It overwrites the oldest colors, so you shouldn't need to "clear it" other than like... maybe having all the colors there is distracting? I can see that. Clearing could be an option but it'd be difficult to have it persist across pages, so clearing could be a temp thing if it'll be helpful.

Edit: Oh right, I wanted to ask you about undo. You said before that you simulate undo by saving frequently and reloading when necessary. That seems like a lot of work, and it requires redrawing the whole screen anyway. I've been trying to figure out how to do undo with the current setup and I just have a problem with vram as usual. It's my fault for making such large canvases I guess. There's a couple things I could try:
- If I wanted to get super complicated, i could try to enable an "undo" mode that would shrink the canvas, allowing the other half to be used as undo snapshots the system could build off of. Kind of like how the onion skinning shrinks the canvas. The problem is, I would most likely require you to press a button combo to manually snapshot your work as a base for undo. I'd be happy to try that if you think a smaller canvas with undos is worth it
- A simpler approach would be to simply redraw the whole thing on each undo, but I assume that would be very slow for the kinds of art you're doing.

Any thoughts on those two versions? The first one would let you effectively quicksave the current page (which is thrown away on page move so be careful) as a base for undos, and undoing would only redraw from that base, making undos significantly faster up to the point where the snapshot stops. Kind of like how colors does it. It's a lot of complication and requires some effort on the artist's part to keep the snapshot up to the point you think is important, and you give up a lot of canvas space. The second is way easier to implement but may be effectively useless as you're constantly chugging through full redraws on each redo
 
Last edited by haloopdy,
  • Like
Reactions: Axonic3D

Axonic3D

Member
Newcomer
Joined
Sep 11, 2024
Messages
22
Trophies
0
Age
24
Website
linktr.ee
XP
167
Country
United States
Gonna have to keep this reply brief as it's getting late on my end as I write this.
I would definitely include the video in the post if you made it! Do whatever you like of course, no pressure!

If I make it, I'll let ya know right away on this thread! It'll be nice to see it on the main post and see folks using the app with ease.

Would pinning colors be useful? That would actually be an easier feature to implement than clearing individual cells, as there's no concept of an "individual" history color.

Pinning would be hugely useful! In tandem with the history tab, picking colors will be an absolute breeze. Dunno if the pinned colors could be carried across pages, makes more sense than the history, but if not then the workaround I've used (switching back and forth between pages) should work fine too.

Also, the history is a "rolling window", so the latest colors used on a page will always be available. It overwrites the oldest colors, so you shouldn't need to "clear it" other than like... maybe having all the colors there is distracting? I can see that. Clearing could be an option but it'd be difficult to have it persist across pages, so clearing could be a temp thing if it'll be helpful.

As in, clearing the history palette would only remain as long as one doesn't switch between pages? The distracting part comes from the palette getting filled with colors with no order other than when they were first used. Using an existing color again doesn't push it further up nor down, making easier for other colors to add up and remove it. Thus why pinning is a great feature to have even if the placement doesn't change.

Edit: Oh right, I wanted to ask you about undo. You said before that you simulate undo by saving frequently and reloading when necessary. That seems like a lot of work, and it requires redrawing the whole screen anyway. I've been trying to figure out how to do undo with the current setup and I just have a problem with vram as usual. It's my fault for making such large canvases I guess. There's a couple things I could try:
- If I wanted to get super complicated, i could try to enable an "undo" mode that would shrink the canvas, allowing the other half to be used as undo snapshots the system could build off of. Kind of like how the onion skinning shrinks the canvas. The problem is, I would most likely require you to press a button combo to manually snapshot your work as a base for undo. I'd be happy to try that if you think a smaller canvas with undos is worth it
- A simpler approach would be to simply redraw the whole thing on each undo, but I assume that would be very slow for the kinds of art you're doing.

Any thoughts on those two versions? The first one would let you effectively quicksave the current page (which is thrown away on page move so be careful) as a base for undos, and undoing would only redraw from that base, making undos significantly faster up to the point where the snapshot stops. Kind of like how colors does it. It's a lot of complication and requires some effort on the artist's part to keep the snapshot up to the point you think is important, and you give up a lot of canvas space. The second is way easier to implement but may be effectively useless as you're constantly chugging through full redraws on each redo

Hmm... I've gotten so used to not undoing that I'm not too bothered anymore by the feature not being there. That said, between these two options... If the cost of undoing is the size of the canvas, then I'll either take option two and resort to using the feature mostly near the start of a drawing or not have the feature. Granted, if having it for smaller sized canvases means it can be used for animations, that would be a welcome addition too. Still, I'll take waiting a few seconds to fix a huge mistake over giving up canvas space.
 

haloopdy

Member
OP
Newcomer
Joined
May 29, 2021
Messages
22
Trophies
0
Age
33
XP
244
Country
United States
he distracting part comes from the palette getting filled with colors with no order other than when they were first used. Using an existing color again doesn't push it further up nor down, making easier for other colors to add up and remove it. Thus why pinning is a great feature to have even if the placement doesn't change.
Oohhh you know what, you're right. I might be able to fix that actually. I was trying to limit the performance impact but maybe i'm overthinking it. I'll try something out, maybe we'll actually be able to solve everything by just having a sane color order for now

Edit: I'm sorry for the hassle before. I keep forgetting I'm not on the Arduboy; this is the 3ds, I have tons of processing power. It's perfectly acceptable to sort a list of 32 elements that take up 128 bytes lol.

Anyway, color history is hopefully significantly more usable. Most recent used colors at the top, oldest colors should fall off the end: https://github.com/randomouscrap98/3ds_junkdraw/releases/tag/0.4.1_pre3
 
Last edited by haloopdy,

haloopdy

Member
OP
Newcomer
Joined
May 29, 2021
Messages
22
Trophies
0
Age
33
XP
244
Country
United States
I've added an optional RGB color picker (finally) as an alternative to the palette system. There's some weird caveats that I'm not sure how to work out yet, but it should work, especially if you use palettes only to select nice colors then switch back to rgb for most of your work:

https://github.com/randomouscrap98/3ds_junkdraw/releases/tag/0.4.2_pre1
Post automatically merged:

I've been having trouble making HSV work the way I want it to, so for now I won't be adding it, I'm sorry. I went ahead and fixed the issue where you can't select colors that aren't in the palettes when in palette mode so it's less annoying, and added 2 new palettes with some pastels in them. Though, I couldn't find any good like... "bright happy" pastel palettes, so I had to go with a subdued one: https://lospec.com/palette-list/fluffytron-plus. I might make my own at some point but I'm not particularly amazing with color. I also added this palette since it stuck out to me: https://lospec.com/palette-list/jehkoba64. I can add or remove any palettes you like; right now we're at 8 which is a nice amount.

Anyway, minor update, but the unselectable colors in palette mode were really annoying so hopefully this is a definitive version I can just release: https://github.com/randomouscrap98/3ds_junkdraw/releases/tag/0.4.2_pre2
 
Last edited by haloopdy,
  • Wow
Reactions: Axonic3D

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    BigOnYa @ BigOnYa: Google the build id then.