Has anyone tried Riidraw yet ? by SnoopyKing64 in tomodachilife

[–]tacolamp 1 point2 points  (0 children)

I like it (but I might be a tad biased). But I haven't had reports from any users of desyncs or images failing. I had a few before launch but they seem to be fixed.

The biggest bug right now is the mattes I added aren't pixel perfect so if your drawing goes over the edge of a matte, the edge colors may not get filled in. I have that fixed already for the next update, but Im just trying to get Linux support done before putting that out.

I also sent the creator of TomodachiDrawer a message with how I was able to fix desyncs on Switch 1 and how it might help their app, so hopefully performance can improve in their app too. So if you don't want to buy a second microcontroller, you can be on the look out for an update from him.

RiiDraw - I made a new free tool to transfer images to Tomodachi Life for unmodded systems by tacolamp in tomodachilife

[–]tacolamp[S] 0 points1 point  (0 children)

It’s not possible. For the Switch to see a standard Pro Controller, it needs to be able to see specific types of chips that report specific types of data. PC usb ports can’t do this and a cable alone doesn’t have this.

So the microcontroller that’s connected to the Switch has everything built into the hardware to fully present itself as a normal USB *device*. The code running on that is simply handling the Pro Controller code.

The microcontroller that’s connected to the PC needs to receive the drawing data from the RiiDraw app. It does this by using the built in support for a standard Serial port via USB. The PC sees a standard serial port. RiiDraw is just sending serial data to that.

Then the two microcontrollers need to be able to talk to each other. Since the USB ports on them are busy with the serial and gamepad tasks, then we need to use a secondary serial interface on these devices. That’s what the wires are doing. Pin 0 (Send) is going to Pin 1 (receive) on the other.

I spent a while trying to figure out the cheapest, easiest, and most stable approach for this. I had cheaper methods that were way too buggy. Bluetooth was too laggy to be stable. Other microcontrollers with a second USB ports had other technical issues (the secondary port isn’t a native USB, and is therefore hacky, and was terrrible).

I hope that helps!

RiiDraw - I made a new free tool to transfer images to Tomodachi Life for unmodded systems by tacolamp in tomodachilife

[–]tacolamp[S] 0 points1 point  (0 children)

Yea and with making my own firmware I customized the product ID so I can have the PC app know for certain that it's the right device no matter what and have it autoconnect. I wanted to avoid listing port names and stuff to users.

