|
6801
|
My first slack bot! by @Thepranker | Stardance
|
Thepranker
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Thepranker | Starda Title: My first slack bot! by @Thepranker | Stardance...
|
1792806662.3585522
|
1793411462.3585522
|
|
6802
|
Fan-made Spelunky 3 by @bluedragonninjaman | Stard Fan-made Spelunky 3 by @bluedragonninjaman | Stardance...
|
bluedragonninjaman
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Fan-made Spelunky 3 by @bluedragonninjaman Title: Fan-made Spelunky 3 by @bluedragonninjaman | Stardance...
|
1792745361.4929214
|
1793350161.4929214
|
|
6803
|
farm game by @youssef_chater | Stardance
|
youssef_chater
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: farm game by @youssef_chater | Stardance
|
1793181071.7526941
|
1793785871.7526941
|
|
6804
|
My awesome macropad! by @Filiz | Stardance
|
Filiz
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Filiz | Stardance
|
1793361437.589425
|
1793966237.589425
|
|
6805
|
G.E.M.S by @eastonallred | Stardance
|
eastonallred
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: G.E.M.S by @eastonallred | Stardance
|
1792734844.5284934
|
1793339644.5284934
|
|
6806
|
My awesome macropad! by @TheAbsoluteMin | Stardanc My awesome macropad! by @TheAbsoluteMin | Stardance...
|
TheAbsoluteMin
|
0
|
13.58
|
0
|
[]
|
[{"post_id": 7255, "ts": "2026 [{"post_id": 7255, "ts": "2026-06-12T03:09:05Z", "hours": 4.3678, "text": "6.9.2026 - Hackpad CAD Design It was my first time using Autodesk Fusion for CAD, and I immediately learned that the tools greatly differed from Tinkercad. After about 4 hours, I finally began to adapt to the new tools, and I almost completed my hackpad case! I still need to figure out how to add 16mm screws in a case only about 14mm tall… Here is the timelapse: https://lapse.hackclub.com/timelapse/mBvQilO03y46 . Until then, TheAbsoluteMin out!"}, {"post_id": 4692, "ts": "2026-06-08T03:30:38Z", "hours": 0.9986, "text": "6.7.2026 - Minor PCB Parts Adjustments Hi! After referencing passive buzzer guides I realized that I needed resistors, not diodes, for it, so I updated the schematics and PCB. I figured out the errors were simply because of the LED holes, which were made by default of the LED library, so after dismissing them, I was ready to move on to designing the hackpad case! As always, you can view the timelapse here: https://lapse.hackclub.com/timelapse/TkbHmnJH4lMN . Until then, TheAbsoluteMin out!"}, {"post_id": 3643, "ts": "2026-06-06T17:42:01Z", "hours": 3.5272, "text": "6.6.2026 - Hackpad PCB Design Hello! Today, in additon to adding a passive buzzer to my hackpad, I spent a good portion of time working on the PCB design and routing. It was especially challenging and time consuming as I had to determine the routing for so many components! You can view the timelapse here: https://lapse.hackclub.com/timelapse/R-Lok60rAeRo With that, I am pleased to share with you that I have decided on the purpose of my hackpad… …I am hoping to turn it into a custom Pocket Operator! Now, I just have to figure out how to solve the 32 errors and 31 warnings the KiCad DRC flagged… Until then, TheAbsoluteMin out!"}, {"post_id": 3222, "ts": "2026-06-06T01:42:06Z", "hours": 2.5486, "text": "6.5.2026 - Adjusting Schematics Hi again! After some research and reading, I decided to update my schematics for my hackpad. This included using global variables to replace the messy wiring I had previously for easy future reference. I have always been fascinated with backlit LEDs, so I decided to implement them in my design. However, I ran into many symbol and footprint library conflicts along the way. Since I did not have the actual switches nor LEDs, I had to rely on numerous inconsistent old references. In the end, I ended up using the original switch footprint! You can view my LED and switch struggles here: https://lapse.hackclub.com/timelapse/jnHnmRvD6uzY After some time thinking, I decided to use a different library which promised a different approach. I changed the LEDs’ footprints (again!). Unrelated but important, I decided to follow standard schematics wiring for power global variables so I could translate the increased wiring thickness for the LED powerlines to the PCB. You can see part two of the timelapse here: https://lapse.hackclub.com/timelapse/bM4HrjNb66xa Until then, TheAbsoluteMin out!"}, {"post_id": 2461, "ts": "2026-06-04T23:25:45Z", "hours": 2.1389, "text": "6.4.2026 - My 1st devlog - Beginning of a Hackpad Hello! This is the beginning of… … my Hack Club journey … my Stardance journey … my Hackpad journey As it was my first time using KiCad and I had ambitious plans, I ran into many problems including pinout conflicts and some trouble with wiring and footprints for each symbol. However, after roughly 2 hours of designing the schematics and changing my button matrix from 4x4 to 3x3 to 3x3 that included a rotary encoder switch, I updated my PCB to see my progress. I have yet to discover a purpose for my hackpad… Here is my timelapse: https://lapse.hackclub.com/timelapse/FC_v2vy3fczr Until then, TheAbsoluteMin out!"}]...
|
Title: My awesome macropad! by @TheAbsoluteMin | S Title: My awesome macropad! by @TheAbsoluteMin | Stardance
Devlogs:
6.4.2026 - My 1st devlog - Beginning of a Hackpad Hello! This is the beginning of… … my Hack Club journey … my Stardance journey … my Hackpad journey As it was my first time using KiCad and I had ambitious plans, I ran into many problems including pinout conflicts and some trouble with wiring and footprints for each symbol. However, after roughly 2 hours of designing the schematics and changing my button matrix from 4x4 to 3x3 to 3x3 that included a rotary encoder switch, I updated my PCB to see my progress. I have yet to discover a purpose for my hackpad… Here is my timelapse: https://lapse.hackclub.com/timelapse/FC_v2vy3fczr Until then, TheAbsoluteMin out!
6.5.2026 - Adjusting Schematics Hi again! After some research and reading, I decided to update my schematics for my hackpad. This included using global variables to replace the messy wiring I had previously for easy future reference. I have always been fascinated with backlit LEDs, so I decided to implement them in my design. However, I ran into many symbol and footprint library conflicts along the way. Since I did not have the actual switches nor LEDs, I had to rely on numerous inconsistent old references. In the end, I ended up using the original switch footprint! You can view my LED and switch struggles here: https://lapse.hackclub.com/timelapse/jnHnmRvD6uzY After some time thinking, I decided to use a different library which promised a different approach. I changed the LEDs’ footprints (again!). Unrelated but important, I decided to follow standard schematics wiring for power global variables so I could translate the increased wiring thickness for the LED powerlines to the PCB. You can see part two of the timelapse here: https://lapse.hackclub.com/timelapse/bM4HrjNb66xa Until then, TheAbsoluteMin out!
6.6.2026 - Hackpad PCB Design Hello! Today, in additon to adding a passive buzzer to my hackpad, I spent a good portion of time working on the PCB design and routing. It was especially challenging and time consuming as I had to determine the routing for so many components! You can view the timelapse here: https://lapse.hackclub.com/timelapse/R-Lok60rAeRo With that, I am pleased to share with you that I have decided on the purpose of my hackpad… …I am hoping to turn it into a custom Pocket Operator! Now, I just have to figure out how to solve the 32 errors and 31 warnings the KiCad DRC flagged… Until then, TheAbsoluteMin out!
6.7.2026 - Minor PCB Parts Adjustments Hi! After referencing passive buzzer guides I realized that I needed resistors, not diodes, for it, so I updated the schematics and PCB. I figured out the errors were simply because of the LED holes, which were made by default of the LED library, so after dismissing them, I was ready to move on to designing the hackpad case! As always, you can view the timelapse here: https://lapse.hackclub.com/timelapse/TkbHmnJH4lMN . Until then, TheAbsoluteMin out!
6.9.2026 - Hackpad CAD Design It was my first time using Autodesk Fusion for CAD, and I immediately learned that the tools greatly differed from Tinkercad. After about 4 hours, I finally began to adapt to the new tools, and I almost completed my hackpad case! I still need to figure out how to add 16mm screws in a case only about 14mm tall… Here is the timelapse: https://lapse.hackclub.com/timelapse/mBvQilO03y46 . Until then, TheAbsoluteMin out!...
|
1792684268.5243864
|
1793289068.5243864
|
|
6807
|
Avian Race by @hq2000 | Stardance
|
hq2000
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Avian Race by @hq2000 | Stardance
|
1793303825.27709
|
1793908625.27709
|
|
6808
|
NexusEval by @JadeV | Stardance
|
JadeV
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: NexusEval by @JadeV | Stardance
|
1793163163.6013963
|
1793767963.6013963
|
|
6809
|
850nm ir "night vison" goggles by @coolwio 850nm ir "night vison" goggles by @coolwio | Stardance...
|
coolwio
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 850nm ir "night vison" goggles by @ Title: 850nm ir "night vison" goggles by @coolwio | Stardance...
|
1792727644.3315673
|
1793332444.3315673
|
|
6810
|
Macropad for onshape by @dogod | Stardance
|
dogod
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-15T06:33:08Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made both a complete PCB that can be made by anyone its under the GPL if you want to use it and also made a case that should work i don’t know i didn’t make any test prints so do it at your own risk", "repo": "https://github.com/dogod3814t/Onshape-Macropad", "demo": ""}]...
|
[{"post_id": 47325, "ts": "202 [{"post_id": 47325, "ts": "2026-08-15T06:31:23Z", "hours": 0.6256, "text": "Finished the case this should be way more time but i forgot to download the Wakatime extension so I didn’t get all my time marked down this would have ended up being like an additional 3 more hours so that sucks but at least it is finished."}, {"post_id": 34774, "ts": "2026-07-25T19:18:39Z", "hours": 2.475, "text": "Okay so i finished the PCB i was kinda slow cause i have been doing a lot this summer buts its ready now"}, {"post_id": 5696, "ts": "2026-06-09T16:12:19Z", "hours": 0.5594, "text": "I basically just designed a casing for the macropad internals. I have also been deciding on what type of button I should use as honestly both look good. But I should be done with the case I just need to make a port for a type c plug then I will begin work on the PCB which I thankfully have more experience with."}]...
|
Title: Macropad for onshape by @dogod | Stardance
Title: Macropad for onshape by @dogod | Stardance
Devlogs:
I basically just designed a casing for the macropad internals. I have also been deciding on what type of button I should use as honestly both look good. But I should be done with the case I just need to make a port for a type c plug then I will begin work on the PCB which I thankfully have more experience with.
Okay so i finished the PCB i was kinda slow cause i have been doing a lot this summer buts its ready now
Finished the case this should be way more time but i forgot to download the Wakatime extension so I didn’t get all my time marked down this would have ended up being like an additional 3 more hours so that sucks but at least it is finished.
Ships:
I made both a complete PCB that can be made by anyone its under the GPL if you want to use it and also made a case that should work i don’t know i didn’t make any test prints so do it at your own risk...
|
1793231363.1362486
|
1793317763.1362486
|
|
6811
|
Borealis by @onyxtheone | Stardance
|
onyxtheone
|
1
|
383.93
|
4072
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-25T20:46:18Z", "hours": 241.0, "multiplier": 19.2, "payout": 4072, "blessing": "neutral", "text": "I built BTBX (Bare Tiny(?) BASIC eXecutor), a self-contained BASIC interpreter that is the operating system. There’s no Linux, no DOS, nothing underneath it. It boots straight off a FAT12 floppy image via a two-stage bootloader (512-byte stage1 + 2KB stage2), flips the CPU into protected mode, sets up the A20 gate, and lands you directly in a BASIC REPL, all inside 640KB of conventional memory. From there it’s a real language: GOTO, GOSUB, FOR/NEXT, WHILE/WEND, IF/THEN/ELSE, multi-dimensional arrays, 32-bit integers plus x87 80-bit floats, string functions (LEFT$, MID$, CHR$, etc.), and a full FAT12 filesystem so you can actually SAVE, LOAD, and DIR your programs on the disk image. There’s also PEEK/POKE for raw memory access, BLOAD/SYS to load and jump into raw machine code, VGA graphics primitives, a PIT-driven BEEP, and — half-finished but present — a SAY command aiming for SAM-style formant speech synthesis. What was challenging? Everything below the interpreter, honestly. Getting the boot chain right (CHS and EDD disk reads, A20 enabling that doesn’t silently hang, jumping into protected mode without immediately triple-faulting) took far longer than any language feature. The BIOS-thunk approach for file I/O (calling back into 16-bit real mode from a 32-bit kernel just to talk to disk) was its own maze. The funniest recent challenge was building a browser demo on top of v86: getting PS/2 keyboard Shift state to survive contact with a web browser turned out to be nearly as hard as writing the A20 gate code itself :3. Real hardware (and QEMU) just work; browsers apparently have opinions about what a Shift key is allowed to do. What am I proud of? That it boots at all, genuinely. A homemade OS with a homemade language on top, running real math through the x87 FPU and reading/writing a real filesystem, in under 640KB, with zero borrowed runtime. Getting arrays, strings, and file I/O all coexisting cleanly in a from-scratch interpreter over ~240 hours feels like the actual milestone here, not any single feature. What should people know to test it? Use make && make run, that's the supported path, tested in QEMU, and it's where shift/symbols work correctly. The browser demo (v86-based) is explicitly beta. booting and typing work, but shift-modified keys are unreliable there due to browser/emulator keyboard quirks (a real physical keyboard emulator interaction gap, not a BASIC bug ^^). Don't judge the interpreter by the demo's keyboard weirdness. Try PRINT, FOR/NEXT loops, SAVE/LOAD/DIR to confirm the filesystem works, and BEEP for audio. SAY is a known work-in-progress ergo don't expect actual speech (yet). Check the source tree if you want to see the boot chain (boot/stage1.asm, boot/stage2.asm) separately from the interpreter (src/kernel/basic.c).", "repo": "https://github.com/onyx-the-one/borealis", "demo": "https://onyx-the-one.github.io/borealis"}]...
|
[{"post_id": 63409, "ts": "202 [{"post_id": 63409, "ts": "2026-09-07T07:11:12Z", "hours": 9.3, "text": "its been a week since my last devlog, i dont have much new to add because with school and other responsibilities i dont have much time for actuall progress on this project. still i accumulated some 9 hours (sorry gizzy) by doing small changed, linting, updating forgotten banners and version numbers and so on. EHCI/USB still fails on the same issues as before. i will be reverting to a superfloppy boot because right now i cant even get debug to write to the disk which is annoying. then once i get the usb driver with all its issues working (sometime next decade) i can give usb boot another shot."}, {"post_id": 58426, "ts": "2026-08-30T20:43:20Z", "hours": 6.0, "text": "i am (still) putting in work on the usb driver, this is proving to be very complicated especially because my hardware is not cooperating. im thinking about switching back to floppy-emulated mode which would be more practical for debugging but at the same time probably introduce new issues i dont even expect yet."}, {"post_id": 53934, "ts": "2026-08-24T17:11:33Z", "hours": 7.1178, "text": "the port resets work on the laptop now. the bit we were waiting on (port-enable-changed) was being acknowledged by the bios’s smm ghost before we ever saw it, so we stopped waiting on the status bit and just read the port state, which can’t be acked away. also fixed before it bit us: two devices answering address 0 at once (enumeration is per-port now, and every device gets a real address before the next port wakes up). the next failure was prettier: every OUT transfer works, every IN transfer dies. the stick takes its orders but can’t talk back. that’s the signature of the qtd buffer list, the one place real ich silicon is strict where qemu is forgiving, so all dma buffers are page-aligned now and the error reports name whichever endpoint stalled. also everyone gotta apreciate the blahaj!"}, {"post_id": 50969, "ts": "2026-08-20T13:23:36Z", "hours": 9.3333, "text": "the stick is a disk now, no bios involved: usb grew enumeration and bot/scsi, fat12 picks whichever backend came up. qemu took the whole chain first try. the laptop found the stick on port 0 and then refused to reset it (my fault), the 50ms delay was port-0x80 writes that only cost real time inside qemu, so there’s a pit-based clock now. plot twist from the log meanwhile: the bios path worked on the laptop, because the toggles that “didn’t help” had quietly moved the stick to floppy emulation, and that path survives the mode switch. so it (partially) boots by accident while we fix it on purpose. also caught in a self-audit: a stall burned a full second, and a short read could report success with half a sector. readme rewritten as i was told to by sw."}, {"post_id": 50492, "ts": "2026-08-19T17:32:16Z", "hours": 5.8606, "text": "im still working on getting a usb driver to work. ehci seems to work kinda but its a loop between giving false data, partial data and occasionally seemingly true data but then usb decides it doesnt like it and ideally fat12 fails durning cache load too, WHICH I FIXED LONG AGO BRUH. but it came back for some reason. so im trying timing, msd, stall handling everything. this may take another decade."}, {"post_id": 49913, "ts": "2026-08-18T21:34:01Z", "hours": 6.4844, "text": "debug spew is a file now. every checkpoint from the first instruction onward (entry asm, the real-mode thunk letters, all the [DEBUG] lines) lands in a buffer, and once the fs proves it can write, the buffer becomes LOG.TXT and the screen clears to the banner. the trick is the default: echo stays on until the file is safely written, so a boot that dies early still shows everything live. the fallback isn’t a code path, it’s just never getting to the quiet part. LOG=0 in CONFIG.TXT keeps the old wallpaper. and the log already caught its first bug: a missing [EZTG] tattled on a stale version entry.asm. debugging is too important to leave on the screen."}, {"post_id": 49489, "ts": "2026-08-18T11:03:57Z", "hours": 9.5697, "text": "the stick talks, and for the first time it’s talking to us, not the bios. this part was the transfer engine: queue heads and transfer descriptors, little linked-list structs the ehci controller fetches out of ram and executes on its own. a control transfer is three of them chained by hand (setup, data, status), data toggles set manually per stage because high-speed lets you. link the queue head into the async ring, poll the active bit, unlink, then ring the doorbell (an actual doorbell bit) so the controller formally forgets the whole thing before the structs get reused. first exchange: GET_DESCRIPTOR at address 0, and the stick answered with its vid/pid like a civilized device. qemu’s stick goes by 46f4:0001; the real one can introduce itself when the laptop’s back. next: scsi over bulk, and fat12 stops caring what a disk is. moral: usb devices are polite, they just want to be asked in struct form."}, {"post_id": 48764, "ts": "2026-08-17T09:14:22Z", "hours": 9.3231, "text": "the laptop’s bios has a party trick: as i described before, int 13h works fine until the cpu enters protected mode, then it never returns, not even for a no-transfer disk reset. bios toggles didn’t help, so borealis is growing a native usb driver. first part: find the ehci controller over pci, do the formal ownership handshake (there’s an actual semaphore register in config space where the os and the bios’s smm ghost take turns. set our bit, wait for theirs to clear, then kill every smi source so the ghost stops getting summoned), reset the controller, spin up an idle async schedule, scan the ports. no packets yet, just a controller that’s officially ours. dev loop is qemu with a stick image on an emulated ehci, boot still from floppy, so the laptop only has to show up for the one hardware-specific part. moral: if the firmware won’t share the hardware, take the hardware."}, {"post_id": 47754, "ts": "2026-08-15T21:50:44Z", "hours": 4.8914, "text": "instrumented the thunk to print a letter per step so a hang names its own murderer. result: Rer , then nothing. R entered real mode, e entered the EDD read, r was about to issue a disk reset, ah=00h, the simplest int 13h call there is, no transfer, and it never returned. if even a no-op reset hangs after the PM excursion, the bios’s whole disk service is dead post-protected-mode on this machine, full stop. so the fix is a native usb driver. helix talks EHCI directly, bios for boot and native for runtime, as it should be, but that’s pci + ownership handoff from the very SMM that broke us + enumeration + BOT/scsi, and you don’t bring that up blind, one teletype letter per reboot, right before losing the hardware. deferred until the laptop’s back on hand; qemu remains unaffected."}, {"post_id": 47202, "ts": "2026-08-14T23:22:02Z", "hours": 5.7114, "text": "working theory: the bios’s legacy usb support, and specifically system management mode. coil runs in pure real mode and its EDD reads work, the bios reads the stick happily at boot. but helix runs in protected mode, and calling the bios means dropping back through a thunk, and that round-trip is where it dies. on a machine this age legacy usb lives in SMM: the bios traps disk interrupts and does the transfer in a mode invisible to the os, assuming a clean real-mode cpu, and our PM excursion breaks that assumption. the tell: teletype (int 10h) works from the thunk, disk (int 13h) hangs. teletype doesn’t touch usb, disk does. photo is the bios setup screen, where i went hunting for a legacy usb toggle which i did not find ;3c"}, {"post_id": 46999, "ts": "2026-08-14T15:56:13Z", "hours": 4.2892, "text": "next wall, immediate: the machine hangs at fat_cache_load, the step where helix reads the FAT and root directory into RAM. in qemu this works instantly but on the laptop the disk read goes out and never comes back. no error, no status, no return. debug output narrows it to exactly the transfer call: everything before prints, everything after doesn’t."}, {"post_id": 46771, "ts": "2026-08-14T08:36:41Z", "hours": 5.2839, "text": "borealis booted on the laptop for the first time. not qemu but actual silicon, a core 2 duo, off a usb stick. coil came up, loaded helix, and the machine made it to the banner plus three debug lines, which is the whole chain working on real firmware: stage1 > stage2 > kernel > protected mode. CHS disk was already known broken cos this bios won’t talk cylinders/heads/sectors to a stick with no real geometry, fair enough — so coil booted over EDD, but helix’s disk layer still assumed CHS and the filesystem never came up. still: it boots, on real hardware. just doesnt get far enough to be useful (yet)."}, {"post_id": 45393, "ts": "2026-08-11T20:28:36Z", "hours": 1.4333, "text": "im still working on real hw boot issues. coil doesnt guess geometry anymore, it brutes it: the new stage2 tries every plausible CHS geometry against a buildtime checksum of the kernel’s first sector and prints the one that actually works. no more “trust the BIOS” and no more “reject the BIOS”, just prove it. on a sane machine it prints g(18.2) and boots like nothing happened. on the laptop it either prints its real geometry and boots, or prints G! plus what the BIOS claimed. either way i finally get an answer instead of a silent reset. in the meantime ill be working on some features like arrows, logging, etc. attached photo of my testing setup"}, {"post_id": 45321, "ts": "2026-08-11T18:14:12Z", "hours": 5.1247, "text": "boot splash is in and shipping on the image. CONFIG.TXT decides, SPLASH.BAS plays on boot, keypress skips. the hook was “just two lines” and then reality happened: config.c wasnt in the makefile, the loader was static, and the first boot loaded the splash then sat at the prompt waiting for me to type RUN myself. three one-line fixes later: coil letters, banner, aurora, prompt. also fixed make pack details. the machine has a boot vibe now next up is proper scrollback, logging, and arrow key support."}, {"post_id": 44866, "ts": "2026-08-10T22:05:04Z", "hours": 2.6764, "text": "the system has a config file now. CONFIG.TXT on the boot disk, key=value, one per line, read at boot. the fun part: the parser tolerates leading line numbers, so EDIT CONFIG.TXT just works with zero new editor code. the editor only speaks numbered lines, so i taught the config reader to ignore them instead (and officially, just use the numbered lines in there its not that hard, but you dont have to for it to work). SPLASH=0/1 is the first key, persistence is free because its a file on the FAT12 disk. the whole reader is ~75 lines, no allocation, no subsystem. config systems should be files, not frameworks ;3c"}, {"post_id": 44673, "ts": "2026-08-10T16:18:27Z", "hours": 4.6592, "text": "SCREEN 13 works, SCRTEST passes end to end, palette cycling is smooth, and as a bonus the fix also killed a stack-vs-bss collision that was waiting to happen. wrote AURORA.BAS to celebrate, it does a starfield and a sine curtain with the classic palette-cycling trick so it stays fast even interpreted. next up (probs): making it the boot splash, config.txt for persistence, then directories and much much more to be excited for!"}, {"post_id": 44301, "ts": "2026-08-09T23:25:07Z", "hours": 5.0344, "text": "ITS THE MEMORY MAP. gfx_is_active sits at 0xA12C0 which is past 0xA0000 aka inside the VGA framebuffer window. reads from there always return 0xFF in text mode, writes vanish into the void. the kernel bss grew past 640k and parked a variable in video memory. the “graphics thunk situation” was never the thunk. it was never even the graphics. one line in the linker script moves bss to 1MiB and everything works. i want to scream (affectionate). theres some more to be done before its usable in practice (because it never really was i guess) but SOON."}, {"post_id": 43938, "ts": "2026-08-09T12:00:21Z", "hours": 5.2647, "text": "spent the whole night inside the realmode thunk with a fine comb. it is NOT the thunk. SCREEN 0 actually switches modes fine, which makes SCREEN 13 doing nothing even weirder. also found out my kernel thinks graphics is already on before i ever turned it on?? the flag says 255. TWO HUNDRED FIFTY FIVE. its supposed to be 0 or 1. memory corruption somewhere (see kpan 7), or im losing my mind. probably both."}, {"post_id": 43586, "ts": "2026-08-08T22:43:36Z", "hours": 4.1406, "text": "boot is finally stable, primes count to a million, so i tried the graphics. SCREEN 13 does nothing. no error, no letters, no mode change. GCLS nothing, LINE nothing, RECT nothing. PALETTE works??? which makes no sense because palette is the one that should be hardest. starting to suspect the video thunk is broken. ive got no idea. but at least im honoring my promise to keep devlogs shorter."}, {"post_id": 43305, "ts": "2026-08-08T14:26:54Z", "hours": 10.0411, "text": "Fixed the boot (fr this time) the whole laptop reset thing turned out to be two bugs stacked on each other: the bootloader was trusting/rejecting BIOS geometry based on vibes, and the kernel entry point was jumping into a debug helper instead of _start , so the CPU executed one stray ret into the void and triple-faulted. coil now makes the BIOS prove its geometry against a build-time checksum before trusting it, and checksums the whole kernel before jumping in. Boot output is an actual diagnostic language now: gk = geometry truthful, gf = BIOS lied, C! = wrong bytes arrived, and nothing resets silently anymore. QEMU boots all the way to BASIC, audio included. Also cleaned up helix.c (boot debug spam now only speaks when something’s actually wrong, RIP “HELIX FAILIURE” typo), evicted BTBX from the prompt, it’s js => now, and am working the BASIC interpreter with a bit of a rewrite: dispatcher no longer depends on include order and prayer, dead duplicate file-I/O code confirmed gone, graphics.inc brace damage found and fixed. Laptop test tomorrow-ish, then the interpreter cleanup lands. see u next time!"}, {"post_id": 41616, "ts": "2026-08-05T22:41:53Z", "hours": 8.7858, "text": "hi people! this one’s a bit different. no new features, but a new name. the project is now called Borealis. the old name, BTBX, made sense when this was a tiny BASIC interpreter and nothing more, but it’s grown into a full bootloader, kernel, and proto-OS, and the name stopped fitting. the system now has three named layers: coil is the two-stage bootloader, helix is the kernel, and BOREALIS is the system as a whole. the names are deliberately scale-neutral. where the project goes from here shouldn’t be constrained by what it’s called. the rename itself was the easy part, the fallout was the real work. i went through every file updating references to the old name, plus the directory structure ( boot/ became coil/ , src/kernel/ became src/helix/ ), the build files, and the image name ( borealis.img now). outside the repo, i also had to update hackatime and stardance so everything points at the right thing. the README on github is fully rewritten to match (may not be pushed at this time), and there’s a note in it about the old name for continuity. technically nothing else changed. same code, same features, same open issues, this was purely an identity update. that’s all for now!"}, {"post_id": 38767, "ts": "2026-08-01T10:16:03Z", "hours": 12.6017, "text": "hi people! im trying to get BTBX to boot properly on an ASUS F5RL laptop. unfortunately, it still isn’t booting correctly, but I managed to narrow the problem down further. I previously ran into issues involving EDD, DH, and a few other parts of the boot process. right now I’m getting the error S1>S2Agk(18.1)Drk{c2,h0,s2}R , which makes it look like the BIOS may be reporting bogus CHS geometry in a way BTBX is not expecting. there’s no working result yet, but I’ll keep investigating the boot and disk-handling path. i hope to get it running soon."}, {"post_id": 34823, "ts": "2026-07-25T20:37:32Z", "hours": 5.6622, "text": "hi people! this time i worked on a v86-compatible version for the in-browser demo. it’s now possible to try the project directly in the browser, although there are still a few input-related issues, including with the shift key. the browser version is mainly there as a quick way to look at the project without setting anything up. for proper testing, though, i’d still recommend using a local environment—the demo is mostly for anyone too busy to set one up. pong does work in it though ^^"}, {"post_id": 33966, "ts": "2026-07-24T10:16:38Z", "hours": 10.9, "text": "hi people! recently i worked on adding proper graphics support to the project. instead of relying on text-mode attribute tricks, i went with direct pixel plotting, since it gives the system a much more flexible foundation for drawing things on screen. i added a new Mode 13h framebuffer API with functions for entering and leaving graphics mode, clearing the screen, plotting and reading individual pixels, drawing lines, rectangles, and circles, and changing the VGA palette. the implementation writes directly to the linear framebuffer at 0xA0000, with palette updates handled through the VGA DAC ports. on the BASIC side, there are now new statements for using these graphics features: SCREEN, GCLS, PSET, LINE, RECT, CIRCLE, and PALETTE. i also connected the new graphics code to the statement dispatcher and updated the built-in HELP text so the commands are documented. finally, i cleaned up the build setup by adding the new graphics source files and removing an old ‘-display curses’ option from the run command. this is a much more versatile approach than only the old text-based graphics, and it gives me a better base for anything visual i add later. that’s all for now!"}, {"post_id": 33368, "ts": "2026-07-23T07:14:31Z", "hours": 9.3667, "text": "hi people! i spent more time working on the graphics system. there still isn’t a finished result to show yet, but i’ve been continuing to work through the implementation and figuring out the pieces needed for proper pixel-based graphics support. it’s taking a bit more iteration than expected, but the goal is still to have a solid graphics foundation rather than rushing in something limited. hopefully i’ll have the completed version ready to show soon. see y’all later!"}, {"post_id": 32259, "ts": "2026-07-21T09:58:51Z", "hours": 13.1136, "text": "hi people! i started working toward graphics support this time. i’m moving away from text-mode tricks and looking at direct pixel plotting instead, since it should be much more flexible to build on later.it’s still a work in progress, but i should have something more complete to show next time. what pmo is that 10 hour limit so i cant just devlog once i have a feature, i have to do it in the middle of nothing an wasting 3 hours anyways. see y’all later!"}, {"post_id": 31938, "ts": "2026-07-20T19:04:38Z", "hours": 7.7667, "text": "hi people! this time i added a set of bitwise operations to the language: AND(x,y), OR(x,y), XOR(x,y), NOT(x), SHL(x,n), and SHR(x,n). these work on values converted to 32-bit integers, and the shift functions keep large shift counts predictable by masking them to 31. i also added HEX$(x) and BIN$(x) string functions for displaying numbers in hexadecimal and binary, without unnecessary leading zeroes. on top of that, the number parser now accepts hexadecimal and binary literals using &H… and &B…. finally, i updated the built-in HELP text so the new functions and literal formats are documented in the system itself. that’s all for now"}, {"post_id": 30166, "ts": "2026-07-17T15:01:06Z", "hours": 6.6506, "text": "hi people! this was mostly a behind-the-scenes work session rather than one with a major new feature to show off. i spent a lot of time working through the project, trying things out, and dealing with the smaller details that tend to take longer than expected. there isn’t one big result for this devlog, but the time was still useful for getting a clearer picture of what needs attention next and making progress on the work that supports the larger features. sometimes development is less about a big visible change and more about putting time into the parts that make future work smoother. that’s all for now!"}, {"post_id": 28528, "ts": "2026-07-14T20:47:26Z", "hours": 15.6667, "text": "hi guys! i took a short break from the project. first voluntarily to take care of my mental health, and then a bit longer than planned because i got sick. after returning, i tackled a smaller but useful feature: RTC support via the TIME command. the command can now work with the real-time clock, which means the system has proper support for reading and handling time instead of relying on a manually managed value. this was a fairly quick feature to work through, so it felt like a good way to get back into the project after the break. also, please excuse the old time shown in the photo, i hadn’t kept it up to date when I took it. that’s all, see you later"}, {"post_id": 22752, "ts": "2026-07-05T10:26:44Z", "hours": 10.2164, "text": "hi people! this time, i mostly worked on cleaning things up after restructuring the working tree, and i also fixed a few issues with the text editor. the biggest breakthrough was figuring out why the prime sieve computation kept failing. in the end, the problem had nothing to do with the math itself. instead, it came from the way the interpreter handled loops and writing to disk. those issues interacted in a way that caused the loop to stop after finding just one number. that problem is now fixed, and while tracking it down i also ran into several other bugs, which i fixed along the way. that’s all!"}, {"post_id": 22233, "ts": "2026-07-04T16:25:58Z", "hours": 9.3667, "text": "After my restructuring I was gonna ship the project but I just dont feel its finished enough so I wanted to add a few more features to make it a bit more standalone. Right now, you would in theory be able to use it on a computer without having to prepare programs on another computer because WE HAVE A TEXT EDITOR!!! finally. So you can write your BASIC and execute it, save the results and view them as much as you want!! There is a prime number sieve being edited on screen but it doesnt run yet because there are some issues in the way my BASIC is interpreted, some issue with loops or whatnot. Thats the next thing to work on."}, {"post_id": 20667, "ts": "2026-07-02T10:09:46Z", "hours": 10.5667, "text": "Nothing incredible, except scut work right now. I was made aware by codefactor that my code was too complex in parts (complexity of 771) and so I cleaned up the file tree so its nice and organized, and I am most way through splitting stmt(), but I was made aware my devlogs are too long so here you go."}, {"post_id": 19587, "ts": "2026-06-30T22:41:33Z", "hours": 8.1828, "text": "I started working on giving the system a voice. Yes, quite literally a dystopian, creepy voice synthetisation function. Originally I was only gonna do ‘BEEP freq, duration’ (which i managed in a good hour at most) but then I got invested in actual phoneme/allophone synthesys (Software Automatic Mouth style) and it turned into a lot more work. Sadly so far i’ve only ever gotten squeals out of it, or all quiet, so i am probably going to give up and do more important work like either a text editor or a directory support, or even a proper C compiler in-system (so far only precompiled binaries work)."}, {"post_id": 16830, "ts": "2026-06-27T10:18:01Z", "hours": 19.9, "text": "I took a small hiatus (climbing in the caucas mountains for my mental health). Anyways i’m back and I added binary loading and execution support (for example precompiled C or whatever). I works, no too visible on the screenshot but look at the screen border (it was flashing). Also sorry for the long devlog but i had some time logged, and logged more now, and somehow ended up with 18 hrs."}, {"post_id": 12181, "ts": "2026-06-19T21:57:01Z", "hours": 7.1, "text": "I have finally fixed the floppy boot including its FAT12 init. There were many, many problems, I was running around in circles but I finally fixed it. The last thing I did was rewrote the EDD stuff front and back, and I assume that fixed it. I, honestly, am not sure. But anyways, now both HDD and floppy boot work including FAT12 init and all functions of BASIC that I have implemented insofar."}, {"post_id": 11569, "ts": "2026-06-18T21:07:42Z", "hours": 6.9667, "text": "The floppy boot issue persists. I have moved past the FAT init failing visibly, but any read actions throw all zeros out. I came across the issue in the past, I feel like I am going in circles here,"}, {"post_id": 10455, "ts": "2026-06-17T05:52:29Z", "hours": 7.1333, "text": "At the moment I am still stuck on the same issue (floppy/HDD). I got the idea that the fs may be misconfigured so I am working a on that too. A lot of theories, and multiple issues i’ve fixed already, but on floppy FAT init still fails."}, {"post_id": 9805, "ts": "2026-06-16T07:38:30Z", "hours": 12.0872, "text": "I dont have any major update, I am stuck fixing a regression where FAT initialization fails exclusively on QEMU floppy boots, while HDDs work fine. I always fix one thing and something else breaks, like EDD probing panics, false failiures, reset storms and others. The end result is always the same, the boot takes a long time (timeouts) and no disk is available."}, {"post_id": 8817, "ts": "2026-06-14T17:30:00Z", "hours": 13.4017, "text": "I decided to put some work into booting in hard-drive (DL 0x80). That in itself wasn’t too big an issue, but it in turn made floppy boot (DL 0x00) nonfunctional. I went back and forth, fixing one, breaking the other, again and again. Right now there is some kind of silent failiure in floppy mode that causes it to take minutes to boot (I think its failing and retrying 3 times on every sector) and then it finds the root dir populated as all zeros. The issue is all the processes come back as successes when reading registers. So right now, only hard drive mode works, but this devlog is already wayyyy too long and I wouldnt want to lose all this time."}, {"post_id": 7914, "ts": "2026-06-13T06:12:33Z", "hours": 5.8778, "text": "And we have a complete functioning FAT12! Reading and writing have been working smoothly. The fs writing wasn’t even that hard to implement, and I also added a few more mathematicals to to once again appoach GWBASIC. We have direct hardware access (PEEK/POKE into ram, etc), arrays, nonblocking input (INKEY$) and I also added 2 string functions."}, {"post_id": 6919, "ts": "2026-06-11T16:23:48Z", "hours": 11.835, "text": "After countless fixes I have managed to get a functioning FAT12 filesystem working, including listing and loading files. Saving (writing) is not functional yet. The key issues were: CHS mismatch, BPB was wrong, broken multisector loading, and other. Next I will try to make writing possible."}, {"post_id": 5983, "ts": "2026-06-10T01:13:01Z", "hours": 6.7942, "text": "I’ve changed some kernel details, like that instead of straight crashing, it might tell you whats wrong before, design details, etc. I changed the approach to disk wiriting from straight dd to a python script that actually makes a mountable volume, and I am still working on getting filesystem working. There has been so so many issues ive been running into as the complexity of the system rises (and so does entropy, I guess). This will take an unprecedented amount of work to get even remotely to the level that is GWBASIC, much less what I aspired to (ISO/IEC 10279:1991)."}, {"post_id": 4220, "ts": "2026-06-07T13:34:33Z", "hours": 10.9408, "text": "I managed to implement longer variable names possible, a lof of trig/calc functions and overall perked up some details. Im heading towards Full BASIC instead of just Tiny BASIC but Im not sure how far I will go with this."}, {"post_id": 3710, "ts": "2026-06-06T19:20:05Z", "hours": 8.9439, "text": "Ive gotten to the point where it actually boots from floppy in QEMU (no hd working) AND to an extent BASIC works. Its not perfect yet but ill get there soon."}, {"post_id": 2998, "ts": "2026-06-05T22:31:16Z", "hours": 6.0936, "text": "What a poor choice this project. I wanna sleep so much and yet I cant fall asleep because I just have to get it running and it will definietly only be an hour or less."}, {"post_id": 2674, "ts": "2026-06-05T10:58:37Z", "hours": 9.0503, "text": "I changed the approach. Instead of just messing around in assembly, I will do most of it in C and assembly is only for the bootloader. Yes, bootloader. Simplest way to keep this as bare-metal and universal as possible was, in my opinion, to just write a kernel, grub, crosscompile for i868 (in distrobox because the toolchain doesnt run on my distro) and boot via QEMU. I got far enough that it compiles and builds into an ISO, but doesnt actaully even boot, instead bugs out in SeaBIOS. Seems I bit off more than I could chew."}, {"post_id": 1934, "ts": "2026-06-04T05:34:44Z", "hours": 7.0881, "text": "After an all-nighter i got it to assemble, but to call it functional would be a joke."}]...
|
Title: Borealis by @onyxtheone | Stardance
Devlog Title: Borealis by @onyxtheone | Stardance
Devlogs:
After an all-nighter i got it to assemble, but to call it functional would be a joke.
I changed the approach. Instead of just messing around in assembly, I will do most of it in C and assembly is only for the bootloader. Yes, bootloader. Simplest way to keep this as bare-metal and universal as possible was, in my opinion, to just write a kernel, grub, crosscompile for i868 (in distrobox because the toolchain doesnt run on my distro) and boot via QEMU. I got far enough that it compiles and builds into an ISO, but doesnt actaully even boot, instead bugs out in SeaBIOS. Seems I bit off more than I could chew.
What a poor choice this project. I wanna sleep so much and yet I cant fall asleep because I just have to get it running and it will definietly only be an hour or less.
Ive gotten to the point where it actually boots from floppy in QEMU (no hd working) AND to an extent BASIC works. Its not perfect yet but ill get there soon.
I managed to implement longer variable names possible, a lof of trig/calc functions and overall perked up some details. Im heading towards Full BASIC instead of just Tiny BASIC but Im not sure how far I will go with this.
I’ve changed some kernel details, like that instead of straight crashing, it might tell you whats wrong before, design details, etc. I changed the approach to disk wiriting from straight dd to a python script that actually makes a mountable volume, and I am still working on getting filesystem working. There has been so so many issues ive been running into as the complexity of the system rises (and so does entropy, I guess). This will take an unprecedented amount of work to get even remotely to the level that is GWBASIC, much less what I aspired to (ISO/IEC 10279:1991).
After countless fixes I have managed to get a functioning FAT12 filesystem working, including listing and loading files. Saving (writing) is not functional yet. The key issues were: CHS mismatch, BPB was wrong, broken multisector loading, and other. Next I will try to make writing possible.
And we have a complete functioning FAT12! Reading and writing have been working smoothly. The fs writing wasn’t even that hard to implement, and I also added a few more mathematicals to to once again appoach GWBASIC. We have direct hardware access (PEEK/POKE into ram, etc), arrays, nonblocking input (INKEY$) and I also added 2 string functions.
I decided to put some work into booting in hard-drive (DL 0x80). That in itself wasn’t too big an issue, but it in turn made floppy boot (DL 0x00) nonfunctional. I went back and forth, fixing one, breaking the other, again and again. Right now there is some kind of silent failiure in floppy mode that causes it to take minutes to boot (I think its failing and retrying 3 times on every sector) and then it finds the root dir populated as all zeros. The issue is all the processes come back as successes when reading registers. So right now, only hard drive mode works, but this devlog is already wayyyy too long and I wouldnt want to lose all this time.
I dont have any major update, I am stuck fixing a regression where FAT initialization fails exclusively on QEMU floppy boots, while HDDs work fine. I always fix one thing and something else breaks, like EDD probing panics, false failiures, reset storms and others. The end result is always the same, the boot takes a long time (timeouts) and no disk is available.
At the moment I am still stuck on the same issue (floppy/HDD). I got the idea that the fs may be misconfigured so I am working a on that too. A lot of theories, and multiple issues i’ve fixed already, but on floppy FAT init still fails.
The floppy boot issue persists. I have moved past the FAT init failing visibly, but any read actions throw all zeros out. I came across the issue in the past, I feel like I am going in circles here,
I have finally fixed the floppy boot including its FAT12 init. There were many, many problems, I was running around in circles but I finally fixed it. The last thing I did was rewrote the EDD stuff front and back, and I assume that fixed it. I, honestly, am not sure. But anyways, now both HDD and floppy boot work including FAT12 init and all functions of BASIC that I have implemented insofar.
I took a small hiatus (climbing in the caucas mountains for my mental health). Anyways i’m back and I added binary loading and execution support (for example precompiled C or whatever). I works, no too visible on the screenshot but look at the screen border (it was flashing). Also sorry for the long devlog but i had some time logged, and logged more now, and somehow ended up with 18 hrs.
I started working on giving the system a voice. Yes, quite literally a dystopian, creepy voice synthetisation function. Originally I was only gonna do ‘BEEP freq, duration’ (which i managed in a good hour at most) but then I got invested in actual phoneme/allophone synthesys (Software Automatic Mouth style) and it turned into a lot more work. Sadly so far i’ve only ever gotten squeals out of it, or all quiet, so i am probably going to give up and do more important work like either a text editor or a directory support, or even a proper C compiler in-system (so far only precompiled binaries work).
Nothing incredible, except scut work right now. I was made aware by codefactor that my code was too complex in parts (complexity of 771) and so I cleaned up the file tree so its nice and organized, and I am most way through splitting stmt(), but I was made aware my devlogs are too long so here you go.
After my restructuring I was gonna ship the project but I just dont feel its finished enough so I wanted to add a few more features to make it a bit more standalone. Right now, you would in theory be able to use it on a computer without having to prepare programs on another computer because WE HAVE A TEXT EDITOR!!! finally. So you can write your BASIC and execute it, save the results and view them as much as you want!! There is a prime number sieve being edited on screen but it doesnt run yet because there are some issues in the way my BASIC is interpreted, some issue with loops or whatnot. Thats the next thing to work on.
hi people! this time, i mostly worked on cleaning things up after restructuring the working tree, and i also fixed a few issues with the text editor. the biggest breakthrough was figuring out why the prime sieve computation kept failing. in the end, the problem had nothing to do with the math itself. instead, it came from the way the interpreter handled loops and writing to disk. those issues interacted in a way that caused the loop to stop after finding just one number. that problem is now fixed, and while tracking it down i also ran into several other bugs, which i fixed along the way. that’s all!
hi guys! i took a short break from the project. first voluntarily to take care of my mental health, and then a bit longer than planned because i got sick. after returning, i tackled a smaller but useful feature: RTC support via the TIME command. the command can now work with the real-time clock, which means the system has proper support for reading and handling time instead of relying on a manually managed value. this was a fairly quick feature to work through, so it felt like a good way to get back into the project after the break. also, please excuse the old time shown in the photo, i hadn’t kept it up to date when I took it. that’s all, see you later
hi people! this was mostly a behind-the-scenes work session rather than one with a major new feature to show off. i spent a lot of time working through the project, trying things out, and dealing with the smaller details that tend to take longer than expected. there isn’t one big result for this devlog, but the time was still useful for getting a clearer picture of what needs attention next and making progress on the work that supports the larger features. sometimes development is less about a big visible change and more about putting time into the parts that make future work smoother. that’s all for now!
hi people! this time i added a set of bitwise operations to the language: AND(x,y), OR(x,y), XOR(x,y), NOT(x), SHL(x,n), and SHR(x,n). these work on values converted to 32-bit integers, and the shift functions keep large shift counts predictable by masking them to 31. i also added HEX$(x) and BIN$(x) string functions for displaying numbers in hexadecimal and binary, without unnecessary leading zeroes. on top of that, the number parser now accepts hexadecimal and binary literals using &H… and &B…. finally, i updated the built-in HELP text so the new functions and literal formats are documented in the system itself. that’s all for now
hi people! i started working toward graphics support this time. i’m moving away from text-mode tricks and looking at direct pixel plotting instead, since it should be much more flexible to build on later.it’s still a work in progress, but i should have something more complete to show next time. what pmo is that 10 hour limit so i cant just devlog once i have a feature, i have to do it in the middle of nothing an wasting 3 hours anyways. see y’all later!
hi people! i spent more time working on the graphics system. there still isn’t a finished result to show yet, but i’ve been continuing to work through the implementation and figuring out the pieces needed for proper pixel-based graphics support. it’s taking a bit more iteration than expected, but the goal is still to have a solid graphics foundation rather than rushing in something limited. hopefully i’ll have the completed version ready to show soon. see y’all later!
hi people! recently i worked on adding proper graphics support to the project. instead of relying on text-mode attribute tricks, i went with direct pixel plotting, since it gives the system a much more flexible foundation for drawing things on screen. i added a new Mode 13h framebuffer API with functions for entering and leaving graphics mode, clearing the screen, plotting and reading individual pixels, drawing lines, rectangles, and circles, and changing the VGA palette. the implementation writes directly to the linear framebuffer at 0xA0000, with palette updates handled through the VGA DAC ports. on the BASIC side, there are now new statements for using these graphics features: SCREEN, GCLS, PSET, LINE, RECT, CIRCLE, and PALETTE. i also connected the new graphics code to the statement dispatcher and updated the built-in HELP text so the commands are documented. finally, i cleaned up the build setup by adding the new graphics source files and removing an old ‘-display curses’ option from the run command. this is a much more versatile approach than only the old text-based graphics, and it gives me a better base for anything visual i add later. that’s all for now!
hi people! this time i worked on a v86-compatible version for the in-browser demo. it’s now possible to try the project directly in the browser, although there are still a few input-related issues, including with the shift key. the browser version is mainly there as a quick way to look at the project without setting anything up. for proper testing, though, i’d still recommend using a local environment—the demo is mostly for anyone too busy to set one up. pong does work in it though ^^
hi people! im trying to get BTBX to boot properly on an ASUS F5RL laptop. unfortunately, it still isn’t booting correctly, but I managed to narrow the problem down further. I previously ran into issues involving EDD, DH, and a few other parts of the boot process. right now I’m getting the error S1>S2Agk(18.1)Drk{c2,h0,s2}R , which makes it look like the BIOS may be reporting bogus CHS geometry in a way BTBX is not expecting. there’s no working result yet, but I’ll keep investigating the boot and disk-handling path. i hope to get it running soon.
hi people! this one’s a bit different. no new features, but a new name. the project is now called Borealis. the old name, BTBX, made sense when this was a tiny BASIC interpreter and nothing more, but it’s grown into a full bootloader, kernel, and proto-OS, and the name stopped fitting. the system now has three named layers: coil is the two-stage bootloader, helix is the kernel, and BOREALIS is the system as a whole. the names are deliberately scale-neutral. where the project goes from here shouldn’t be constrained by what it’s called. the rename itself was the easy part, the fallout was the real work. i went through every file updating references to the old name, plus the directory structure ( boot/ became coil/ , src/kernel/ became src/helix/ ), the build files, and the image name ( borealis.img now). outside the repo, i also had to update hackatime and stardance so everything points at the right thing. the README on github is fully rewritten to match (may not be pushed at this time), and there’s a note in it about the old name for continuity. technically nothing else changed. same code, same features, same open issues, this was purely an identity update. that’s all for now!
Fixed the boot (fr this time) the whole laptop reset thing turned out to be two bugs stacked on each other: the bootloader was trusting/rejecting BIOS geometry based on vibes, and the kernel entry point was jumping into a debug helper instead of _start , so the CPU executed one stray ret into the void and triple-faulted. coil now makes the BIOS prove its geometry against a build-time checksum before trusting it, and checksums the whole kernel before jumping in. Boot output is an actual diagnostic language now: gk = geometry truthful, gf = BIOS lied, C! = wrong bytes arrived, and nothing resets silently anymore. QEMU boots all the way to BASIC, audio included. Also cleaned up helix.c (boot debug spam now only speaks when something’s actually wrong, RIP “HELIX FAILIURE” typo), evicted BTBX from the prompt, it’s js => now, and am working the BASIC interpreter with a bit of a rewrite: dispatcher no longer depends on include order and prayer, dead duplicate file-I/O code confirmed gone, graphics.inc brace damage found and fixed. Laptop test tomorrow-ish, then the interpreter cleanup lands. see u next time!
boot is finally stable, primes count to a million, so i tried the graphics. SCREEN 13 does nothing. no error, no letters, no mode change. GCLS nothing, LINE nothing, RECT nothing. PALETTE works??? which makes no sense because palette is the one that should be hardest. starting to suspect the video thunk is broken. ive got no idea. but at least im honoring my promise to keep devlogs shorter.
spent the whole night inside the realmode thunk with a fine comb. it is NOT the thunk. SCREEN 0 actually switches modes fine, which makes SCREEN 13 doing nothing even weirder. also found out my kernel thinks graphics is already on before i ever turned it on?? the flag says 255. TWO HUNDRED FIFTY FIVE. its supposed to be 0 or 1. memory corruption somewhere (see kpan 7), or im losing my mind. probably both.
ITS THE MEMORY MAP. gfx_is_active sits at 0xA12C0 which is past 0xA0000 aka inside the VGA framebuffer window. reads from there always return 0xFF in text mode, writes vanish into the void. the kernel bss grew past 640k and parked a variable in video memory. the “graphics thunk situation” was never the thunk. it was never even the graphics. one line in the linker script moves bss to 1MiB and everything works. i want to scream (affectionate). theres some more to be done before its usable in practice (because it never really was i guess) but SOON.
SCREEN 13 works, SCRTEST passes end to end, palette cycling is smooth, and as a bonus the fix also killed a stack-vs-bss collision that was waiting to happen. wrote AURORA.BAS to celebrate, it does a starfield and a sine curtain with the classic palette-cycling trick so it stays fast even interpreted. next up (probs): making it the boot splash, config.txt for persistence, then directories and much much more to be excited for!
the system has a config file now. CONFIG.TXT on the boot disk, key=value, one per line, read at boot. the fun part: the parser tolerates leading line numbers, so EDIT CONFIG.TXT just works with zero new editor code. the editor only speaks numbered lines, so i taught the config reader to ignore them instead (and officially, just use the numbered lines in there its not that hard, but you dont have to for it to work). SPLASH=0/1 is the first key, persistence is free because its a file on the FAT12 disk. the whole reader is ~75 lines, no allocation, no subsystem. config systems should be files, not frameworks ;3c
boot splash is in and shipping on the image. CONFIG.TXT decides, SPLASH.BAS plays on boot, keypress skips. the hook was “just two lines” and then reality happened: config.c wasnt in the makefile, the loader was static, and the first boot loaded the splash then sat at the prompt waiting for me to type RUN myself. three one-line fixes later: coil letters, banner, aurora, prompt. also fixed make pack details. the machine has a boot vibe now next up is proper scrollback, logging, and arrow key support.
im still working on real hw boot issues. coil doesnt guess geometry anymore, it brutes it: the new stage2 tries every plausible CHS geometry against a buildtime checksum of the kernel’s first sector and prints the one that actually works. no more “trust the BIOS” and no more “reject the BIOS”, just prove it. on a sane machine it prints g(18.2) and boots like nothing happened. on the laptop it either prints its real geometry and boots, or prints G! plus what the BIOS claimed. either way i finally get an answer instead of a silent reset. in the meantime ill be working on some features like arrows, logging, etc. attached photo of my testing setup
borealis booted on the laptop for the first time. not qemu but actual silicon, a core 2 duo, off a usb stick. coil came up, loaded helix, and the machine made it to the banner plus three debug lines, which is the whole chain working on real firmware: stage1 > stage2 > kernel > protected mode. CHS disk was already known broken cos this bios won’t talk cylinders/heads/sectors to a stick with no real geometry, fair enough — so coil booted over EDD, but helix’s disk layer still assumed CHS and the filesystem never came up. still: it boots, on real hardware. just doesnt get far enough to be useful (yet).
next wall, immediate: the machine hangs at fat_cache_load, the step where helix reads the FAT and root directory into RAM. in qemu this works instantly but on the laptop the disk read goes out and never comes back. no error, no status, no return. debug output narrows it to exactly the transfer call: everything before prints, everything after doesn’t.
working theory: the bios’s legacy usb support, and specifically system management mode. coil runs in pure real mode and its EDD reads work, the bios reads the stick happily at boot. but helix runs in protected mode, and calling the bios means dropping back through a thunk, and that round-trip is where it dies. on a machine this age legacy usb lives in SMM: the bios traps disk interrupts and does the transfer in a mode invisible to the os, assuming a clean real-mode cpu, and our PM excursion breaks that assumption. the tell: teletype (int 10h) works from the thunk, disk (int 13h) hangs. teletype doesn’t touch usb, disk does. photo is the bios setup screen, where i went hunting for a legacy usb toggle which i did not find ;3c
instrumented the thunk to print a letter per step so a hang names its own murderer. result: Rer , then nothing. R entered real mode, e entered the EDD read, r was about to issue a disk reset, ah=00h, the simplest int 13h call there is, no transfer, and it never returned. if even a no-op reset hangs after the PM excursion, the bios’s whole disk service is dead post-protected-mode on this machine, full stop. so the fix is a native usb driver. helix talks EHCI directly, bios for boot and native for runtime, as it should be, but that’s pci + ownership handoff from the very SMM that broke us + enumeration + BOT/scsi, and you don’t bring that up blind, one teletype letter per reboot, right before losing the hardware. deferred until the laptop’s back on hand; qemu remains unaffected.
the laptop’s bios has a party trick: as i described before, int 13h works fine until the cpu enters protected mode, then it never returns, not even for a no-transfer disk reset. bios toggles didn’t help, so borealis is growing a native usb driver. first part: find the ehci controller over pci, do the formal ownership handshake (there’s an actual semaphore register in config space where the os and the bios’s smm ghost take turns. set our bit, wait for theirs to clear, then kill every smi source so the ghost stops getting summoned), reset the controller, spin up an idle async schedule, scan the ports. no packets yet, just a controller that’s officially ours. dev loop is qemu with a stick image on an emulated ehci, boot still from floppy, so the laptop only has to show up for the one hardware-specific part. moral: if the firmware won’t share the hardware, take the hardware.
the stick talks, and for the first time it’s talking to us, not the bios. this part was the transfer engine: queue heads and transfer descriptors, little linked-list structs the ehci controller fetches out of ram and executes on its own. a control transfer is three of them chained by hand (setup, data, status), data toggles set manually per stage because high-speed lets you. link the queue head into the async ring, poll the active bit, unlink, then ring the doorbell (an actual doorbell bit) so the controller formally forgets the whole thing before the structs get reused. first exchange: GET_DESCRIPTOR at address 0, and the stick answered with its vid/pid like a civilized device. qemu’s stick goes by 46f4:0001; the real one can introduce itself when the laptop’s back. next: scsi over bulk, and fat12 stops caring what a disk is. moral: usb devices are polite, they just want to be asked in struct form.
debug spew is a file now. every checkpoint from the first instruction onward (entry asm, the real-mode thunk letters, all the [DEBUG] lines) lands in a buffer, and once the fs proves it can write, the buffer becomes LOG.TXT and the screen clears to the banner. the trick is the default: echo stays on until the file is safely written, so a boot that dies early still shows everything live. the fallback isn’t a code path, it’s just never getting to the quiet part. LOG=0 in CONFIG.TXT keeps the old wallpaper. and the log already caught its first bug: a missing [EZTG] tattled on a stale version entry.asm. debugging is too important to leave on the screen.
im still working on getting a usb driver to work. ehci seems to work kinda but its a loop between giving false data, partial data and occasionally seemingly true data but then usb decides it doesnt like it and ideally fat12 fails durning cache load too, WHICH I FIXED LONG AGO BRUH. but it came back for some reason. so im trying timing, msd, stall handling everything. this may take another decade.
the stick is a disk now, no bios involved: usb grew enumeration and bot/scsi, fat12 picks whichever backend came up. qemu took the whole chain first try. the laptop found the stick on port 0 and then refused to reset it (my fault), the 50ms delay was port-0x80 writes that only cost real time inside qemu, so there’s a pit-based clock now. plot twist from the log meanwhile: the bios path worked on the laptop, because the toggles that “didn’t help” had quietly moved the stick to floppy emulation, and that path survives the mode switch. so it (partially) boots by accident while we fix it on purpose. also caught in a self-audit: a stall burned a full second, and a short read could report success with half a sector. readme rewritten as i was told to by sw.
the port resets work on the laptop now. the bit we were waiting on (port-enable-changed) was being acknowledged by the bios’s smm ghost before we ever saw it, so we stopped waiting on the status bit and just read the port state, which can’t be acked away. also fixed before it bit us: two devices answering address 0 at once (enumeration is per-port now, and every device gets a real address before the next port wakes up). the next failure was prettier: every OUT transfer works, every IN transfer dies. the stick takes its orders but can’t talk back. that’s the signature of the qtd buffer list, the one place real ich silicon is strict where qemu is forgiving, so all dma buffers are page-aligned now and the error reports name whichever endpoint stalled. also everyone gotta apreciate the blahaj!
i am (still) putting in work on the usb driver, this is proving to be very complicated especially because my hardware is not cooperating. im thinking about switching back to floppy-emulated mode which would be more practical for debugging but at the same time probably introduce new issues i dont even expect yet.
its been a week since my last devlog, i dont have much new to add because with school and other responsibilities i dont have much time for actuall progress on this project. still i accumulated some 9 hours (sorry gizzy) by doing small changed, linting, updating forgotten banners and version numbers and so on. EHCI/USB still fails on the same issues as before. i will be reverting to a superfloppy boot because right now i cant even get debug to write to the disk which is annoying. then once i get the usb driver with all its issues working (sometime next decade) i can give usb boot another shot.
Ships:
I built BTBX (Bare Tiny(?) BASIC eXecutor), a self-contained BASIC interpreter that is the operating system. There’s no Linux, no DOS, nothing underneath it. It boots straight off a FAT12 floppy image via a two-stage bootloader (512-byte stage1 + 2KB stage2), flips the CPU into protected mode, sets up the A20 gate, and lands you directly in a BASIC REPL, all inside 640KB of conventional memory. From there it’s a real language: GOTO, GOSUB, FOR/NEXT, WHILE/WEND, IF/THEN/ELSE, multi-dimensional arrays, 32-bit integers plus x87 80-bit floats, string functions (LEFT$, MID$, CHR$, etc.), and a full FAT12 filesystem so you can actually SAVE, LOAD, and DIR your programs on the disk image. There’s also PEEK/POKE for raw memory access, BLOAD/SYS to load and jump into raw machine code, VGA graphics primitives, a PIT-driven BEEP, and — half-finished but present — a SAY command aiming for SAM-style formant speech synthesis. What was challenging? Everything below the interpreter, honestly. Getting the boot chain right (CHS and EDD disk reads, A20 enabling that doesn’t silently hang, jumping into protected mode without immediately triple-faulting) took far longer than any language feature. The BIOS-thunk approach for file I/O (calling back into 16-bit real mode from a 32-bit kernel just to talk to disk) was its own maze. The funniest recent challenge was building a browser demo on top of v86: getting PS/2 keyboard Shift state to survive contact with a web browser turned out to be nearly as hard as writing the A20 gate code itself :3. Real hardware (and QEMU) just work; browsers apparently have opinions about what a Shift key is allowed to do. What am I proud of? That it boots at all, genuinely. A homemade OS with a homemade language on top, running real math through the x87 FPU and reading/writing a real filesystem, in under 640KB, with zero borrowed runtime. Getting arrays, strings, and file I/O all coexisting cleanly in a from-scratch interpreter over ~240 hours feels like the actual milestone here, not any single feature. What should people know to test it? Use make && make run, that's the supported path, tested in QEMU, and it's where shift/symbols work correctly. The browser demo (v86-based) is explicitly beta. booting and typing work, but shift-modified keys are unreliable there due to browser/emulator keyboard quirks (a real physical keyboard emulator interaction gap, not a BASIC bug ^^). Don't judge the interpreter by the demo's keyboard weirdness. Try PRINT, FOR/NEXT loops, SAVE/LOAD/DIR to confirm the filesystem works, and BEEP for audio. SAY is a known work-in-progress ergo don't expect actual speech (yet). Check the source tree if you want to see the boot chain (boot/stage1.asm, boot/stage2.asm) separately from the interpreter (src/kernel/basic.c)....
|
1792878618.2847242
|
1793742618.2847242
|
|
6812
|
Localline by @sandrp | Stardance
|
sandrp
|
0
|
15.49
|
0
|
[]
|
[{"post_id": 13842, "ts": "202 [{"post_id": 13842, "ts": "2026-06-22T18:02:00Z", "hours": 14.9814, "text": "MapLibre i’ve got MapLibre to work! Even on my local phone :)"}, {"post_id": 1759, "ts": "2026-06-03T23:03:48Z", "hours": 0.505, "text": "first progress on learning to make my very own Android App :3"}]...
|
Title: Localline by @sandrp | Stardance
Devlogs:
Title: Localline by @sandrp | Stardance
Devlogs:
first progress on learning to make my very own Android App :3
MapLibre i’ve got MapLibre to work! Even on my local phone :)...
|
1793289011.3341725
|
1793893811.3341725
|
|
6813
|
MemoryPath by @AnshV | Stardance
|
AnshV
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: MemoryPath by @AnshV | Stardance
|
1793170109.4648201
|
1793774909.4648201
|
|
6814
|
Simple webpage by @endengineer4 | Stardance
|
endengineer4
|
0
|
0.92
|
0
|
[]
|
[{"post_id": 11509, "ts": "202 [{"post_id": 11509, "ts": "2026-06-18T20:01:20Z", "hours": 0.9236, "text": "I currently made some base pages for the website for the user to travel through with one “secret” page being present. However, most of it isn’t fleshed out and most of the time spent was refreshing myself on linking one page to another while also incorporating CSS for different pages. Function follows form."}]...
|
Title: Simple webpage by @endengineer4 | Stardance Title: Simple webpage by @endengineer4 | Stardance
Devlogs:
I currently made some base pages for the website for the user to travel through with one “secret” page being present. However, most of it isn’t fleshed out and most of the time spent was refreshing myself on linking one page to another while also incorporating CSS for different pages. Function follows form....
|
1793163215.59896
|
1793768015.59896
|
|
6815
|
Rogue-Mac by @C--Ayam | Stardance
|
C--Ayam
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Rogue-Mac by @C--Ayam | Stardance
|
1793371680.3209023
|
1793976480.3209023
|
|
6816
|
Untitled by @Alexidk | Stardance
|
Alexidk
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Alexidk | Stardance
|
1792731072.3147824
|
1793335872.3147824
|
|
6817
|
My first slack bot! by @Overgrowth_774 | Stardance
|
Overgrowth_774
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Overgrowth_774 | St Title: My first slack bot! by @Overgrowth_774 | Stardance...
|
1793173890.843969
|
1793778690.843969
|
|
6818
|
Untitled project by @vanshr | Stardance
|
vanshr
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @vanshr | Stardance
|
1793289207.2111416
|
1793894007.2111416
|
|
6819
|
My awesome macropad! by @DRAGONAV99 | Stardance
|
DRAGONAV99
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @DRAGONAV99 | Stard Title: My awesome macropad! by @DRAGONAV99 | Stardance...
|
1792788692.967447
|
1793393492.967447
|
|
6820
|
cycloidal_geabox_robotic_arm by @Aarnav | Stardanc cycloidal_geabox_robotic_arm by @Aarnav | Stardance...
|
Aarnav
|
0
|
46.02
|
0
|
[]
|
[{"post_id": 25011, "ts": "202 [{"post_id": 25011, "ts": "2026-07-08T22:40:19Z", "hours": 11.7172, "text": "Fixed up github and ordered parts"}, {"post_id": 15517, "ts": "2026-06-25T06:37:53Z", "hours": 15.1131, "text": "editted the gripper to make it smaler to work with my design"}, {"post_id": 10479, "ts": "2026-06-17T06:58:52Z", "hours": 2.0361, "text": "I finished up the assembaly and everything should be complete now hoping to get funding now. Also pulled a free model from online for the gripper."}, {"post_id": 10269, "ts": "2026-06-16T22:17:58Z", "hours": 0.4522, "text": "fixed connection to allow movement and also made mount for FOC"}, {"post_id": 9445, "ts": "2026-06-15T20:13:52Z", "hours": 0.8797, "text": "worked on the connection from the base to the arm"}, {"post_id": 8940, "ts": "2026-06-14T21:11:40Z", "hours": 1.4569, "text": "worked on connecting arm components to the turning base"}, {"post_id": 7835, "ts": "2026-06-13T02:21:29Z", "hours": 0.7325, "text": "I set up the ir sensor for the optical encoder for the base hopefully this works scrapped the idea of using the tiny magnets"}, {"post_id": 6483, "ts": "2026-06-10T22:03:14Z", "hours": 1.5375, "text": "working on encoder for base going to use these magnets"}, {"post_id": 5266, "ts": "2026-06-08T23:49:17Z", "hours": 1.3906, "text": "set up the encoder and other part of the arm"}, {"post_id": 5147, "ts": "2026-06-08T20:44:01Z", "hours": 0.7189, "text": "worked on building out the arm for the robotic arm"}, {"post_id": 4439, "ts": "2026-06-07T19:16:30Z", "hours": 1.1783, "text": "I finished the full two stage gearbox. The next stage is the actuator."}, {"post_id": 3740, "ts": "2026-06-06T19:41:09Z", "hours": 1.0444, "text": "worked on connecting the first stage to the second stage and designed the base for the output"}, {"post_id": 3071, "ts": "2026-06-05T23:29:20Z", "hours": 2.1458, "text": "created the screw holes and figured out te output shaft set up the holes for the output to and verified everything worked together"}, {"post_id": 2596, "ts": "2026-06-05T06:32:31Z", "hours": 1.58, "text": "Fixed up the design ad bult the rollers our. Next going to design the part that recieves the motion"}, {"post_id": 2449, "ts": "2026-06-04T22:53:24Z", "hours": 1.4614, "text": "I have fixed up the design removing unecessary parts and built the housing for the first stage for the cyloidal drive"}, {"post_id": 2339, "ts": "2026-06-04T19:38:55Z", "hours": 2.5794, "text": "I have built the “crack shaft” of the cycloidal drive and I have also built the enclosure for the motor"}]...
|
Title: cycloidal_geabox_robotic_arm by @Aarnav | S Title: cycloidal_geabox_robotic_arm by @Aarnav | Stardance
Devlogs:
I have built the “crack shaft” of the cycloidal drive and I have also built the enclosure for the motor
I have fixed up the design removing unecessary parts and built the housing for the first stage for the cyloidal drive
Fixed up the design ad bult the rollers our. Next going to design the part that recieves the motion
created the screw holes and figured out te output shaft set up the holes for the output to and verified everything worked together
worked on connecting the first stage to the second stage and designed the base for the output
I finished the full two stage gearbox. The next stage is the actuator.
worked on building out the arm for the robotic arm
set up the encoder and other part of the arm
working on encoder for base going to use these magnets
I set up the ir sensor for the optical encoder for the base hopefully this works scrapped the idea of using the tiny magnets
worked on connecting arm components to the turning base
worked on the connection from the base to the arm
fixed connection to allow movement and also made mount for FOC
I finished up the assembaly and everything should be complete now hoping to get funding now. Also pulled a free model from online for the gripper.
editted the gripper to make it smaler to work with my design
Fixed up github and ordered parts...
|
1793289021.2718263
|
1793893821.2718263
|
|
6821
|
My awesome macropad! by @AnshV | Stardance
|
AnshV
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @AnshV | Stardance
|
1792788868.2627416
|
1793393668.2627416
|
|
6822
|
Buffet Patron Simulator by @ylu | Stardance
|
ylu
|
1
|
47.0
|
625
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-29T18:37:52Z", "hours": 47.0, "multiplier": 14.51, "payout": 625, "blessing": "neutral", "text": "I made a simulation game where you are at a buffet. You can put food on your plate and watch it realistically deform based on what’s underneath it. You can pour yourself a drink at the soda fountain and even mix drinks. This is technically my third Unity game, but it is the greatest in terms of originality and scope. I had little to no experience programming in C# for Unity before this. I’m proud of realizing some of my more technically challenging visions such as the food deformation and drink mixing. I’m also proud of learning how to model and paint foods and such in Blender. My project is fully playable on the web. The demo points to the itch.io page. A Windows executable is also available to download there.", "repo": "https://github.com/Why-Am/Buffet-Patron-Simulator", "demo": "https://yhlu.itch.io/buffet-patron-simulator"}]...
|
[{"post_id": 18467, "ts": "202 [{"post_id": 18467, "ts": "2026-06-29T17:06:12Z", "hours": 5.7625, "text": "New in Buffet Patron Simulator: Final Tweaks, a Video Trailer, and Ship Preparations In-Game Changes White UI text now has an outline for visibility New food item: chocolate cake slice ( watch me make it ) Changed the directional light from a realtime light to a mixed light (realtime + baked) so shadows would be higher quality on web Trailer I made a trailer for my game: https://youtu.be/KIWuaLkeX5Q ( watch me make it ) Updated README and Itch.io Page Finally, I updated my project’s README and Itch.io page for polish. Attached: frame from the trailer"}, {"post_id": 16030, "ts": "2026-06-26T01:06:25Z", "hours": 1.5383, "text": "Added some posters to my game"}, {"post_id": 15301, "ts": "2026-06-24T21:03:17Z", "hours": 3.9775, "text": "New in Buffet Patron Simulator: Realistic Sounds, Inspecting Drink Dispensers Adding sounds to the drink dispensers got me to rework the hold interactions. Now it uses the more sane method of checking key presses and releases (previously it just sent interact calls every frame a key was held). Anyways, with that alongside a new “liquid pouring” effect (which is just a moving cylinder), the dispensers are now more satisfying to use. Placing Food Placing food also gets a sound. So that not all foods sounded the same, I added a “weight” field to each food that determined the volume at which the sound would be played. Inspecting Your Food and Drink I added an inspect scene that’s basically just a copy-and-paste of the food placing scene but stripped down and with the glass present. It’s accessed by pressing i . Ship Soon? Next, I will focus on final optimizations and promotional materials (videos, images) to prepare to ship within a few days."}, {"post_id": 14012, "ts": "2026-06-23T00:03:49Z", "hours": 5.9614, "text": "New in Buffet Patron Simulator: Drinks You can mix drinks and the color of the glass’s contents changes accordingly. I also added the game’s first sounds - you should be able to hear them in the video - as well as 3 more foods: crab rangoon, General Tso’s chicken, and coconut shrimp. It was a challenge to get the glass to fill at a consistent rate, but I figured it out using a coroutine that restricts the rate of calls to add liquid (which occur every frame the E key is held). Next up is figuring out how to play a sound while it fills…"}, {"post_id": 11533, "ts": "2026-06-18T20:38:49Z", "hours": 2.7747, "text": "Added some scenery and lighting to my buffet game There are some tough tradeoffs to be made in terms of graphics, given that I want the game to look good but also be lean for the web. Skybox There aren’t actually any 3D buildings outside of the windows, it’s just a skybox I got from Polyhaven (a large repository of public domain 3D assets I found). I settled for a lower resolution version since it would have less impact on loading times. Lights The lights on the ceiling are baked area lights. The upside of that is a lower runtime cost. The downside is that it ignores moving objects like the player. Floor Then, thinking the room looked a little dull, I made a purple and yellow (green?) tile material for the floor. The texture is nice and small at only 128x128 px/156 bytes. I’ve been increasingly mindful of texture sizes as my game grows."}, {"post_id": 10238, "ts": "2026-06-16T21:22:18Z", "hours": 2.5369, "text": "Added eggs, baked beans, and green beans. I also made some other refinements, including making the displays easier to interact with by making their colliders bigger. Watch me model the foods: https://lapse.hackclub.com/timelapse/0VTNwczx4ETd"}, {"post_id": 9514, "ts": "2026-06-15T21:39:32Z", "hours": 6.2758, "text": "Since last devlog, I added burger ingredients and a settings menu. Here’s a time lapse of me making the models: https://lapse.hackclub.com/timelapse/OWkasEGkBTYV It’s also now playable enough that I decided to publish a web demo: https://yhlu.itch.io/buffet-patron-simulator"}, {"post_id": 7228, "ts": "2026-06-12T02:00:44Z", "hours": 6.4814, "text": "Since last devlog, there is now: a preliminary buffet scene with a first person movable character and interactive food displays new 3D models for the plate and the rice, made in Blender"}, {"post_id": 6013, "ts": "2026-06-10T02:35:20Z", "hours": 3.1494, "text": "Steak Added Also made some improvements to placing food. Modeling Issues It turns out that colorful textures on voxel models mess up when remeshing. The rice doesn’t have this problem because it’s grayscale. So I ended up trying sculpting and texture painting in Blender, and it was actually very intuitive. The steak in the video is made completely in Blender."}, {"post_id": 5307, "ts": "2026-06-09T01:18:55Z", "hours": 3.3122, "text": "A Pile of Rice New scene for placing food on a plate. Currently only rice available. It’s only now starting to dawn on me that this doesn’t really look like rice."}, {"post_id": 4497, "ts": "2026-06-07T20:35:00Z", "hours": 4.8922, "text": "I am working on making food pile up realistically using mesh deformation. The structural integrity is adjustable for different foods. Structural integrity is achieved in two ways: Only the bottom vertices are directly mapped onto the surface below; the rest are then moved relative to the bottom vertices. The amount a vertex moves is inversely related to its height. It could be tuned in terms of realism and optimization, but I’m currently happy with the result."}]...
|
Title: Buffet Patron Simulator by @ylu | Stardance Title: Buffet Patron Simulator by @ylu | Stardance
Devlogs:
I am working on making food pile up realistically using mesh deformation. The structural integrity is adjustable for different foods. Structural integrity is achieved in two ways: Only the bottom vertices are directly mapped onto the surface below; the rest are then moved relative to the bottom vertices. The amount a vertex moves is inversely related to its height. It could be tuned in terms of realism and optimization, but I’m currently happy with the result.
A Pile of Rice New scene for placing food on a plate. Currently only rice available. It’s only now starting to dawn on me that this doesn’t really look like rice.
Steak Added Also made some improvements to placing food. Modeling Issues It turns out that colorful textures on voxel models mess up when remeshing. The rice doesn’t have this problem because it’s grayscale. So I ended up trying sculpting and texture painting in Blender, and it was actually very intuitive. The steak in the video is made completely in Blender.
Since last devlog, there is now: a preliminary buffet scene with a first person movable character and interactive food displays new 3D models for the plate and the rice, made in Blender
Since last devlog, I added burger ingredients and a settings menu. Here’s a time lapse of me making the models: https://lapse.hackclub.com/timelapse/OWkasEGkBTYV It’s also now playable enough that I decided to publish a web demo: https://yhlu.itch.io/buffet-patron-simulator
Added eggs, baked beans, and green beans. I also made some other refinements, including making the displays easier to interact with by making their colliders bigger. Watch me model the foods: https://lapse.hackclub.com/timelapse/0VTNwczx4ETd
Added some scenery and lighting to my buffet game There are some tough tradeoffs to be made in terms of graphics, given that I want the game to look good but also be lean for the web. Skybox There aren’t actually any 3D buildings outside of the windows, it’s just a skybox I got from Polyhaven (a large repository of public domain 3D assets I found). I settled for a lower resolution version since it would have less impact on loading times. Lights The lights on the ceiling are baked area lights. The upside of that is a lower runtime cost. The downside is that it ignores moving objects like the player. Floor Then, thinking the room looked a little dull, I made a purple and yellow (green?) tile material for the floor. The texture is nice and small at only 128x128 px/156 bytes. I’ve been increasingly mindful of texture sizes as my game grows.
New in Buffet Patron Simulator: Drinks You can mix drinks and the color of the glass’s contents changes accordingly. I also added the game’s first sounds - you should be able to hear them in the video - as well as 3 more foods: crab rangoon, General Tso’s chicken, and coconut shrimp. It was a challenge to get the glass to fill at a consistent rate, but I figured it out using a coroutine that restricts the rate of calls to add liquid (which occur every frame the E key is held). Next up is figuring out how to play a sound while it fills…
New in Buffet Patron Simulator: Realistic Sounds, Inspecting Drink Dispensers Adding sounds to the drink dispensers got me to rework the hold interactions. Now it uses the more sane method of checking key presses and releases (previously it just sent interact calls every frame a key was held). Anyways, with that alongside a new “liquid pouring” effect (which is just a moving cylinder), the dispensers are now more satisfying to use. Placing Food Placing food also gets a sound. So that not all foods sounded the same, I added a “weight” field to each food that determined the volume at which the sound would be played. Inspecting Your Food and Drink I added an inspect scene that’s basically just a copy-and-paste of the food placing scene but stripped down and with the glass present. It’s accessed by pressing i . Ship Soon? Next, I will focus on final optimizations and promotional materials (videos, images) to prepare to ship within a few days.
Added some posters to my game
New in Buffet Patron Simulator: Final Tweaks, a Video Trailer, and Ship Preparations In-Game Changes White UI text now has an outline for visibility New food item: chocolate cake slice ( watch me make it ) Changed the directional light from a realtime light to a mixed light (realtime + baked) so shadows would be higher quality on web Trailer I made a trailer for my game: https://youtu.be/KIWuaLkeX5Q ( watch me make it ) Updated README and Itch.io Page Finally, I updated my project’s README and Itch.io page for polish. Attached: frame from the trailer
Ships:
I made a simulation game where you are at a buffet. You can put food on your plate and watch it realistically deform based on what’s underneath it. You can pour yourself a drink at the soda fountain and even mix drinks. This is technically my third Unity game, but it is the greatest in terms of originality and scope. I had little to no experience programming in C# for Unity before this. I’m proud of realizing some of my more technically challenging visions such as the food deformation and drink mixing. I’m also proud of learning how to model and paint foods and such in Blender. My project is fully playable on the web. The demo points to the itch.io page. A Windows executable is also available to download there....
|
1793253094.0230477
|
1793339494.0230477
|
|
6823
|
Untitled by @SamBair | Stardance
|
SamBair
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @SamBair | Stardance
|
1793346651.9631934
|
1793951451.9631934
|
|
6824
|
Untitled by @aMazed | Stardance
|
aMazed
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @aMazed | Stardance
|
1793256878.547119
|
1793861678.547119
|
|
6825
|
Tricopter by @Alexidk | Stardance
|
Alexidk
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Tricopter by @Alexidk | Stardance
|
1793328543.124892
|
1793933343.124892
|
|
6826
|
My first slack bot! by @Chlowie | Stardance
|
Chlowie
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Chlowie | Stardance
|
1793170568.3358777
|
1793775368.3358777
|
|
6827
|
My first slack bot! by @arjunkhedkar | Stardance
|
arjunkhedkar
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @arjunkhedkar | Star Title: My first slack bot! by @arjunkhedkar | Stardance...
|
1793228005.5410242
|
1793832805.5410242
|
|
6828
|
Multi-Dimensional Platformer by @dakspieth | Stard Multi-Dimensional Platformer by @dakspieth | Stardance...
|
dakspieth
|
0
|
12.91
|
0
|
[]
|
[{"post_id": 4376, "ts": "2026 [{"post_id": 4376, "ts": "2026-06-07T18:06:17Z", "hours": 12.9097, "text": "This is the first devlog for my game, I’m bad with names so it doesn’t have one yet but the gist is in the description “Platformer (obv) where you start in 1d and progress through 2d and 3d up to 4d, with time travel.” I’m not really sure how much work constitutes a devlog, which is why I have so many hours and quite a bit of progress already. Overview: A scientist made a time machine that is supposed to bring them to the 4th dimension (4th dimension being time) and let them time travel, but the machine malfunctioned, and instead of increasing their dimensions, it removed them. The scientist is now stuck in 1 dimension, needing to find and fix the device to complete their goal. Progress: I’m about half way done with the design of the first section, 1D, but I have yet to start doing things like art, animations, tutorials, etc. I also haven’t figured out how to make a game in 1D look good at all, which is why the game looks so rough atm. The video shows what the game looks like right now (video shows like 1/3 of the level), and, like I said, I don’t know how to make it look good which is why it is just a bunch of lines. The game is broken up into screens like Celeste, and on each screen is some puzzle. The player gains a teleport gun which shoots a projectile that teleports you to what it hits, and you use that the get through the different puzzles. Future: I know this game is very ambitious, but I also have the whole summer to ship it, which is why I’m going for it. After the 1D section you get some repair part of the time travel device which brings you to 2D. The gameplay for 2D will be the teleporter and a jump, levels being inspired by Celeste because that has been a lot of the inspo for the game. After 2D is 3D, gameplay will have a teleporter, jump, and dash. This part will also be third person, and, by coincidence, a lot like Celeste 64 (I found the game after planning this part) The 4D section will be difficult, and I plan it to have time-travel similar to Titanfall 2, jumping between the present and future/past. This is most of what I have now and planned. If anyone reading this has suggestions I’m all ears (especially for how to make the art for 1D good). I wonder how long this will look on the devlog page…"}]...
|
Title: Multi-Dimensional Platformer by @dakspieth Title: Multi-Dimensional Platformer by @dakspieth | Stardance
Devlogs:
This is the first devlog for my game, I’m bad with names so it doesn’t have one yet but the gist is in the description “Platformer (obv) where you start in 1d and progress through 2d and 3d up to 4d, with time travel.” I’m not really sure how much work constitutes a devlog, which is why I have so many hours and quite a bit of progress already. Overview: A scientist made a time machine that is supposed to bring them to the 4th dimension (4th dimension being time) and let them time travel, but the machine malfunctioned, and instead of increasing their dimensions, it removed them. The scientist is now stuck in 1 dimension, needing to find and fix the device to complete their goal. Progress: I’m about half way done with the design of the first section, 1D, but I have yet to start doing things like art, animations, tutorials, etc. I also haven’t figured out how to make a game in 1D look good at all, which is why the game looks so rough atm. The video shows what the game looks like right now (video shows like 1/3 of the level), and, like I said, I don’t know how to make it look good which is why it is just a bunch of lines. The game is broken up into screens like Celeste, and on each screen is some puzzle. The player gains a teleport gun which shoots a projectile that teleports you to what it hits, and you use that the get through the different puzzles. Future: I know this game is very ambitious, but I also have the whole summer to ship it, which is why I’m going for it. After the 1D section you get some repair part of the time travel device which brings you to 2D. The gameplay for 2D will be the teleporter and a jump, levels being inspired by Celeste because that has been a lot of the inspo for the game. After 2D is 3D, gameplay will have a teleporter, jump, and dash. This part will also be third person, and, by coincidence, a lot like Celeste 64 (I found the game after planning this part) The 4D section will be difficult, and I plan it to have time-travel similar to Titanfall 2, jumping between the present and future/past. This is most of what I have now and planned. If anyone reading this has suggestions I’m all ears (especially for how to make the art for 1D good). I wonder how long this will look on the devlog page…...
|
1793148801.2297063
|
1793753601.2297063
|
|
6829
|
PitPass by @huertajoseph922 | Stardance
|
huertajoseph922
|
0
|
0.25
|
0
|
[]
|
[{"post_id": 1928, "ts": "2026 [{"post_id": 1928, "ts": "2026-06-04T05:08:11Z", "hours": 0.2508, "text": "ESP-32 Attendance logger with RFID Cards/Tags for my school’s FRC Robotics team: Project 212 #7137 Testing period right now consists of putting together the components and trying to get it to work on an Arduino UNO R4 until my ESP32 arrives… Goal: Have a well-made attendance logger in a 3d printed & cadded box to use during the robotics preseason & season. Features I plan to add: Online tracking via Google Sheets, or a Website Bluetooth app? Write data to an SD card for local storage Remember data after a power cycle Multiple Profiles for people Connect to a nice OLED or LCD Display for the information"}]...
|
Title: PitPass by @huertajoseph922 | Stardance
De Title: PitPass by @huertajoseph922 | Stardance
Devlogs:
ESP-32 Attendance logger with RFID Cards/Tags for my school’s FRC Robotics team: Project 212 #7137 Testing period right now consists of putting together the components and trying to get it to work on an Arduino UNO R4 until my ESP32 arrives… Goal: Have a well-made attendance logger in a 3d printed & cadded box to use during the robotics preseason & season. Features I plan to add: Online tracking via Google Sheets, or a Website Bluetooth app? Write data to an SD card for local storage Remember data after a power cycle Multiple Profiles for people Connect to a nice OLED or LCD Display for the information...
|
1793224306.8536928
|
1793829106.8536928
|
|
6830
|
AI ascii art maker by @spawnedshoyo | Stardance
|
spawnedshoyo
|
1
|
17.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-06T22:42:10Z", "hours": 17.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built this ASCII Art Maker as a fun project to explore image processing and ASCII conversion. The tool lets you either generate images from text prompts using AI or upload your own images, then converts them to ASCII art. Feel free to suggest ideas for my next project! I’m always looking for new challenges and interesting things to build.", "repo": "https://github.com/RandomAiPerson/AsciiGenerator", "demo": "https://randomaiperson.github.io/AsciiGenerator/"}]...
|
[{"post_id": 23786, "ts": "202 [{"post_id": 23786, "ts": "2026-07-06T22:39:56Z", "hours": 16.6358, "text": "I built this ASCII Art Maker as a fun project to explore image processing and ASCII conversion. The tool lets you either generate images from text prompts using AI or upload your own images, then converts them to ASCII art. Feel free to suggest ideas for my next project! I’m always looking for new challenges and interesting things to build."}]...
|
Title: AI ascii art maker by @spawnedshoyo | Stard Title: AI ascii art maker by @spawnedshoyo | Stardance
Devlogs:
I built this ASCII Art Maker as a fun project to explore image processing and ASCII conversion. The tool lets you either generate images from text prompts using AI or upload your own images, then converts them to ASCII art. Feel free to suggest ideas for my next project! I’m always looking for new challenges and interesting things to build.
Ships:
I built this ASCII Art Maker as a fun project to explore image processing and ASCII conversion. The tool lets you either generate images from text prompts using AI or upload your own images, then converts them to ASCII art. Feel free to suggest ideas for my next project! I’m always looking for new challenges and interesting things to build....
|
1793249438.5757017
|
1793335838.5757017
|
|
6831
|
A cute creature made from stuff on trees by @L1ZZY A cute creature made from stuff on trees by @L1ZZY0RAL3NA | Stardance...
|
L1ZZY0RAL3NA
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: A cute creature made from stuff on trees by Title: A cute creature made from stuff on trees by @L1ZZY0RAL3NA | Stardance...
|
1792803000.5558841
|
1793407800.5558841
|
|
6832
|
My first slack bot! by @hamzayasir9211 | Stardance
|
hamzayasir9211
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-06T22:15:45Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made my first ever slack bot. tbh every step seemed like a challenge but i made it to the end anyways it was fun making a bot of my own", "repo": "https://github.com/MuhammadHamzaYasir/api-bot", "demo": "https://drive.google.com/file/d/12CGFmHZzjKo2FQf19uWJ3U9rMLQyL159/view?usp=sharing"}]...
|
[{"post_id": 23260, "ts": "202 [{"post_id": 23260, "ts": "2026-07-06T03:19:48Z", "hours": 1.5958, "text": "just made my first ever bot, a slack bot cant wait to deploy it on nest my approval is pending.."}]...
|
Title: My first slack bot! by @hamzayasir9211 | St Title: My first slack bot! by @hamzayasir9211 | Stardance
Devlogs:
just made my first ever bot, a slack bot cant wait to deploy it on nest my approval is pending..
Ships:
i made my first ever slack bot. tbh every step seemed like a challenge but i made it to the end anyways it was fun making a bot of my own...
|
1793310917.4688993
|
1793397317.4688993
|
|
6833
|
My first slack bot! by @thearyansaha12 | Stardance
|
thearyansaha12
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @thearyansaha12 | St Title: My first slack bot! by @thearyansaha12 | Stardance...
|
1792738296.3772652
|
1793343096.3772652
|
|
6834
|
My awesome macropad! by @Catherine | Stardance
|
Catherine
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Catherine | Starda Title: My awesome macropad! by @Catherine | Stardance...
|
1793181192.1241007
|
1793785992.1241007
|
|
6835
|
My first slack bot! by @shuchi_rathnakara_2012 | S My first slack bot! by @shuchi_rathnakara_2012 | Stardance...
|
shuchi_rathnakara_2012
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @shuchi_rathnakara_2 Title: My first slack bot! by @shuchi_rathnakara_2012 | Stardance...
|
1793256796.8859603
|
1793861596.8859603
|
|
6836
|
Bassoon Simulator by @dhruvra | Stardance
|
dhruvra
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Bassoon Simulator by @dhruvra | Stardance
|
1792731285.5097165
|
1793336085.5097165
|
|
6837
|
Untitled by @Moscow | Stardance
|
Moscow
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Moscow | Stardance
|
1793249550.121344
|
1793854350.121344
|
|
6838
|
AtomicEngineer by @WalSlavin | Stardance
|
WalSlavin
|
0
|
1.27
|
0
|
[]
|
[{"post_id": 2490, "ts": "2026 [{"post_id": 2490, "ts": "2026-06-05T00:38:29Z", "hours": 1.275, "text": "Movement and Y-Sort working, next is gonna be inventory and items"}]...
|
Title: AtomicEngineer by @WalSlavin | Stardance
D Title: AtomicEngineer by @WalSlavin | Stardance
Devlogs:
Movement and Y-Sort working, next is gonna be inventory and items...
|
1792691633.0214033
|
1793296433.0214033
|
|
6839
|
Swerve Drive by @joshua_r | Stardance
|
joshua_r
|
2
|
79.0
|
379
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-19T14:57:23Z", "hours": 1.0, "multiplier": 5.0, "payout": 5, "blessing": "neutral", "text": "3D printed coaxial swerve drive! This was heavily inspired by FRC swerves and it really fun to make. Designing and everything hardware related was honestly pretty easy, but wiring was a pain. Each brushless motor driver needed 3 pwm pins on the same hardware timer and on nucleos, some of the pins serve multiple uses, creating some problems for me. Also there were a lot of times that things that seemed like software issues were actually wiring issues, like when the adafruit motor shield stopped working because its i2c connection was tied to pins A4 and A5. Overall, this was the most technologically advanced project I have ever made, partly because I was using a new microcontroller (stm32 nucleo) but also because I had to understand the math involved in driving a swerve correctly. Not to mention I was also running 4 brushless motors and 4 separate PIDs. It was really fun to build and I would definitely do it again given the opportunity. Maybe even a differential swerve next time? RESHIP FOR NEW HARDWARE MUTLIPLIER: Public video link is the video of project button.", "repo": "https://github.com/Joshuar9202/Swerve-Drive-Arduino", "demo": ""}, {"ship_num": 2, "ts": "2026-07-06T16:35:33Z", "hours": 78.0, "multiplier": 5.0, "payout": 374, "blessing": "neutral", "text": "3D printed coaxial swerve drive! This was heavily inspired by FRC swerves and it really fun to make. Designing and everything hardware related was honestly pretty easy, but wiring was a pain. Each brushless motor driver needed 3 pwm pins on the same hardware timer and on nucleos, some of the pins serve multiple uses, creating some problems for me. Also there were a lot of times that things that seemed like software issues were actually wiring issues, like when the adafruit motor shield stopped working because its i2c connection was tied to pins A4 and A5. Overall, this was the most technologically advanced project I have ever made, partly because I was using a new microcontroller (stm32 nucleo) but also because I had to understand the math involved in driving a swerve correctly. Not to mention I was also running 4 brushless motors and 4 separate PIDs. It was really fun to build and I would definitely do it again given the opportunity. Maybe even a differential swerve next time?", "repo": "https://github.com/Joshuar9202/Swerve-Drive-Arduino", "demo": ""}]...
|
[{"post_id": 70649, "ts": "202 [{"post_id": 70649, "ts": "2026-09-19T14:53:46Z", "hours": 0.9042, "text": "Finally hardware projects are getting payout multipliers like software projects! Thus, I will be reshipping my project so that I can get multiplier. (Also opensauce was awesome sauce! Only real changes made to the project were encoder offsets and tuning things at opensauce because of reassembly at the venue. Also got into a rev reel!)"}, {"post_id": 22493, "ts": "2026-07-05T00:00:05Z", "hours": 11.3317, "text": "Done! 🎉 I finished making all the things for the github like the wiring diagram and demo video. Fixed all issues with field relative control, my original math was incorrect. Also one of the modules wasn’t rotating correctly but it turns out it was just the magnet came loose. Will be submitting to Outpost soon! Demo video link: https://www.youtube.com/watch?v=bPC4PA_9ZH0"}, {"post_id": 19694, "ts": "2026-07-01T02:39:11Z", "hours": 5.0708, "text": "First Movements Tested full motion for the first time woohoo! 🎉🎊 Things surprisingly worked alright, the kinematics for the rotation while strafing is still a bit off but translation by itself works great. Also the wheels have very little traction so I’ll have to increase that somehow. Additionally, field centric control on the joystick works really well, so up on the joystick means up in real life relative to the start heading and regardless of the rotation of the robot. Things Left to Do on Hardware Add traction to the wheels Things Left to Do on Software Fix swerve kinematics for rotation"}, {"post_id": 18892, "ts": "2026-06-30T02:50:31Z", "hours": 11.6183, "text": "Integration Pain I got all the subsystems working separately but the extremely fun part of integrating them all together was the first time I truly understood why engineers hate integration. There were a plethora of pin conflicts underlying the hardware since many of the pins on the nucleo serve multiple purposes. One example of this was the adafruit motor shield’s i2c bus interfering with the front left drive motor’s FOC math since PB8 and PB9 are connected to the sda and scl pins on the Arduino headers of the nucleo. As you can see from the extremely janky wiring in the photo, just connecting the shield so it gets power on the other side of headers and manually connecting the shield to a separate i2c bus using jumper wires, I was able to finally make all the subsystems work together. This was just one example of the many problems that arose, hence why there are almost 12 hours being logged in this post, but this project is finally on the last stretch. I did also make a lot of other progress like confirming the swerve kinematics work along with the flysky controller for inputs :) Things Left to Do on Hardware Cut off the sda and scl pins on the motor shield and solder a jumper wire to the new i2c bus Things Left to Do on Software Tune the pid for FR, BR, and BL turn motors Integrate offsets into the steering angle for the motors Integrate the MPU6050 readings for field oriented swerve control"}, {"post_id": 15434, "ts": "2026-06-25T02:36:01Z", "hours": 3.0789, "text": "Side Quest The adafruit motor shield v2 that I am using to control the n20 motors suddenly stopped working today. After a long struggle, I managed to trace it back to the A4 and A5 pins being attached to the nucelo alongside the dedicated SDA and SCL pins. Since SDA and SCL are tied to A4 and A5 on normal arduinos but seemingly not on nucelos, simply removing those pins fixed all issues. A very unsatisfying end to a 3 hour struggle :( I did mange to test out the front left module, and spent some time tuning the azimuth pid. Things Left to Do on Hardware Wire management Things Left to Do on Software Test the rest of the hardware (FR, BR, and BL modules, radio communication, and gyro). Program the rest of the swerveKinematics.cpp file Program mpu6050 gyro Program in controls from the inputs from the flysky controller"}, {"post_id": 14820, "ts": "2026-06-24T02:09:04Z", "hours": 3.2439, "text": "Finished Wiring As you can tell by this extremely beautiful cable management and totally not messy arrangement of wires, I should have probably made a pcb for this (Maybe I will later). Things Left to Do on Hardware Wire management Things Left to Do on Software Test all hardware individually to isolate any potential wiring issues Program the rest of the swerveKinematics.cpp file Program in controls from the inputs from the flysky controller"}, {"post_id": 14094, "ts": "2026-06-23T02:30:21Z", "hours": 6.4664, "text": "Swerve Drivebase update Cut out bellypan out of scrap board because creating large panels isn’t really suited for 3d printing and I can drill new holes into this material easily for mounting electronics. Mounted the majority of the electronics as well. On the software side I got radio communication working and created a new .h and .cpp file for implementing radio control into the main program. Things Left to Do on Hardware Attach radio receiver and battery Wire all components together Resolder the wires on one of the n20 motors (bad connection the first time lol). Things Left to Do on Software Program the rest of the swerveKinematics.cpp file Program in controls from the inputs from the flysky controller"}, {"post_id": 12296, "ts": "2026-06-20T02:02:20Z", "hours": 8.5414, "text": "Finished Drive Base Got all the modules built and attached. Some modules are a little bit stiff so if that hinders the motors I’ll need to change some clearances, but I think its minimal enough to where it won’t matter. Things Left to Do on Hardware Build and attach bellypan for electronics Mount electronics to bellypan Wire everything up Things Left to Do on Software Test radio communication from fs-ia6B receiver to nucleo Program commands in based on controller input Program swerve kinematics in using the custom angle control and drive control functions already created"}, {"post_id": 10917, "ts": "2026-06-17T21:51:43Z", "hours": 7.2928, "text": "Swerve azimuth control Got PID working for one module, though it probably still needs to be tuned. Also I need to figure out the logic for wrapping around since the encoder measures values from 0-1023 which I have mapped to 0 to 360, but after 360 it goes back to 0 which complicates the logic a bit. I also need to implement the logic for the swerve just switching the wheel rotation direction rather than rotate the entire module 180 degrees whenever it can. Realistically, the module should only ever rotate a max of 90 degrees from one input to the next"}, {"post_id": 8164, "ts": "2026-06-13T16:37:44Z", "hours": 8.9011, "text": "Tested all hardware for the swerve drive. The latest version of SimpleFOC (2.4.0) doesn’t work for some reason but the previous version (2.3.5) works perfectly fine. The as5600 encoders work great and track the rotation of the module nicely. I also made a few design changes to make assembly easier which includes changing the design of the encoder column support and the design of the standoffs."}, {"post_id": 5328, "ts": "2026-06-09T01:59:37Z", "hours": 3.0031, "text": "Swerve module v1 assembled! The gears mesh nicely and the entire system has a lot less friction than I thought it would :) Things needed to do in terms of design: Design support for the shaft that holds the central drive gear column since right now its cantilevered. Redesign standoffs because the current design breaks too easily Design encoder for brushless drive motor so FOC can be used"}, {"post_id": 4618, "ts": "2026-06-08T00:12:06Z", "hours": 3.3511, "text": "Finished soldering wires to the motors and header pins to the encoders. Got stm32 nucleo 64 f411re working with platformio ready for programming along with the motor shield to control everything!"}, {"post_id": 3587, "ts": "2026-06-06T16:15:48Z", "hours": 1.9147, "text": "finished building one module in real life!"}, {"post_id": 2479, "ts": "2026-06-05T00:05:00Z", "hours": 1.3253, "text": "Added drive column for drive gear train which is coaxial to the encoder column which has the magnet for the as5600 to track the module’s rotation. Done with the drive module for now, moving on to the motor mounts!"}, {"post_id": 2227, "ts": "2026-06-04T16:44:41Z", "hours": 2.6103, "text": "CAD for a single module done including gear relations. No motors yet"}]...
|
Title: Swerve Drive by @joshua_r | Stardance
Devl Title: Swerve Drive by @joshua_r | Stardance
Devlogs:
CAD for a single module done including gear relations. No motors yet
Added drive column for drive gear train which is coaxial to the encoder column which has the magnet for the as5600 to track the module’s rotation. Done with the drive module for now, moving on to the motor mounts!
finished building one module in real life!
Finished soldering wires to the motors and header pins to the encoders. Got stm32 nucleo 64 f411re working with platformio ready for programming along with the motor shield to control everything!
Swerve module v1 assembled! The gears mesh nicely and the entire system has a lot less friction than I thought it would :) Things needed to do in terms of design: Design support for the shaft that holds the central drive gear column since right now its cantilevered. Redesign standoffs because the current design breaks too easily Design encoder for brushless drive motor so FOC can be used
Tested all hardware for the swerve drive. The latest version of SimpleFOC (2.4.0) doesn’t work for some reason but the previous version (2.3.5) works perfectly fine. The as5600 encoders work great and track the rotation of the module nicely. I also made a few design changes to make assembly easier which includes changing the design of the encoder column support and the design of the standoffs.
Swerve azimuth control Got PID working for one module, though it probably still needs to be tuned. Also I need to figure out the logic for wrapping around since the encoder measures values from 0-1023 which I have mapped to 0 to 360, but after 360 it goes back to 0 which complicates the logic a bit. I also need to implement the logic for the swerve just switching the wheel rotation direction rather than rotate the entire module 180 degrees whenever it can. Realistically, the module should only ever rotate a max of 90 degrees from one input to the next
Finished Drive Base Got all the modules built and attached. Some modules are a little bit stiff so if that hinders the motors I’ll need to change some clearances, but I think its minimal enough to where it won’t matter. Things Left to Do on Hardware Build and attach bellypan for electronics Mount electronics to bellypan Wire everything up Things Left to Do on Software Test radio communication from fs-ia6B receiver to nucleo Program commands in based on controller input Program swerve kinematics in using the custom angle control and drive control functions already created
Swerve Drivebase update Cut out bellypan out of scrap board because creating large panels isn’t really suited for 3d printing and I can drill new holes into this material easily for mounting electronics. Mounted the majority of the electronics as well. On the software side I got radio communication working and created a new .h and .cpp file for implementing radio control into the main program. Things Left to Do on Hardware Attach radio receiver and battery Wire all components together Resolder the wires on one of the n20 motors (bad connection the first time lol). Things Left to Do on Software Program the rest of the swerveKinematics.cpp file Program in controls from the inputs from the flysky controller
Finished Wiring As you can tell by this extremely beautiful cable management and totally not messy arrangement of wires, I should have probably made a pcb for this (Maybe I will later). Things Left to Do on Hardware Wire management Things Left to Do on Software Test all hardware individually to isolate any potential wiring issues Program the rest of the swerveKinematics.cpp file Program in controls from the inputs from the flysky controller
Side Quest The adafruit motor shield v2 that I am using to control the n20 motors suddenly stopped working today. After a long struggle, I managed to trace it back to the A4 and A5 pins being attached to the nucelo alongside the dedicated SDA and SCL pins. Since SDA and SCL are tied to A4 and A5 on normal arduinos but seemingly not on nucelos, simply removing those pins fixed all issues. A very unsatisfying end to a 3 hour struggle :( I did mange to test out the front left module, and spent some time tuning the azimuth pid. Things Left to Do on Hardware Wire management Things Left to Do on Software Test the rest of the hardware (FR, BR, and BL modules, radio communication, and gyro). Program the rest of the swerveKinematics.cpp file Program mpu6050 gyro Program in controls from the inputs from the flysky controller
Integration Pain I got all the subsystems working separately but the extremely fun part of integrating them all together was the first time I truly understood why engineers hate integration. There were a plethora of pin conflicts underlying the hardware since many of the pins on the nucleo serve multiple purposes. One example of this was the adafruit motor shield’s i2c bus interfering with the front left drive motor’s FOC math since PB8 and PB9 are connected to the sda and scl pins on the Arduino headers of the nucleo. As you can see from the extremely janky wiring in the photo, just connecting the shield so it gets power on the other side of headers and manually connecting the shield to a separate i2c bus using jumper wires, I was able to finally make all the subsystems work together. This was just one example of the many problems that arose, hence why there are almost 12 hours being logged in this post, but this project is finally on the last stretch. I did also make a lot of other progress like confirming the swerve kinematics work along with the flysky controller for inputs :) Things Left to Do on Hardware Cut off the sda and scl pins on the motor shield and solder a jumper wire to the new i2c bus Things Left to Do on Software Tune the pid for FR, BR, and BL turn motors Integrate offsets into the steering angle for the motors Integrate the MPU6050 readings for field oriented swerve control
First Movements Tested full motion for the first time woohoo! 🎉🎊 Things surprisingly worked alright, the kinematics for the rotation while strafing is still a bit off but translation by itself works great. Also the wheels have very little traction so I’ll have to increase that somehow. Additionally, field centric control on the joystick works really well, so up on the joystick means up in real life relative to the start heading and regardless of the rotation of the robot. Things Left to Do on Hardware Add traction to the wheels Things Left to Do on Software Fix swerve kinematics for rotation
Done! 🎉 I finished making all the things for the github like the wiring diagram and demo video. Fixed all issues with field relative control, my original math was incorrect. Also one of the modules wasn’t rotating correctly but it turns out it was just the magnet came loose. Will be submitting to Outpost soon! Demo video link: https://www.youtube.com/watch?v=bPC4PA_9ZH0
Finally hardware projects are getting payout multipliers like software projects! Thus, I will be reshipping my project so that I can get multiplier. (Also opensauce was awesome sauce! Only real changes made to the project were encoder offsets and tuning things at opensauce because of reassembly at the venue. Also got into a rev reel!)
Ships:
3D printed coaxial swerve drive! This was heavily inspired by FRC swerves and it really fun to make. Designing and everything hardware related was honestly pretty easy, but wiring was a pain. Each brushless motor driver needed 3 pwm pins on the same hardware timer and on nucleos, some of the pins serve multiple uses, creating some problems for me. Also there were a lot of times that things that seemed like software issues were actually wiring issues, like when the adafruit motor shield stopped working because its i2c connection was tied to pins A4 and A5. Overall, this was the most technologically advanced project I have ever made, partly because I was using a new microcontroller (stm32 nucleo) but also because I had to understand the math involved in driving a swerve correctly. Not to mention I was also running 4 brushless motors and 4 separate PIDs. It was really fun to build and I would definitely do it again given the opportunity. Maybe even a differential swerve next time?
3D printed coaxial swerve drive! This was heavily inspired by FRC swerves and it really fun to make. Designing and everything hardware related was honestly pretty easy, but wiring was a pain. Each brushless motor driver needed 3 pwm pins on the same hardware timer and on nucleos, some of the pins serve multiple uses, creating some problems for me. Also there were a lot of times that things that seemed like software issues were actually wiring issues, like when the adafruit motor shield stopped working because its i2c connection was tied to pins A4 and A5. Overall, this was the most technologically advanced project I have ever made, partly because I was using a new microcontroller (stm32 nucleo) but also because I had to understand the math involved in driving a swerve correctly. Not to mention I was also running 4 brushless motors and 4 separate PIDs. It was really fun to build and I would definitely do it again given the opportunity. Maybe even a differential swerve next time? RESHIP FOR NEW HARDWARE MUTLIPLIER: Public video link is the video of project button....
|
1793296373.6233602
|
1793382773.6233602
|
|
6840
|
Easy Ecosystem by @domst13 | Stardance
|
domst13
|
1
|
23.0
|
272
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-14T00:16:36Z", "hours": 23.0, "multiplier": 12.02, "payout": 272, "blessing": "neutral", "text": "I created a simple Python Ecosystem that I am calling Easy Ecosystem. It features two types of creatures, as well as food and water for both. My biggest challenge throughout this project was making the algorithms work correctly, as this is my first fully complete Python project. I not only learned a lot, but I am super proud of what I created. To test my project, you have to download and extract a zip file. I wish I could have web hosted it, but I experienced issues when trying to bundle it and make it accessible on the web. I hope you can check out my project, and enjoy!!", "repo": "https://github.com/dominicstange13/Ecosystem/", "demo": "https://github.com/dominicstange13/Easy-Ecosystem/releases/tag/v1.0.0"}]...
|
[{"post_id": 8420, "ts": "2026 [{"post_id": 8420, "ts": "2026-06-14T00:10:16Z", "hours": 0.3708, "text": "-Final balancing and making sure no bugs slipped past me -Time to ship baby!!"}, {"post_id": 7898, "ts": "2026-06-13T05:44:50Z", "hours": 2.1303, "text": "-Finished ALL sprites and incorporated them into the code meaning that the project is DONE -All that’s left is to finish up the repository and link everything then it’s shipping time!!! -Ik 0 people have seen any of these devlogs but lets friggin go guys WE did this"}, {"post_id": 7313, "ts": "2026-06-12T05:55:59Z", "hours": 3.9992, "text": "-FINISHED CODING -Started work on sprite drawings and stuff -Done any day now"}, {"post_id": 6641, "ts": "2026-06-11T04:01:03Z", "hours": 2.2789, "text": "-Worked on carnivore AI and did some bug fixing -I expect to be finished with the coding very soon so I can move on to art"}, {"post_id": 6044, "ts": "2026-06-10T04:49:31Z", "hours": 2.6753, "text": "GUYS WE ARE ALMOST DONE WITH THE CODE!!! -Finished herbivore code for plants and water, as well as all water code -Started creating carnivore and got most of the way through making it as it was relatively bug-free (thank God)"}, {"post_id": 5394, "ts": "2026-06-09T04:34:33Z", "hours": 3.7811, "text": "-(hopefully) finished plant tracking algorithm as well as plant spawning -added water spawning but not thirst (yet) -I probably won’t upload anything tomorrow because I’m getting my wisdom teeth removed but hopefully I’ll be back by Wednesday -I’m estimating I can finish the programming part of this project in another day or two but depending on bugs that could change"}, {"post_id": 4702, "ts": "2026-06-08T03:59:29Z", "hours": 2.5825, "text": "I started making the logic that would allow the herbivore to seek out plants and remove plants once eaten, then proceeded to battle with bugs for the next couple of hours Hopefully more progress tomorrow, this project is probably going to take a while because it has proven more difficult that I first imagined, but I’m gonna stick with it and persevere"}, {"post_id": 4384, "ts": "2026-06-07T18:18:08Z", "hours": 2.5878, "text": "Not much, worked on plant spawning and the herbivore calculations to find food"}, {"post_id": 2800, "ts": "2026-06-05T16:47:50Z", "hours": 1.5144, "text": "Added hunger display and made the herbivore move to grab plants"}, {"post_id": 1818, "ts": "2026-06-04T01:19:17Z", "hours": 0.7475, "text": "I created a food rect and animal rect and started experimenting with movement"}]...
|
Title: Easy Ecosystem by @domst13 | Stardance
Dev Title: Easy Ecosystem by @domst13 | Stardance
Devlogs:
I created a food rect and animal rect and started experimenting with movement
Added hunger display and made the herbivore move to grab plants
Not much, worked on plant spawning and the herbivore calculations to find food
I started making the logic that would allow the herbivore to seek out plants and remove plants once eaten, then proceeded to battle with bugs for the next couple of hours Hopefully more progress tomorrow, this project is probably going to take a while because it has proven more difficult that I first imagined, but I’m gonna stick with it and persevere
-(hopefully) finished plant tracking algorithm as well as plant spawning -added water spawning but not thirst (yet) -I probably won’t upload anything tomorrow because I’m getting my wisdom teeth removed but hopefully I’ll be back by Wednesday -I’m estimating I can finish the programming part of this project in another day or two but depending on bugs that could change
GUYS WE ARE ALMOST DONE WITH THE CODE!!! -Finished herbivore code for plants and water, as well as all water code -Started creating carnivore and got most of the way through making it as it was relatively bug-free (thank God)
-Worked on carnivore AI and did some bug fixing -I expect to be finished with the coding very soon so I can move on to art
-FINISHED CODING -Started work on sprite drawings and stuff -Done any day now
-Finished ALL sprites and incorporated them into the code meaning that the project is DONE -All that’s left is to finish up the repository and link everything then it’s shipping time!!! -Ik 0 people have seen any of these devlogs but lets friggin go guys WE did this
-Final balancing and making sure no bugs slipped past me -Time to ship baby!!
Ships:
I created a simple Python Ecosystem that I am calling Easy Ecosystem. It features two types of creatures, as well as food and water for both. My biggest challenge throughout this project was making the algorithms work correctly, as this is my first fully complete Python project. I not only learned a lot, but I am super proud of what I created. To test my project, you have to download and extract a zip file. I wish I could have web hosted it, but I experienced issues when trying to bundle it and make it accessible on the web. I hope you can check out my project, and enjoy!!...
|
1793299923.917301
|
1793386323.917301
|
|
6841
|
Snake! by @zahran | Stardance
|
zahran
|
1
|
5.0
|
79
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-30T20:35:29Z", "hours": 5.0, "multiplier": 13.26, "payout": 79, "blessing": "neutral", "text": "I started learning Java at the beginning of June, and to test my skills I recreated Snake in Java. You can control the snake using WASD/arrow keys, and reset the game using R. It features modifiers that let you adjust the snake’s speed and board size, and you can enable other modifiers as well. During development, I faced a lot of minor challenges caused by me writing something incorrectly and then battling with the bug for 5-10 minutes or so. Since it’s my first project made using Java, I tried to do most things on my own but I did reference a video if I got too stuck on one thing. However, I’m super proud of achieving this, for two main reasons: It’s my first project made in Java, and it’s actually usable and fun to play. It’s a functional game that people can play. This is especially important because I’m planning to make a platformer in C++ soon, so this was a nice warmup for game development. Anyway, I hope you enjoy my Snake game! :)", "repo": "https://github.com/HughMann635/SnakeGame", "demo": "https://github.com/HughMann635/SnakeGame/releases/tag/Initializing"}]...
|
[{"post_id": 19396, "ts": "202 [{"post_id": 19396, "ts": "2026-06-30T18:21:18Z", "hours": 0.4228, "text": "I just fixed two bugs/issues: Made it so you can no longer click a button while the game is running Fixed a bug where if you mashed two inputs in the same frame, your snake could crash (e.g. moving down and mashing the right and up inputs). I fixed this by adding a check to make sure you can only switch directions once per frame. How I did it: I made a boolean called hasMoved, set it to false, and made it check for if hasMoved was false. It also sets hasMoved to true after you change direction and sets it back to false at the end of the frame."}, {"post_id": 19338, "ts": "2026-06-30T16:53:18Z", "hours": 2.1356, "text": "It’s been a hot minute since I posted a devlog, but I think I’ve more or less finished the game. Here’s what I’ve added: Interactive buttons that let you toggle/change the snake’s speed, size of the board, and different modifiers such as disabled collisions and mines that spawn randomly on the map Fixed a bunch of pre-existing bugs (like with score tracking) and new bugs (working out the mines was so annoying holy) yeah that’s pretty much it I think. Next steps: I’ll look into making it resizable/of different dimensions. Honestly, I might not do this one because a lot of my positions/coordinates were hard coded so it might be a pain to rework, but I’ll think about it. I’ll fix any remaining bugs that I can catch. I know there’s one that crashes the snake if you try to mash two directions together. And last but not least, I’m gonna start preparing to ship!"}, {"post_id": 17227, "ts": "2026-06-27T22:53:23Z", "hours": 0.7336, "text": "Ok so I went and fixed all the bugs, there were a LOT of bugs. here’s a couple: Snake movement and apple generation were happening incorrectly; I use a system where different variables like appleX, appleY, and an array for x and y values of each snake segment are stored as values between 1 and the length of the board (boardDim). They’re then multiplied by the dimension of each cell(cellDim). I initially forgot to multiply by cellDim so the snake was moving at a 1 pixel/second speed and the apple was confined to the top left corner. The borders of the cells were not being generated I didn’t initialize the arrays that contain the positions for each of the snake’s segments, causing the game to not run at all initially Up and down controls were reversed; borders did not work If you mash 2 directions, you can crash: e.g. if you’re going up, then mash left and down, the program interprets your down input as the latest one and essentially pushes you into yourself There are probably some more I haven’t explored yet, but for now I’m gonna work on the main menu."}, {"post_id": 17195, "ts": "2026-06-27T22:05:51Z", "hours": 1.1186, "text": "This time I completed pretty much all the basic gameplay mechanics and the game should technically work once I fix up any bugs. However, there are still bugs: quite a few of them, actually, since I kinda just brute forced my way through this stage of development with code that I thought should work. Anyway, once I get any bugs that stop me from running the game sorted out, I’ll refine the bugs that are impacting gameplay (there are def gonna be a couple of bugs there too). Then I’ll probably get started on designing a main menu."}, {"post_id": 16553, "ts": "2026-06-26T22:31:46Z", "hours": 0.5861, "text": "I started learning Java at the beginning of June, and to test my skills I’ making a guided project in Java. I decided to recreate Snake, using the video attached in the README file to help guide me. I’ll try to use it as minimally as possible, but if I get stuck I’ll watch the video to learn where to go next. So far I’ve just set up files and classes/functions as mentioned in the video, and I also set up a couple of variables and some code for a few functions on my own. Next time I’ll work on gameplay aspects, then I’ll move on to coding a death screen completely on my own."}]...
|
Title: Snake! by @zahran | Stardance
Devlogs:
I s Title: Snake! by @zahran | Stardance
Devlogs:
I started learning Java at the beginning of June, and to test my skills I’ making a guided project in Java. I decided to recreate Snake, using the video attached in the README file to help guide me. I’ll try to use it as minimally as possible, but if I get stuck I’ll watch the video to learn where to go next. So far I’ve just set up files and classes/functions as mentioned in the video, and I also set up a couple of variables and some code for a few functions on my own. Next time I’ll work on gameplay aspects, then I’ll move on to coding a death screen completely on my own.
This time I completed pretty much all the basic gameplay mechanics and the game should technically work once I fix up any bugs. However, there are still bugs: quite a few of them, actually, since I kinda just brute forced my way through this stage of development with code that I thought should work. Anyway, once I get any bugs that stop me from running the game sorted out, I’ll refine the bugs that are impacting gameplay (there are def gonna be a couple of bugs there too). Then I’ll probably get started on designing a main menu.
Ok so I went and fixed all the bugs, there were a LOT of bugs. here’s a couple: Snake movement and apple generation were happening incorrectly; I use a system where different variables like appleX, appleY, and an array for x and y values of each snake segment are stored as values between 1 and the length of the board (boardDim). They’re then multiplied by the dimension of each cell(cellDim). I initially forgot to multiply by cellDim so the snake was moving at a 1 pixel/second speed and the apple was confined to the top left corner. The borders of the cells were not being generated I didn’t initialize the arrays that contain the positions for each of the snake’s segments, causing the game to not run at all initially Up and down controls were reversed; borders did not work If you mash 2 directions, you can crash: e.g. if you’re going up, then mash left and down, the program interprets your down input as the latest one and essentially pushes you into yourself There are probably some more I haven’t explored yet, but for now I’m gonna work on the main menu.
It’s been a hot minute since I posted a devlog, but I think I’ve more or less finished the game. Here’s what I’ve added: Interactive buttons that let you toggle/change the snake’s speed, size of the board, and different modifiers such as disabled collisions and mines that spawn randomly on the map Fixed a bunch of pre-existing bugs (like with score tracking) and new bugs (working out the mines was so annoying holy) yeah that’s pretty much it I think. Next steps: I’ll look into making it resizable/of different dimensions. Honestly, I might not do this one because a lot of my positions/coordinates were hard coded so it might be a pain to rework, but I’ll think about it. I’ll fix any remaining bugs that I can catch. I know there’s one that crashes the snake if you try to mash two directions together. And last but not least, I’m gonna start preparing to ship!
I just fixed two bugs/issues: Made it so you can no longer click a button while the game is running Fixed a bug where if you mashed two inputs in the same frame, your snake could crash (e.g. moving down and mashing the right and up inputs). I fixed this by adding a check to make sure you can only switch directions once per frame. How I did it: I made a boolean called hasMoved, set it to false, and made it check for if hasMoved was false. It also sets hasMoved to true after you change direction and sets it back to false at the end of the frame.
Ships:
I started learning Java at the beginning of June, and to test my skills I recreated Snake in Java. You can control the snake using WASD/arrow keys, and reset the game using R. It features modifiers that let you adjust the snake’s speed and board size, and you can enable other modifiers as well. During development, I faced a lot of minor challenges caused by me writing something incorrectly and then battling with the bug for 5-10 minutes or so. Since it’s my first project made using Java, I tried to do most things on my own but I did reference a video if I got too stuck on one thing. However, I’m super proud of achieving this, for two main reasons: It’s my first project made in Java, and it’s actually usable and fun to play. It’s a functional game that people can play. This is especially important because I’m planning to make a platformer in C++ soon, so this was a nice warmup for game development. Anyway, I hope you enjoy my Snake game! :)...
|
1793278186.0359042
|
1793364586.0359042
|
|
6842
|
My first slack bot! by @Giulia | Stardance
|
Giulia
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Giulia | Stardance
|
1792723913.242666
|
1793328713.242666
|
|
6843
|
uhh by @Tsun | Stardance
|
Tsun
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: uhh by @Tsun | Stardance
|
1793177275.680358
|
1793782075.680358
|
|
6844
|
Virtual Console for Number Stuff by @C--Ayam | Sta Virtual Console for Number Stuff by @C--Ayam | Stardance...
|
C--Ayam
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Virtual Console for Number Stuff by @C--Aya Title: Virtual Console for Number Stuff by @C--Ayam | Stardance...
|
1793210115.2404823
|
1793814915.2404823
|
|
6845
|
My first slack bot! by @yeshwanth_purusothaman | S My first slack bot! by @yeshwanth_purusothaman | Stardance...
|
yeshwanth_purusothaman
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @yeshwanth_purusotha Title: My first slack bot! by @yeshwanth_purusothaman | Stardance...
|
1793289170.0568576
|
1793893970.0568576
|
|
6846
|
My awesome macropad! by @Vedant_Daga | Stardance
|
Vedant_Daga
|
0
|
3.0
|
0
|
[]
|
[{"post_id": 5615, "ts": "2026 [{"post_id": 5615, "ts": "2026-06-09T14:08:37Z", "hours": 3.0, "text": "finally understanding what a schematic actually is spent the last few hours in KiCad building my macropad 9 Switches Rotary Encoder (for volume) RGB Backlights on each key OLED Display Seeed XIAO RP2040 Finished the schematic and started placing the components on the PCB (takes wayyyy to long to align everything properly) The hardest part at least till now was realizing MX switch footprints have Edge.Cuts built INTO THEM….AND IT KEPT ON THROWING DRC Errors. next up: routing all the traces together (going to take wayyy to long)"}, {"post_id": 12122, "ts": "2026-06-19T20:09:38Z", "hours": 0.0, "text": "finished adding all the traces and started on the case design wayyyy to many traces for all the components and it looks so bad, but it works, also the DRC was being a pain because it kept flagging the switches as an error because of the footprint, but it looks fine so i think thats okay."}]...
|
Title: My awesome macropad! by @Vedant_Daga | Star Title: My awesome macropad! by @Vedant_Daga | Stardance
Devlogs:
finished adding all the traces and started on the case design wayyyy to many traces for all the components and it looks so bad, but it works, also the DRC was being a pain because it kept flagging the switches as an error because of the footprint, but it looks fine so i think thats okay.
finally understanding what a schematic actually is spent the last few hours in KiCad building my macropad 9 Switches Rotary Encoder (for volume) RGB Backlights on each key OLED Display Seeed XIAO RP2040 Finished the schematic and started placing the components on the PCB (takes wayyyy to long to align everything properly) The hardest part at least till now was realizing MX switch footprints have Edge.Cuts built INTO THEM….AND IT KEPT ON THROWING DRC Errors. next up: routing all the traces together (going to take wayyy to long)...
|
1792943613.383802
|
1793807613.383802
|
|
6847
|
Randrogue by @LukeyDev | Stardance
|
LukeyDev
|
0
|
5.1
|
0
|
[]
|
[{"post_id": 2625, "ts": "2026 [{"post_id": 2625, "ts": "2026-06-05T07:58:29Z", "hours": 3.5333, "text": "Made procedural tile terrain, and a player controller with a nifty jet particle effect :]"}, {"post_id": 1964, "ts": "2026-06-04T06:44:27Z", "hours": 0.8333, "text": "Procedural behaviour for enemies in my roguelike!"}, {"post_id": 1850, "ts": "2026-06-04T02:00:48Z", "hours": 0.7333, "text": "Basic procedural texture generator (mirrored on the X axis) similar to something I’ve seen online before. Gonna use a more advanced version of it to generate enemies/tiles in a roguelike game."}]...
|
Title: Randrogue by @LukeyDev | Stardance
Devlogs Title: Randrogue by @LukeyDev | Stardance
Devlogs:
Basic procedural texture generator (mirrored on the X axis) similar to something I’ve seen online before. Gonna use a more advanced version of it to generate enemies/tiles in a roguelike game.
Procedural behaviour for enemies in my roguelike!
Made procedural tile terrain, and a player controller with a nifty jet particle effect :]...
|
1793321339.080665
|
1793926139.080665
|
|
6848
|
Bioreactor by @anahadkhosa | Stardance
|
anahadkhosa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Bioreactor by @anahadkhosa | Stardance
|
1792702308.4516547
|
1793307108.4516547
|
|
6849
|
My first slack bot! by @HikingGuy34 | Stardance
|
HikingGuy34
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @HikingGuy34 | Stard Title: My first slack bot! by @HikingGuy34 | Stardance...
|
1793245805.6648293
|
1793850605.6648293
|
|
6850
|
High Speed FPV Drone by @peterprok777 | Stardance
|
peterprok777
|
0
|
2.5
|
0
|
[]
|
[{"post_id": 7273, "ts": "2026 [{"post_id": 7273, "ts": "2026-06-12T04:00:38Z", "hours": 0.5228, "text": "High speed drone log 2: I added a camera hole (no camera selected yet) and cooling exhaust holes in the rear side. Since the nose of the drone will be experiencing higher pressure due to the speed and the shape of the airfoil, the tail will have lower pressure. And as I learned yesterday (I knew before just didn’t know it applies here as well!) the air will naturally want to go out of the holes in the rear because of lower pressure! This effect will give me natural cooling for the internal components."}, {"post_id": 5269, "ts": "2026-06-08T23:53:01Z", "hours": 1.9758, "text": "Made a first rough draft for my high speed drone 355mm in length, 2207 motors, 5 inch props. Will be detailing in the next couple days. Also will be researching what hardware and software to install into this thing."}]...
|
Title: High Speed FPV Drone by @peterprok777 | Sta Title: High Speed FPV Drone by @peterprok777 | Stardance
Devlogs:
Made a first rough draft for my high speed drone 355mm in length, 2207 motors, 5 inch props. Will be detailing in the next couple days. Also will be researching what hardware and software to install into this thing.
High speed drone log 2: I added a camera hole (no camera selected yet) and cooling exhaust holes in the rear side. Since the nose of the drone will be experiencing higher pressure due to the speed and the shape of the airfoil, the tail will have lower pressure. And as I learned yesterday (I knew before just didn’t know it applies here as well!) the air will naturally want to go out of the holes in the rear because of lower pressure! This effect will give me natural cooling for the internal components....
|
1793256525.3069537
|
1793861325.3069537
|