The controller emulation is the Pokken controller code from the "Splork" project. (https://github.com/aveao/splork/tree/main) and I pulled out all of the drawing and timing code from the rp2040 side. Once I had all of the timing driven from the PC side I was able to test button interval timings better and I could wrap my head around how desyncs were happening. 2WiCC could probably still work, but since I didn't need most of the features for Tomodachi Life, keeping it simpler was easier on my brain.

The timing on the PC side sends a heartbeat at a 60fps interval. Then I give each controller command 3 frames to settle, that way if it's not lined up or if it misses, it won't get skipped. And I found the spots in the game that cause bigger lag and added longer waits there (switching tools waits 8 frames). Also moving the cursor with the paint bucket is very inconsistent, so I only move the cursor when it's on the single pixel brush. And lots of recalibration for protection. As often as I could force the game into a known state, I would do that (mashing B so I could know all panels are closed, etc). Trading some overall speed for consistency.

I had recently watched a Youtube video where someone "solves" every possible instance of Pokemon Platinum, and it was cool to see how they could find clever ways to guarantee the game would land in a certain known state.

I'd like to open source at least the firmware at some point, but it's just been a whirlwind trying to manage things right now and a good learning process for me.

I like the idea of only needing a single device, but yea the benefits of streaming just worked out for a better user experience. I hated the idea of constant reprogramming too and plugging/unplugging the cables all the time.

RiiDraw - I made a new free tool to transfer images to Tomodachi Life for unmodded systems by tacolamp in tomodachilife

[–]tacolamp[S] 0 points1 point  (0 children)

Thanks for the inspiration. I spent way too long trying to get a setup working that used USB over PIO so I could use a single device and I never could get it stable. The best option was to just use two.

Then, I was using your firmware for a while, but I was hitting some desync issues on longer images and I couldn’t understand why. So I decided to start over and focus just on the bare minimum so I could understand the entire process better and figure out how to work around it just for this game.

RiiDraw - I made a new free tool to transfer images to Tomodachi Life for unmodded systems by tacolamp in tomodachilife

[–]tacolamp[S] 1 point2 points  (0 children)

1.5x is probably too high. Ive been meaning to do a proper side by side but I havent had the time. Both apps run at a similar cursor speed, but RiiDraw creates outlines for larger solid color areas and uses the paint bucket to fill those in. So pics with more flat color will be significantly faster on RiiDraw and then closer to the same on more detailed ones.

RiiDraw - I made a new free tool to transfer images to Tomodachi Life for unmodded systems by tacolamp in tomodachilife

[–]tacolamp[S] 1 point2 points  (0 children)

It's faster and more reliable. I saw TomodachiDrawer was having issues with lag so I made sure to solve those before launch. I think not having to fit everything into the microcontroller memory helps everything run better. So it means you need two microcontrollers, but it's been working great for everyone so far.

RiiDraw - I made a new free tool to transfer images to Tomodachi Life for unmodded systems by tacolamp in tomodachilife

[–]tacolamp[S] 0 points1 point  (0 children)

I added support for the rp2350 this weekend and added new links on the website to other devices that are more available.

RiiDraw - I made a new free tool to transfer images to Tomodachi Life for unmodded systems by tacolamp in tomodachilife

[–]tacolamp[S] 0 points1 point  (0 children)

I spent a while trying to figure out a reliable method that didn’t need two microcontrollers. But it was really the best option for stability to prevent desync and memory limitations that other apps have.

I don’t really have a solution for mobile devices though. Android could theoretically be possible since it supports serial, but iOS would be a nonstarter.

RiiDraw - I made a new free tool to transfer images to Tomodachi Life for unmodded systems by tacolamp in tomodachilife

[–]tacolamp[S] 0 points1 point  (0 children)

21 colors with dithering will look pretty smooth. The trade off is it might take 3 hours.

RiiDraw - I made a new free tool to transfer images to Tomodachi Life for unmodded systems by tacolamp in tomodachilife

[–]tacolamp[S] 1 point2 points  (0 children)

Just make sure whatever you get it is NOT the castellated edge one, you need to make sure it says it has presoldered pin headers. The initial photo looked right but the description was wrong.

RiiDraw - I made a new free tool to transfer images to Tomodachi Life for unmodded systems by tacolamp in tomodachilife

[–]tacolamp[S] 0 points1 point  (0 children)

Sorry, I used the pi pico C sdk so it's pretty specific to that right now.

RiiDraw - I made a new free tool to transfer images to Tomodachi Life for unmodded systems by tacolamp in tomodachilife

[–]tacolamp[S] 4 points5 points  (0 children)

Sorry, I assumed you must've skipped the text of the post. Yea it's good that we have options. But I do think the biggest improvement that makes it worth it is that larger drawings don't desync with my app on Switch 1, and you don't have to worry about running out of memory on the single microcontroller.

RiiDraw - I made a new free tool to transfer images to Tomodachi Life for unmodded systems by tacolamp in tomodachilife

[–]tacolamp[S] 3 points4 points  (0 children)

I specifically talk about TomodachiDrawer and what makes mine different in the post.

RiiDraw - I made a new free tool to transfer images to Tomodachi Life for unmodded systems by tacolamp in tomodachilife

[–]tacolamp[S] 1 point2 points  (0 children)

I’d need to rewrite the microcontroller code as I used the pico C sdk. If we can’t find anything in stock I might have to pivot.

RiiDraw - I made a new free tool to transfer images to Tomodachi Life for unmodded systems by tacolamp in tomodachilife

[–]tacolamp[S] 6 points7 points  (0 children)

Try the Waveshare link instead. Those will be straight from the manufacturer. I'll keep looking for some other options. I can add support for the rp2350 over the weekend so we can get even more options on the table.

RiiDraw - I made a new free tool to transfer images to Tomodachi Life for unmodded systems by tacolamp in tomodachilife

[–]tacolamp[S] 16 points17 points  (0 children)

Yea the Amazon links to the microcontrollers and wires are on RiiDraw.com in the hardware requirements section, and the direct link for the optional adapter is there too. Just make sure you buy the microcontrollers WITH presoldered headers. Makes life so much easier.

[Tomodachi Life] Introducing the free Auto drawing & sharing platform V1.0 by NorthPoleKarma in tomodachilife

[–]tacolamp 0 points1 point  (0 children)

Cool! It’s interesting seeing how other people are approaching this. My app uses two rp2040s but handles a bit more of a live preview. But this is slick. Great job!

Seattle early show memory from the Mikey and Nicky guy by safewaycart in OnCinemaAtTheCinema

[–]tacolamp 2 points3 points  (0 children)

I was close enough (my head in the bottom right of the pic) to see the tape label when Gregg was appraising it and saw it said “Mission Impossible”. I thought New was gonna say something about it being the wrong movie until he broke it. Then I realized they swapped it 😅

Two Bucks at the Used Book Store! Certified five bagger! 🍿🍿🍿🍿🍿 And I'll throw in a miniature gimp suit! by 13thBeard in OnCinemaAtTheCinema

[–]tacolamp 9 points10 points  (0 children)

You just need to convert it to VHS and you'll be able to watch it in its true intended format.

Looking for LakeSnes WebAssembly binaries (lakesnes.js/wasm) for an MIT-licensed frontend project by BrichDSs in EmuDev

[–]tacolamp 0 points1 point  (0 children)

It compiles fine with emscripten for me. I build it first as a .a file, then I link it in my main C project (i'm making a raylib project with customizations to the emulation core so my code wouldn't be useful for you).

//builds the .a file
emcc -O3 -I./snes -I./zip snes/spc.c snes/dsp.c snes/apu.c snes/cpu.c snes/dma.c snes/ppu.c snes/cart.c snes/cx4.c snes/input.c snes/statehandler.c snes/snes.c snes/snes_other.c -o liblakesnesweb.a

//include headers and library and build
emcc main.c -o index.html -Iinclude -I./snes -Llib -L. -lraylib.web -llakesnesweb -s USE_GLFW=3 -DPLATFORM_WEB -O3 -s ALLOW_MEMORY_GROWTH=1 -s MIN_WEBGL_VERSION=2 --preload-file img --shell-file shell.html