|
7378
|
Stardance by @parth | Stardance
|
parth
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Stardance by @parth | Stardance
|
1793400596.55075
|
1794005396.55075
|
|
7379
|
My first slack bot! by @ciara | Stardance
|
ciara
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @ciara | Stardance
|
1793188078.8622193
|
1793792878.8622193
|
|
7380
|
My first slack bot! by @yashCh | Stardance
|
yashCh
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @yashCh | Stardance
|
1793365001.269087
|
1793969801.269087
|
|
7381
|
My first slack bot! by @namitjohne | Stardance
|
namitjohne
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @namitjohne | Starda Title: My first slack bot! by @namitjohne | Stardance...
|
1793490453.5940316
|
1794095253.5940316
|
|
7382
|
My first slack bot! by @MemZNTV | Stardance
|
MemZNTV
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @MemZNTV | Stardance
|
1793487273.9543545
|
1794092073.9543545
|
|
7383
|
Untitled by @f3l1xn0tacat | Stardance
|
f3l1xn0tacat
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @f3l1xn0tacat | Stardance
|
1793505119.097291
|
1794109919.097291
|
|
7384
|
My awesome macropad! by @CommanderGodzilla | Stard My awesome macropad! by @CommanderGodzilla | Stardance...
|
CommanderGodzilla
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @CommanderGodzilla Title: My awesome macropad! by @CommanderGodzilla | Stardance...
|
1793490629.745548
|
1794095429.745548
|
|
7385
|
My awesome macropad! by @felipepalmeida | Stardanc My awesome macropad! by @felipepalmeida | Stardance...
|
felipepalmeida
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @felipepalmeida | S Title: My awesome macropad! by @felipepalmeida | Stardance...
|
1793148882.9147198
|
1793753682.9147198
|
|
7386
|
Cracked_trial.jar by @MemZNTV | Stardance
|
MemZNTV
|
0
|
1.53
|
0
|
[]
|
[{"post_id": 4447, "ts": "2026 [{"post_id": 4447, "ts": "2026-06-07T19:29:03Z", "hours": 1.5314, "text": "Major hotfix has been made, progress updates are in my discord first https://discord.gg/nycUpMgpW"}]...
|
Title: Cracked_trial.jar by @MemZNTV | Stardance
Title: Cracked_trial.jar by @MemZNTV | Stardance
Devlogs:
Major hotfix has been made, progress updates are in my discord first https://discord.gg/nycUpMgpW...
|
1793516015.211033
|
1794120815.211033
|
|
7387
|
My awesome macropad! by @Waltie-Woo | Stardance
|
Waltie-Woo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Waltie-Woo | Stard Title: My awesome macropad! by @Waltie-Woo | Stardance...
|
1793551901.6118517
|
1794156701.6118517
|
|
7388
|
Beginner Friendly Emulator by @koen_ | Stardance
|
koen_
|
0
|
20.55
|
0
|
[]
|
[{"post_id": 43928, "ts": "202 [{"post_id": 43928, "ts": "2026-08-09T11:45:37Z", "hours": 0.4439, "text": "Small additions and fixes in instructions I added two instructions: cmp_r and nop. cmp_r is simply register-to-register comparation. nop is an instruction to explicitly do nothing. A sort of padding. I also added a third default interrupt: “Math Error”. It is raised when division by zero is attempted. Further changes I changed a couple of things in the interrupt handling. I made sure when an interrupt is manually raised, the PC is incremented beforehand, so it won’t loop, and I made sure that calls to undefined interrupts aren’t actually executed but instantly return. Next time? Next time I’m doing (hopefully) a final pre-1.0 cleanup. I’ll be catching some possible crashes to make sure they’re CPU faults instead of emulator crashes and I’ll add a way to switch from Big to Little Endian to make sure everything is reachable in memory. What’s below? The screenshot below is my handleInterrupt() function."}, {"post_id": 43282, "ts": "2026-08-08T13:40:51Z", "hours": 0.4867, "text": "Small internal improvements I changed the inner structure a bit, I finally made use of the “Init” class by putting the function in there that initializes the CPU, bus and screen. I also updated the “–help” menu and added a new flag. The new flag is “-msg”, it takes a string as input and simply prints it to the text buffer for fun. The screenshot below was produced using this flag. I also made a JPackage in app-image form, but I didn’t release it anywhere yet. Further changes I added new characters. The “ ' “, “ \" “, “;”, “:”, “?” and “!”"}, {"post_id": 42731, "ts": "2026-08-07T16:24:43Z", "hours": 0.6367, "text": "More arithmetics I have been kind of stupid, thinking only add and sub will be enough. So I added all arithmetic and bitwise operation instructions needed and even more to make things easier. I added (all except for ‘not’ also have a dynamic version through registers): Mul Div And Or Xor Not ShR (Shift Right) ShL (Shift Left) SAR (Shift Arithmetic Right) Further changes I also updated the docs. Of course about the instructions, but also about the registers. Last time I added stack functionality, so I added the SP in the docs and removed the part that said the stack wasn’t included. The screenshot below is simply the code for the new instructions in the CPU loop"}, {"post_id": 38263, "ts": "2026-07-31T15:54:01Z", "hours": 1.2386, "text": "Stack functionality I added the Stack Pointer register, along with PUSH, POP, call and ret instructions. The stack grows downwards with frames of a WORD (32-bit). The SP starts at the top of RAM, PUSH moves it down four cells, POP moves it up four cells. Documentation hasn’t been changed fully. Changes Further, I removed the –menu option as it was mostly useless and added the –docs option to print out sections of the docs in the terminal. The screenshot below showcases the output for -di"}, {"post_id": 35141, "ts": "2026-07-26T11:48:20Z", "hours": 0.7531, "text": "Memory Sizes Configuration I added a flag (-mm for manual-memory) so users can manually set sizes for all regions of memory. To help, it will then also output the locations of everything to the terminal. Changes I added the add_r and sub_r instructions for dynamic arithmetic operations."}, {"post_id": 24738, "ts": "2026-07-08T14:50:28Z", "hours": 0.4197, "text": "More letters and privileged fields Today also a small update, I am working towards the end! I added some more privileged fields. The System control, Display Mode and overall Video Memory. I also slightly changed the documentation to include the newest instruction. I might have written to the wrong file for that though (will fix that very soon). And mostly I added new characters, those being all lowercase letters and the period. (See screenshot below) Next time I will add new arithmetic instructions because now you can’t actually add one variable to another. And I will handle some more security stuff!"}, {"post_id": 21655, "ts": "2026-07-03T18:42:05Z", "hours": 0.8006, "text": "Security and the halt instruction Mostly unfinished work today. Firstly, I changed the halt instruction. It now halts the instructions until an interrupt is handled. If interrupts are disabled, the halted state will automatically be set to false after 10 million cycles (around 3.75 seconds) by the watchdog. I also added a priviliged mode, but I only actually made a few instructions priviliged and no registers and such yet. For this all I added instructions 241 and 30. 241 allows a user to switch security modes (only if the program is executing within ROM, so no user programs can do this). 30 allows you to change the interval of the timer interrupt. That’s it for today, I probably will be back tomorrow. As for the screenshot, that’s just the output when I was testing the watchdog system."}, {"post_id": 18588, "ts": "2026-06-29T19:38:31Z", "hours": 1.4561, "text": "Documentation I added a few flags (-e, -v, -h and -m. Nothing special) and started working on the official Documentation. Project info will soon be updated for the URL."}, {"post_id": 17847, "ts": "2026-06-28T19:49:48Z", "hours": 0.3617, "text": "Changed jump instructions I added dynamic variants of the cmp instruction and the entire set of jump instructions. Nothing has been tested yet as I was running short on time. Changes I made all jump instructions 32-bit"}, {"post_id": 16979, "ts": "2026-06-27T15:47:34Z", "hours": 0.5306, "text": "New interrupt handling instructions! A tiny addition today, I added three new instructions. One for manually raising interrupts, one for toggling interrupts and one for changing the IVT (Interrupt Vector Table). The latter allows you to change the addresses for existing interrupts and add new interrupts up to 255. (When an undefined interrupt is raised, the PC will be set to the start of RAM) Changes Nothing today What will I work on next? I will probably fix the jump instruction because some things bug me about it. The screenshot The screenshot below shows terminal output. Most of the output is debug messages, but one important thing is the line ‘Handling interrupt! Type 4’. Type 4 is a custom interrupt!"}, {"post_id": 16265, "ts": "2026-06-26T13:30:14Z", "hours": 1.5011, "text": "Interrupts I finally did it. Interrupts are now a thing. There are, as of now, three interrupts. Timer, Keyboard and one without purpose. Each interrupt is allocated 50 bytes of memory at the end of the program. The standard locations in the Vector Table are 1850, 1900 and 1950. An instruction with opcode 18 or 0x12 was added for a so called “State Return”. This instruction is mandatory at the end of an interrupt. It will set the PC back to the IRP (Interrupt Return Pointer) and and all the flags back to their saved state. The screenshot below is a program that utilizes the Timer interrupt to create a simple fade-in animation. Changes As for changes, not a lot happened. Small tweaks in the Timer and Keyboard handlers to make them raise interrupts and of course additions to the CPU loop. Main was also slightly changed to make sure everything closes correctly on a System Control 0x01 call. (Shutdown) What will I work on next? Frankly, I do not have anything concrete planned. I am thinking of adding a few instructions for interrupts (Specifically Disable, Enable and Raise. For Syscalls in a possible OS maybe?) and overall expanding upon them where I can."}, {"post_id": 15665, "ts": "2026-06-25T13:56:48Z", "hours": 1.1444, "text": "New IO registers I added new IO registers. Display mode, Random number, System control and Timer. The screenshot shows where all of these are found in memory. The timer takes up four bytes, the rest all one. The Display mode register is a read-write register that stores one byte to determine the display mode. 0 for text, 1 for video. The panel updates to this every CPU cycle internally. The random number register simply returns a random byte. It is read-only. The System control register is a write-only register that doesn’t actually save a value. If you write 1 to it, the system will shut down. If you write 2, the system will reboot. If you write any other value the system will continue operation. And finally the Timer register. The Timer is a read-only register that stores the uptime of the system as four bytes. It stores this is in milliseconds. Changes I changed the way the keyboard register stores the last key. Instead of a single byte, it is now a buffer. The status is 0 if the buffer is empty. The buffer has FIFO structure. What will I work on next? Next I want to make a system for interrupts. This way the operating system or any other program running on the emulator can catch certain events such as Timer updates (With programmable interval, preferably), Keystrokes and maybe even more in the future, we’ll see!"}, {"post_id": 15084, "ts": "2026-06-24T14:50:01Z", "hours": 1.09, "text": "Keyboard handling I created IO registers for the Keyboard, with one address for the status and one for the key. The keys being pressed are detected by swing. Using this system I created a very simple program to render the last key pressed in the first cell of the text buffer. Changes I changed the handling of the load_reg_mem instruction to only read the first byte if it would otherwise read out-of-bounds. I changed glyph renderer to support more characters I added a glyph for the comma Used programs The keyboard program: 0D 00 00 00 13 44 06 00 00 00 00 00 07 00 0D 01 00 00 13 45 0E 00 00 0B CD 01 05 00"}, {"post_id": 12496, "ts": "2026-06-20T12:29:00Z", "hours": 2.7925, "text": "Text buffer renderer I created a renderer for the Text buffer. I created a simple image format called BImg (BFE Image) and with that I made images of 5 * 8 for (currently only uppercase) letters. Currently all characters are true cyan (#00FFFF) In the machine code, text can only be inputted by writing to the buffer (addresses 3024 to 4932). There are 36 lines of 53 characters. There is one pixel of padding on the right and bottom side of the glyphs. The padding is also coloured (#000101). All letter images are saved as .bin files in the resources folder in the jar."}, {"post_id": 10182, "ts": "2026-06-16T19:56:20Z", "hours": 0.7242, "text": "I created a renderer for the framebuffer. It simply loops over the framebuffer and renders the corresponding pixel using Swing. This allows me to write programs in machine code to make patterns like the one posted below. I had to do some improvements before being able to do this however. I added a new instruction to load to a pointer stored in a register. The entire bytecode for the program used below is: 02 00 00 00 00 00 02 01 00 00 07 D0 03 00 03 11 01 7F 03 01 03 06 00 00 00 0B D0 08 0C"}, {"post_id": 8854, "ts": "2026-06-14T18:53:47Z", "hours": 0.9192, "text": "I added a system to handle file input and using that I verified if all instruction handlers worked. They did not. I fixed a lot of bugs in instruction handling. The one I thought was most obvious was that, when a conditional jump didn’t jump because the condition wasn’t met, the PC wasn’t changed. This resulted in the program looping infinitely."}, {"post_id": 8818, "ts": "2026-06-14T17:35:54Z", "hours": 1.8122, "text": "I finished at least a basic version of the CPU. It handles 17 different instructions. I will admit I spent a good 80% of the time logged fixing this one bug where the Program Counter (PC) kept jumping to 24 even when it shouldn’t even be able to get under 1000. It turned out I needed to use “->” in my switch instead of “:”. The CPU itself currently does not do much, it reads a bit, checks what opcode it is, calls the handler for it and passes the PC until the PC reaches another segment of memory. It should now be able to handle all instructions, I will test it some more and then start working on actually parsing instructions from a file so we can have file input instead of hardcoding programs."}, {"post_id": 5812, "ts": "2026-06-09T18:59:02Z", "hours": 0.5858, "text": "I started working on the “CPU” to parse the opcodes, I made most of the initial instruction set but then noticed a lot of mistakes. Firstly, there were no pointers at all, so you couldn’t actually access memory and registers. I added some new instructions for that but realized once again things need changing. The registers need to become 32-bit so I can use them to store pointers (since that is pretty much their primary use). I’m going to change the load_reg instruction to fetch the next four bytes instead of just one. I need to make a lot of other things 32-bit as well to match the address space. I did so for the load_mem instruction, but for example all of the jump instructions still need changing. I might write a helper function for big-endian (both ways). The most significant change today was the changed instruction set and the addition of the parser within the CPU. Of that there is a screenshot below."}, {"post_id": 5104, "ts": "2026-06-08T19:52:40Z", "hours": 1.5119, "text": "After pondering for a bit I completely revamped the memory layout. It’s more clear now and I segregated everything adding a Bus class for universal access. I updated most of the instruction handlers, but not everything is updated yet. In the meantime I started working on a simple CLI help menu, I added some info about the memory for example. As seen in the screenshot below."}, {"post_id": 3373, "ts": "2026-06-06T08:25:14Z", "hours": 0.7089, "text": "I added a basic instruction set and added handlers for all the instructions"}, {"post_id": 2285, "ts": "2026-06-04T18:00:10Z", "hours": 0.6294, "text": "I made an ‘init()’ function to initialize basic memory and registers and designed some of the memory layout."}]...
|
Title: Beginner Friendly Emulator by @koen_ | Star Title: Beginner Friendly Emulator by @koen_ | Stardance
Devlogs:
I made an ‘init()’ function to initialize basic memory and registers and designed some of the memory layout.
I added a basic instruction set and added handlers for all the instructions
After pondering for a bit I completely revamped the memory layout. It’s more clear now and I segregated everything adding a Bus class for universal access. I updated most of the instruction handlers, but not everything is updated yet. In the meantime I started working on a simple CLI help menu, I added some info about the memory for example. As seen in the screenshot below.
I started working on the “CPU” to parse the opcodes, I made most of the initial instruction set but then noticed a lot of mistakes. Firstly, there were no pointers at all, so you couldn’t actually access memory and registers. I added some new instructions for that but realized once again things need changing. The registers need to become 32-bit so I can use them to store pointers (since that is pretty much their primary use). I’m going to change the load_reg instruction to fetch the next four bytes instead of just one. I need to make a lot of other things 32-bit as well to match the address space. I did so for the load_mem instruction, but for example all of the jump instructions still need changing. I might write a helper function for big-endian (both ways). The most significant change today was the changed instruction set and the addition of the parser within the CPU. Of that there is a screenshot below.
I finished at least a basic version of the CPU. It handles 17 different instructions. I will admit I spent a good 80% of the time logged fixing this one bug where the Program Counter (PC) kept jumping to 24 even when it shouldn’t even be able to get under 1000. It turned out I needed to use “->” in my switch instead of “:”. The CPU itself currently does not do much, it reads a bit, checks what opcode it is, calls the handler for it and passes the PC until the PC reaches another segment of memory. It should now be able to handle all instructions, I will test it some more and then start working on actually parsing instructions from a file so we can have file input instead of hardcoding programs.
I added a system to handle file input and using that I verified if all instruction handlers worked. They did not. I fixed a lot of bugs in instruction handling. The one I thought was most obvious was that, when a conditional jump didn’t jump because the condition wasn’t met, the PC wasn’t changed. This resulted in the program looping infinitely.
I created a renderer for the framebuffer. It simply loops over the framebuffer and renders the corresponding pixel using Swing. This allows me to write programs in machine code to make patterns like the one posted below. I had to do some improvements before being able to do this however. I added a new instruction to load to a pointer stored in a register. The entire bytecode for the program used below is: 02 00 00 00 00 00 02 01 00 00 07 D0 03 00 03 11 01 7F 03 01 03 06 00 00 00 0B D0 08 0C
Text buffer renderer I created a renderer for the Text buffer. I created a simple image format called BImg (BFE Image) and with that I made images of 5 * 8 for (currently only uppercase) letters. Currently all characters are true cyan (#00FFFF) In the machine code, text can only be inputted by writing to the buffer (addresses 3024 to 4932). There are 36 lines of 53 characters. There is one pixel of padding on the right and bottom side of the glyphs. The padding is also coloured (#000101). All letter images are saved as .bin files in the resources folder in the jar.
Keyboard handling I created IO registers for the Keyboard, with one address for the status and one for the key. The keys being pressed are detected by swing. Using this system I created a very simple program to render the last key pressed in the first cell of the text buffer. Changes I changed the handling of the load_reg_mem instruction to only read the first byte if it would otherwise read out-of-bounds. I changed glyph renderer to support more characters I added a glyph for the comma Used programs The keyboard program: 0D 00 00 00 13 44 06 00 00 00 00 00 07 00 0D 01 00 00 13 45 0E 00 00 0B CD 01 05 00
New IO registers I added new IO registers. Display mode, Random number, System control and Timer. The screenshot shows where all of these are found in memory. The timer takes up four bytes, the rest all one. The Display mode register is a read-write register that stores one byte to determine the display mode. 0 for text, 1 for video. The panel updates to this every CPU cycle internally. The random number register simply returns a random byte. It is read-only. The System control register is a write-only register that doesn’t actually save a value. If you write 1 to it, the system will shut down. If you write 2, the system will reboot. If you write any other value the system will continue operation. And finally the Timer register. The Timer is a read-only register that stores the uptime of the system as four bytes. It stores this is in milliseconds. Changes I changed the way the keyboard register stores the last key. Instead of a single byte, it is now a buffer. The status is 0 if the buffer is empty. The buffer has FIFO structure. What will I work on next? Next I want to make a system for interrupts. This way the operating system or any other program running on the emulator can catch certain events such as Timer updates (With programmable interval, preferably), Keystrokes and maybe even more in the future, we’ll see!
Interrupts I finally did it. Interrupts are now a thing. There are, as of now, three interrupts. Timer, Keyboard and one without purpose. Each interrupt is allocated 50 bytes of memory at the end of the program. The standard locations in the Vector Table are 1850, 1900 and 1950. An instruction with opcode 18 or 0x12 was added for a so called “State Return”. This instruction is mandatory at the end of an interrupt. It will set the PC back to the IRP (Interrupt Return Pointer) and and all the flags back to their saved state. The screenshot below is a program that utilizes the Timer interrupt to create a simple fade-in animation. Changes As for changes, not a lot happened. Small tweaks in the Timer and Keyboard handlers to make them raise interrupts and of course additions to the CPU loop. Main was also slightly changed to make sure everything closes correctly on a System Control 0x01 call. (Shutdown) What will I work on next? Frankly, I do not have anything concrete planned. I am thinking of adding a few instructions for interrupts (Specifically Disable, Enable and Raise. For Syscalls in a possible OS maybe?) and overall expanding upon them where I can.
New interrupt handling instructions! A tiny addition today, I added three new instructions. One for manually raising interrupts, one for toggling interrupts and one for changing the IVT (Interrupt Vector Table). The latter allows you to change the addresses for existing interrupts and add new interrupts up to 255. (When an undefined interrupt is raised, the PC will be set to the start of RAM) Changes Nothing today What will I work on next? I will probably fix the jump instruction because some things bug me about it. The screenshot The screenshot below shows terminal output. Most of the output is debug messages, but one important thing is the line ‘Handling interrupt! Type 4’. Type 4 is a custom interrupt!
Changed jump instructions I added dynamic variants of the cmp instruction and the entire set of jump instructions. Nothing has been tested yet as I was running short on time. Changes I made all jump instructions 32-bit
Documentation I added a few flags (-e, -v, -h and -m. Nothing special) and started working on the official Documentation. Project info will soon be updated for the URL.
Security and the halt instruction Mostly unfinished work today. Firstly, I changed the halt instruction. It now halts the instructions until an interrupt is handled. If interrupts are disabled, the halted state will automatically be set to false after 10 million cycles (around 3.75 seconds) by the watchdog. I also added a priviliged mode, but I only actually made a few instructions priviliged and no registers and such yet. For this all I added instructions 241 and 30. 241 allows a user to switch security modes (only if the program is executing within ROM, so no user programs can do this). 30 allows you to change the interval of the timer interrupt. That’s it for today, I probably will be back tomorrow. As for the screenshot, that’s just the output when I was testing the watchdog system.
More letters and privileged fields Today also a small update, I am working towards the end! I added some more privileged fields. The System control, Display Mode and overall Video Memory. I also slightly changed the documentation to include the newest instruction. I might have written to the wrong file for that though (will fix that very soon). And mostly I added new characters, those being all lowercase letters and the period. (See screenshot below) Next time I will add new arithmetic instructions because now you can’t actually add one variable to another. And I will handle some more security stuff!
Memory Sizes Configuration I added a flag (-mm for manual-memory) so users can manually set sizes for all regions of memory. To help, it will then also output the locations of everything to the terminal. Changes I added the add_r and sub_r instructions for dynamic arithmetic operations.
Stack functionality I added the Stack Pointer register, along with PUSH, POP, call and ret instructions. The stack grows downwards with frames of a WORD (32-bit). The SP starts at the top of RAM, PUSH moves it down four cells, POP moves it up four cells. Documentation hasn’t been changed fully. Changes Further, I removed the –menu option as it was mostly useless and added the –docs option to print out sections of the docs in the terminal. The screenshot below showcases the output for -di
More arithmetics I have been kind of stupid, thinking only add and sub will be enough. So I added all arithmetic and bitwise operation instructions needed and even more to make things easier. I added (all except for ‘not’ also have a dynamic version through registers): Mul Div And Or Xor Not ShR (Shift Right) ShL (Shift Left) SAR (Shift Arithmetic Right) Further changes I also updated the docs. Of course about the instructions, but also about the registers. Last time I added stack functionality, so I added the SP in the docs and removed the part that said the stack wasn’t included. The screenshot below is simply the code for the new instructions in the CPU loop
Small internal improvements I changed the inner structure a bit, I finally made use of the “Init” class by putting the function in there that initializes the CPU, bus and screen. I also updated the “–help” menu and added a new flag. The new flag is “-msg”, it takes a string as input and simply prints it to the text buffer for fun. The screenshot below was produced using this flag. I also made a JPackage in app-image form, but I didn’t release it anywhere yet. Further changes I added new characters. The “ ' “, “ " “, “;”, “:”, “?” and “!”
Small additions and fixes in instructions I added two instructions: cmp_r and nop. cmp_r is simply register-to-register comparation. nop is an instruction to explicitly do nothing. A sort of padding. I also added a third default interrupt: “Math Error”. It is raised when division by zero is attempted. Further changes I changed a couple of things in the interrupt handling. I made sure when an interrupt is manually raised, the PC is incremented beforehand, so it won’t loop, and I made sure that calls to undefined interrupts aren’t actually executed but instantly return. Next time? Next time I’m doing (hopefully) a final pre-1.0 cleanup. I’ll be catching some possible crashes to make sure they’re CPU faults instead of emulator crashes and I’ll add a way to switch from Big to Little Endian to make sure everything is reachable in memory. What’s below? The screenshot below is my handleInterrupt() function....
|
1793472477.7700288
|
1794077277.7700288
|
|
7389
|
My first slack bot! by @nasif0 | Stardance
|
nasif0
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @nasif0 | Stardance
|
1793242581.050135
|
1793847381.050135
|
|
7390
|
AutoPress by @heitordecarvalhopessoa | Stardance
|
heitordecarvalhopessoa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: AutoPress by @heitordecarvalhopessoa | Star Title: AutoPress by @heitordecarvalhopessoa | Stardance...
|
1793397172.043829
|
1794001972.043829
|
|
7391
|
My awesome macropad! by @DESIGNER | Stardance
|
DESIGNER
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @DESIGNER | Stardan Title: My awesome macropad! by @DESIGNER | Stardance...
|
1793432979.3202455
|
1794037779.3202455
|
|
7392
|
My awesome macropad! by @Atina | Stardance
|
Atina
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Atina | Stardance
|
1793321388.4199212
|
1793926188.4199212
|
|
7393
|
Rotarium by @4lvaret | Stardance
|
4lvaret
|
0
|
9.1
|
0
|
[]
|
[{"post_id": 6260, "ts": "2026 [{"post_id": 6260, "ts": "2026-06-10T14:53:19Z", "hours": 0.3494, "text": "cleaned up a little stopped using cheap tricks in the installer (we use tricks in main.py now that work)"}, {"post_id": 6245, "ts": "2026-06-10T14:28:22Z", "hours": 0.4478, "text": "i worked some more added some detection for non-glibc systems in the installer, and cleaned up a little in the installer so i dont have duplicate functions / whatever"}, {"post_id": 3427, "ts": "2026-06-06T11:11:38Z", "hours": 0.4161, "text": "lost like 2 hours of progress due to stuff happening with hackatime and my system clock and whatever but its fineeeee anyways online repos exist now upgrading packages exist too more cleanup i dont have much more to say quote of the project: hackatime you silly goof"}, {"post_id": 3339, "ts": "2026-06-06T07:03:32Z", "hours": 2.7861, "text": "added some package metadata, cleaned up a little, yeah thats basically it"}, {"post_id": 2849, "ts": "2026-06-05T18:09:08Z", "hours": 0.3481, "text": "so i did some cryptography to check if the install script has been tampered with so you dont get mitmed because thats apparently important"}, {"post_id": 2768, "ts": "2026-06-05T15:44:46Z", "hours": 2.4842, "text": "added support for native packages (currently only have fastfetch), discontinued macos support, yeah thats about it i should probably host the packages on the repo to prevent being supply chained but thats a problem for future me"}, {"post_id": 2288, "ts": "2026-06-04T18:08:12Z", "hours": 2.2672, "text": "added some support for python installation, will add portable packages later"}]...
|
Title: Rotarium by @4lvaret | Stardance
Devlogs:
Title: Rotarium by @4lvaret | Stardance
Devlogs:
added some support for python installation, will add portable packages later
added support for native packages (currently only have fastfetch), discontinued macos support, yeah thats about it i should probably host the packages on the repo to prevent being supply chained but thats a problem for future me
so i did some cryptography to check if the install script has been tampered with so you dont get mitmed because thats apparently important
added some package metadata, cleaned up a little, yeah thats basically it
lost like 2 hours of progress due to stuff happening with hackatime and my system clock and whatever but its fineeeee anyways online repos exist now upgrading packages exist too more cleanup i dont have much more to say quote of the project: hackatime you silly goof
i worked some more added some detection for non-glibc systems in the installer, and cleaned up a little in the installer so i dont have duplicate functions / whatever
cleaned up a little stopped using cheap tricks in the installer (we use tricks in main.py now that work)...
|
1793163092.3873777
|
1793767892.3873777
|
|
7394
|
My awesome macropad! by @MemZNTV | Stardance
|
MemZNTV
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @MemZNTV | Stardanc Title: My awesome macropad! by @MemZNTV | Stardance...
|
1793202770.1850405
|
1793807570.1850405
|
|
7395
|
My awesome macropad! by @vanta-jack | Stardance
|
vanta-jack
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @vanta-jack | Stard Title: My awesome macropad! by @vanta-jack | Stardance...
|
1793350236.1121182
|
1793955036.1121182
|
|
7396
|
Ringbot by @Xaenic | Stardance
|
Xaenic
|
0
|
1.77
|
0
|
[]
|
[{"post_id": 3063, "ts": "2026 [{"post_id": 3063, "ts": "2026-06-05T23:10:26Z", "hours": 1.7714, "text": "I’ve got the basic stuff down so far. You can ping the bot to see if it’s up. You can give others permission to “ring” you for a certain amount of time. If you’ve been given permission and it hasn’t run out yet, you can use /ring and the bot will ping them just enough to let them know. (useful when i have someone in the dc coming over but i have no clue when they’ll be here)"}]...
|
Title: Ringbot by @Xaenic | Stardance
Devlogs:
I’ Title: Ringbot by @Xaenic | Stardance
Devlogs:
I’ve got the basic stuff down so far. You can ping the bot to see if it’s up. You can give others permission to “ring” you for a certain amount of time. If you’ve been given permission and it hasn’t run out yet, you can use /ring and the bot will ping them just enough to let them know. (useful when i have someone in the dc coming over but i have no clue when they’ll be here)...
|
1793559098.562555
|
1794163898.562555
|
|
7397
|
My awesome macropad! by @anggerbagass | Stardance
|
anggerbagass
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @anggerbagass | Sta Title: My awesome macropad! by @anggerbagass | Stardance...
|
1792932657.0941718
|
1793796657.0941718
|
|
7398
|
Untitled project by @rod520 | Stardance
|
rod520
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @rod520 | Stardance
|
1793389900.5472314
|
1793994700.5472314
|
|
7400
|
Untitled by @twnarx | Stardance
|
twnarx
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @twnarx | Stardance
|
1792939918.0179377
|
1793803918.0179377
|
|
7401
|
Untitled by @axyprism | Stardance
|
axyprism
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @axyprism | Stardance
|
1792792274.1061156
|
1793656274.1061156
|
|
7402
|
Untitled project by @jufei | Stardance
|
jufei
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @jufei | Stardance
|
1793174099.1041288
|
1793778899.1041288
|
|
7403
|
Untitled by @swarans | Stardance
|
swarans
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @swarans | Stardance
|
1793303256.9162478
|
1793908056.9162478
|
|
7404
|
ADOX Robotic Arm by @GeckoGears | Stardance
|
GeckoGears
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ADOX Robotic Arm by @GeckoGears | Stardance
|
1793310826.4356623
|
1793915626.4356623
|
|
7405
|
Zenith scheduler by @Daivik | Stardance
|
Daivik
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Zenith scheduler by @Daivik | Stardance
|
1793238601.346414
|
1793843401.346414
|
|
7406
|
Untitled by @heroiclamp3038 | Stardance
|
heroiclamp3038
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @heroiclamp3038 | Stardance
|
1793231719.0916657
|
1793836519.0916657
|
|
7407
|
My awesome macropad! by @Theo | Stardance
|
Theo
|
0
|
0.67
|
0
|
[]
|
[{"post_id": 4557, "ts": "2026 [{"post_id": 4557, "ts": "2026-06-07T22:02:46Z", "hours": 0.6694, "text": "⌨️ Hackpad ℹ️ What I did I tried my best to start working on this, but I got nearly nothing done. I made most of the schematic. I’m trying my best but this is my first PCB! 💬 Feedback Please give suggestions - I am a beginner at this and am open to feedback. (I just want to know if I did this right) 🔴 Lapse I am using Lapse for this project. Check it out here !"}]...
|
Title: My awesome macropad! by @Theo | Stardance
Title: My awesome macropad! by @Theo | Stardance
Devlogs:
⌨️ Hackpad ℹ️ What I did I tried my best to start working on this, but I got nearly nothing done. I made most of the schematic. I’m trying my best but this is my first PCB! 💬 Feedback Please give suggestions - I am a beginner at this and am open to feedback. (I just want to know if I did this right) 🔴 Lapse I am using Lapse for this project. Check it out here !...
|
1793166555.5782862
|
1793771355.5782862
|
|
7408
|
My first slack bot! by @Isla | Stardance
|
Isla
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Isla | Stardance
|
1793195283.5778933
|
1793800083.5778933
|
|
7409
|
Untitled by @Atina | Stardance
|
Atina
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Atina | Stardance
|
1793246085.447976
|
1793850885.447976
|
|
7410
|
SKITR by @Smartinez | Stardance
|
Smartinez
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: SKITR by @Smartinez | Stardance
|
1793415079.0754485
|
1794019879.0754485
|
|
7411
|
Retina fryer 5000 by @bass73 | Stardance
|
bass73
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Retina fryer 5000 by @bass73 | Stardance
|
1793476411.9578357
|
1794081211.9578357
|
|
7412
|
Untitled project by @Shangqi | Stardance
|
Shangqi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Shangqi | Stardance
|
1793533661.429482
|
1794138461.429482
|
|
7413
|
Game by @LilJay | Stardance
|
LilJay
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Game by @LilJay | Stardance
|
1793231427.2342381
|
1793836227.2342381
|
|
7414
|
My awesome macropad! by @christine | Stardance
|
christine
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @christine | Starda Title: My awesome macropad! by @christine | Stardance...
|
1793148826.0523796
|
1793753626.0523796
|
|
7415
|
My first slack bot! by @kruvin | Stardance
|
kruvin
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @kruvin | Stardance
|
1793335781.9372985
|
1793940581.9372985
|
|
7416
|
My first slack bot! by @Saranya | Stardance
|
Saranya
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Saranya | Stardance
|
1793526791.8940651
|
1794131591.8940651
|
|
7417
|
Untitled by @tecknet | Stardance
|
tecknet
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @tecknet | Stardance
|
1792918330.664027
|
1793782330.664027
|
|
7418
|
Python encryption test by @Dog_that_codes | Starda Python encryption test by @Dog_that_codes | Stardance...
|
Dog_that_codes
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Python encryption test by @Dog_that_codes | Title: Python encryption test by @Dog_that_codes | Stardance...
|
1793455078.253762
|
1794059878.253762
|
|
7419
|
My awesome macropad! by @7oda | Stardance
|
7oda
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @7oda | Stardance
|
1793234953.3730175
|
1793839753.3730175
|
|
7420
|
My awesome macropad! by @Camc | Stardance
|
Camc
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Camc | Stardance
|
1793372030.99422
|
1793976830.99422
|
|
7421
|
My first slack bot! by @uthish | Stardance
|
uthish
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @uthish | Stardance
|
1793307291.2059488
|
1793912091.2059488
|
|
7422
|
Weird looking f1 car by @leg1231 | Stardance
|
leg1231
|
0
|
121.45
|
0
|
[]
|
[{"post_id": 82844, "ts": "202 [{"post_id": 82844, "ts": "2026-10-26T00:25:43Z", "hours": 8.0297, "text": "I broke it again!!!! hopefully the last time. I found out why though, it would lose signal and not stop the motors so would just crash into whatever it was headed toward. Im doing some final details now, including making sure my remote doesn’t just turn off:)"}, {"post_id": 80777, "ts": "2026-10-18T19:11:39Z", "hours": 16.7047, "text": "IT FINALLY WORKS!!!! still have alot to do but it can move and steer on its own."}, {"post_id": 74742, "ts": "2026-09-28T03:32:28Z", "hours": 10.2919, "text": "Its starting to look Cool!!!! you can now see why i called it wierd looking f1 car, half the engine area is just a motor"}, {"post_id": 72962, "ts": "2026-09-24T03:40:43Z", "hours": 9.1639, "text": "It only looks a little sus. next thing to do is finish the body and work on wiring. I was about to do the first full test then realized the battery was dead. ILL BE BACK"}, {"post_id": 70401, "ts": "2026-09-19T03:29:14Z", "hours": 8.9811, "text": "I replaced the 3d printed axles with steel rods, then remade the main chassy to be more sturdy, then the front stearring broke. so much fun : |"}, {"post_id": 59979, "ts": "2026-09-02T02:03:37Z", "hours": 8.6339, "text": "This is the full size of it. i ran the motors and the rear axel limitedly snapped. It couldn’t handle the torque :("}, {"post_id": 52740, "ts": "2026-08-23T02:11:12Z", "hours": 9.2153, "text": "Fully assembled front stearing. V1"}, {"post_id": 47193, "ts": "2026-08-14T22:34:32Z", "hours": 7.8606, "text": "hopefully done with the steering and front wheel base"}, {"post_id": 45155, "ts": "2026-08-11T13:48:51Z", "hours": 5.0683, "text": "Working on the front stearing struts and part of the body( this is half, ill mirror it once I like how it is working)"}, {"post_id": 33204, "ts": "2026-07-22T22:06:48Z", "hours": 8.1108, "text": "Started working on front steering. Each wheel will steer individually so that i can test both postive ackermen and reverse ackermen stearing"}, {"post_id": 30489, "ts": "2026-07-18T03:16:27Z", "hours": 10.4411, "text": "from a cad file to physical"}, {"post_id": 17314, "ts": "2026-06-28T01:15:18Z", "hours": 18.9447, "text": "drive train of car, all 3d printed"}]...
|
Title: Weird looking f1 car by @leg1231 | Stardanc Title: Weird looking f1 car by @leg1231 | Stardance
Devlogs:
drive train of car, all 3d printed
from a cad file to physical
Started working on front steering. Each wheel will steer individually so that i can test both postive ackermen and reverse ackermen stearing
Working on the front stearing struts and part of the body( this is half, ill mirror it once I like how it is working)
hopefully done with the steering and front wheel base
Fully assembled front stearing. V1
This is the full size of it. i ran the motors and the rear axel limitedly snapped. It couldn’t handle the torque :(
I replaced the 3d printed axles with steel rods, then remade the main chassy to be more sturdy, then the front stearring broke. so much fun : |
It only looks a little sus. next thing to do is finish the body and work on wiring. I was about to do the first full test then realized the battery was dead. ILL BE BACK
Its starting to look Cool!!!! you can now see why i called it wierd looking f1 car, half the engine area is just a motor
IT FINALLY WORKS!!!! still have alot to do but it can move and steer on its own.
I broke it again!!!! hopefully the last time. I found out why though, it would lose signal and not stop the motors so would just crash into whatever it was headed toward. Im doing some final details now, including making sure my remote doesn’t just turn off:)...
|
1793235069.874419
|
1793839869.874419
|
|
7423
|
Spaceshoot by @Aashish | Stardance
|
Aashish
|
0
|
14.43
|
0
|
[]
|
[{"post_id": 81987, "ts": "202 [{"post_id": 81987, "ts": "2026-10-23T10:44:17Z", "hours": 0.535, "text": "i checked the assembly again and noticed a few things were still not fitting properly and the tft display was slightly misaligned and the type c port cutout was also a bit off. the overall fitting wasnt as good as i wanted so i spent around 30 mins fixing these small things. adjusted the display cutout, aligned the type c port and made some changes to the tolerances so everything fits better now ive also replaced the old step files in the repo with the updated version. i em pretty much sure that everything fits properly when i get to test it physically"}, {"post_id": 51885, "ts": "2026-08-21T19:41:55Z", "hours": 2.6322, "text": "finished the 3D printable body for Spaceshoot and honestly this part took more time than i expected most of the work was not even drawing shapes, it was measuring everything properly and making sure the display actually fits inside the case without weird gaps and since i only know basic cad i built the whole thing directly from scratch instead of using a ready model and slowly kept fixing the dimensions until it started looking right measured the TFT shield using a vernier caliper and scale so the body matches the real hardware instead of guessing the dimensions and then built the whole front frame around the display and adjusted the screen opening until the bezels looked even from all sides spent a good amount of time figuring out the locking system bczz i wanted the display to stay secure without making the case hard to assemble and also i added a proper wall thickness cutouts and fitting space so the body is actually ready for 3d printing instead of being just a cad mode now i just have to wait for the print to arrive and as soon as i get the body in my hands i will definitely post another update with the final fit and assemble😊😊"}, {"post_id": 45435, "ts": "2026-08-11T21:32:32Z", "hours": 1.0186, "text": "i noticed a really annoying ui glitch on the game over screen, basically when your high score goes above 3 digits the text was just overlapping and looking completely messy jumped into Spaceshoot.ino and fixed it real quick. just threw in a simple if (hiScore >= 1000) check. so now if your score hits 4 digits or more, it triggers gfx->setCursor(15, 195) to drop the actual number down below so the HIGHEST SCORE label stays perfectly clean on top. anything 3 digits or less just runs through the else block and prints normally on the same line like it used to."}, {"post_id": 44135, "ts": "2026-08-09T18:15:43Z", "hours": 1.7658, "text": "so i thought my last update was gonna be the final one and i was just gonna leave this project as it is🤡 but after looking at it again i felt like it can still be made much better and i also have some more plans for it so yeah im continuing Spaceshoot there are still some things i wanna try and improve so now im just taking it one update at a time and making it feel more complete i started with the space background because the old stars were looking kinda boring and sometimes they were getting drawn over the player too fixed that and then added 3 different types of stars the first one is just a tiny normal star which stays mostly simple in the background using a basic gfx->drawPixel() call. the second one is a bit bigger and has a small blinking and glowing effect using a millis() based phase timer so the pixels change for a short time and it don’t look like every star is just a fixed pixel. the third one is a shooting star or falling star which moves diagonally (starX += 2 and starY += 4 every frame) with a small custom drawn trail behind it, so it gives that quick falling star effect and makes the background feel way more natural also added some spacing logic for the glowing stars using a glowStarTooClose() math function that calculates squared distance against a GLOW_STAR_MIN_DIST of 48 pixels so they dont randomly spawn too close together i still have some plans left for this so yeah…🙃"}, {"post_id": 39636, "ts": "2026-08-02T19:15:30Z", "hours": 1.7094, "text": "so i thought the hardware phase was over but my old tft screen randomly died😭, got a replacement that looked exactly identical but obviously the touch refused to work and it turns out these cheap screens have different internal wiring depending on the batch wrote a raw diagnostic script to test and figured out the pins were totally different. had to swap xp and ym to digital pins 8 and 9 and route xm and yp to analog a2 and a3 just to wake it uponce it was finally alive it started reading garbage noise with the z axis pressure hitting crazy numbers like negative 13681 out of nowhere added strict minpressure 5 and maxpressure 3500 limits in the c++ code to filter out all the fake ghost inputsthen realized the manufacturer slapped the touch digitizer upside down lol tapping top left was registering at the bottom right instead of messing with wires i just inverted the coordinates in the arduino map function and changed the y axis map to flip 320 to 0 through softwareright at the end when testing python threw a permission error 13 access denied on com5. took a sec to realize the arduino serial monitor was still open in the background and locking the port. wiped out all those annoying hardcoded magic numbers and threw in proper define macros for screen size, lane boundaries, and touch limits. also killed off duplicate render functions and moved repetitive logic like asteroid spawning into neat little helper functions so making changes later wont feel like painbtw i wanna apologize for this mess coz as u guys can probably see even this new display has started showing random lines on it already hardware is just pain sometimesbut so even with those lines on the screen🥲 the game still works fine just like you saw in the previous devlogs also uploaded a fresh demo video on youtube so you can check out the actual gameplay there"}, {"post_id": 13890, "ts": "2026-06-22T19:29:51Z", "hours": 0.9522, "text": "the game is pretty much finished and very close to a fully playable version and most of the planned features are already done, bugs are also mostly fixed and right now everything feels stable during testing. there is still room for small improvements later but overall it finally feels like a complete game instead of just a project prototype i redesigned the player and tried giving it a look inspired by one of the Stardance⭐ star characters while still keeping it simple enough to draw with pixels on the display 😭 I changed the text that previously displayed ‘scr’ and replaced it with the full word ‘Score’. fixed a visual bug where background stars were passing through the character and cutting parts of the sprite while moving across the screen fixed another issue where the smile and face pixels were not getting cleared properly while switching lanes and would sometimes get left behind on the screen and did some cleanup around collision and rendering code to make gameplay feel smoother and reduce weird visual glitches during longer runs"}, {"post_id": 6092, "ts": "2026-06-10T07:39:04Z", "hours": 0.8133, "text": "a proper lifeline system because instant game over was getting way too annoying lol. took inspiration straight from minecraft to sketch out the pixel art hearts using raw coordinates instead of images. completely wiped the spaceshoot name from the top bar so we now have empty space to draw the 3 hearts right inside the main ui loop basically swapped the instant death logic with a lives = 3 state check. if you hit an asteroid it just drops a life, clears the screen, and resets the obstacle back to the top. i also coded a health drop engine that randomly spawns a heart collectible every 350 score added a basic capped logic so if you catch a heart while already at max health nothing happens, but if you are low it refills the health and updates the top display instantly."}, {"post_id": 5774, "ts": "2026-06-09T17:58:07Z", "hours": 1.0117, "text": "so finally coded a proper home screen menu today but damn fighting screen coordinates was painfull coz text was cliping into the gameplay scene. fixed the math to force everything into a single centered line, drew a messy sketch style custom border for a raw hand drawn look, and shifted the play button to the absolute bottom using explicit pixel offset positioning to give it brething room. also cleared the spaceshoot name text from the top bar on the gameplay screen to keep that exact pixel space empty for displaying the upcoming heart matrices and lives counter. the plan is that now we are ready to implement that 3 lifelines system where hearts drop as collectbles around 600 score to refill lives instead of instant game over and plus maybe a temporary circle shield to absorb hits."}, {"post_id": 4145, "ts": "2026-06-07T11:00:18Z", "hours": 2.14, "text": "so today i finally got the main gameplay loop working properly after fixing some annoying screen flicker issues. here is what i got done designed 3 entirely different asteroid shapes using raw geometry matrices instead of just rendering basic boxes as before shifted the player spaceship 20 pixels down toward the bottom so you get a bit more reaction time hooked up EEPROM to save and load your highest score even after the board unplugs and brought back actual collision logic that triggers the red game over screen with your high score"}, {"post_id": 2693, "ts": "2026-06-05T11:58:50Z", "hours": 1.8514, "text": "so this is my the first devlog for this first project in stardance and honestly i thought i would start with actual game dev 😭 for this i am using an arduino uno R4 wifi and a 2.4 inch TFT touch display shield which mounts directly on top of the board. before building the game itself i had to spend quite a bit of time just testing the display, touch screen and libraries coz nothing was working perfectly from the start. lot of trial and eror and compile errors and random issues before finally getting things moving in the right direction. spent most of the time testing different libraries and examples coz i wasnt getting a proper setup initially and had to go through multiple errors before finding the right path finally decided to stick with MCUFRIEND_kbv for now after testing different options and checkjing which one gives better support for the shield started creating some very basic game elements first and used them for display and touch testing instead of just relying on simple demo screens worked on touch calibration, coordinates and pixel positioning so touches actually register in the correct place and left or right controls behave properly added a score system and also implemented difficulty scaling where speed increasess after every 100 score to make gameplay a bit challenging created separate screens for stuff like Game Over and Touch To Go so the game can properly show different states when you lose or restart overall this was mostly a testing and setup session but it helped cleared a lot of confusion"}]...
|
Title: Spaceshoot by @Aashish | Stardance
Devlogs Title: Spaceshoot by @Aashish | Stardance
Devlogs:
so this is my the first devlog for this first project in stardance and honestly i thought i would start with actual game dev 😭 for this i am using an arduino uno R4 wifi and a 2.4 inch TFT touch display shield which mounts directly on top of the board. before building the game itself i had to spend quite a bit of time just testing the display, touch screen and libraries coz nothing was working perfectly from the start. lot of trial and eror and compile errors and random issues before finally getting things moving in the right direction. spent most of the time testing different libraries and examples coz i wasnt getting a proper setup initially and had to go through multiple errors before finding the right path finally decided to stick with MCUFRIEND_kbv for now after testing different options and checkjing which one gives better support for the shield started creating some very basic game elements first and used them for display and touch testing instead of just relying on simple demo screens worked on touch calibration, coordinates and pixel positioning so touches actually register in the correct place and left or right controls behave properly added a score system and also implemented difficulty scaling where speed increasess after every 100 score to make gameplay a bit challenging created separate screens for stuff like Game Over and Touch To Go so the game can properly show different states when you lose or restart overall this was mostly a testing and setup session but it helped cleared a lot of confusion
so today i finally got the main gameplay loop working properly after fixing some annoying screen flicker issues. here is what i got done designed 3 entirely different asteroid shapes using raw geometry matrices instead of just rendering basic boxes as before shifted the player spaceship 20 pixels down toward the bottom so you get a bit more reaction time hooked up EEPROM to save and load your highest score even after the board unplugs and brought back actual collision logic that triggers the red game over screen with your high score
so finally coded a proper home screen menu today but damn fighting screen coordinates was painfull coz text was cliping into the gameplay scene. fixed the math to force everything into a single centered line, drew a messy sketch style custom border for a raw hand drawn look, and shifted the play button to the absolute bottom using explicit pixel offset positioning to give it brething room. also cleared the spaceshoot name text from the top bar on the gameplay screen to keep that exact pixel space empty for displaying the upcoming heart matrices and lives counter. the plan is that now we are ready to implement that 3 lifelines system where hearts drop as collectbles around 600 score to refill lives instead of instant game over and plus maybe a temporary circle shield to absorb hits.
a proper lifeline system because instant game over was getting way too annoying lol. took inspiration straight from minecraft to sketch out the pixel art hearts using raw coordinates instead of images. completely wiped the spaceshoot name from the top bar so we now have empty space to draw the 3 hearts right inside the main ui loop basically swapped the instant death logic with a lives = 3 state check. if you hit an asteroid it just drops a life, clears the screen, and resets the obstacle back to the top. i also coded a health drop engine that randomly spawns a heart collectible every 350 score added a basic capped logic so if you catch a heart while already at max health nothing happens, but if you are low it refills the health and updates the top display instantly.
the game is pretty much finished and very close to a fully playable version and most of the planned features are already done, bugs are also mostly fixed and right now everything feels stable during testing. there is still room for small improvements later but overall it finally feels like a complete game instead of just a project prototype i redesigned the player and tried giving it a look inspired by one of the Stardance⭐ star characters while still keeping it simple enough to draw with pixels on the display 😭 I changed the text that previously displayed ‘scr’ and replaced it with the full word ‘Score’. fixed a visual bug where background stars were passing through the character and cutting parts of the sprite while moving across the screen fixed another issue where the smile and face pixels were not getting cleared properly while switching lanes and would sometimes get left behind on the screen and did some cleanup around collision and rendering code to make gameplay feel smoother and reduce weird visual glitches during longer runs
so i thought the hardware phase was over but my old tft screen randomly died😭, got a replacement that looked exactly identical but obviously the touch refused to work and it turns out these cheap screens have different internal wiring depending on the batch wrote a raw diagnostic script to test and figured out the pins were totally different. had to swap xp and ym to digital pins 8 and 9 and route xm and yp to analog a2 and a3 just to wake it uponce it was finally alive it started reading garbage noise with the z axis pressure hitting crazy numbers like negative 13681 out of nowhere added strict minpressure 5 and maxpressure 3500 limits in the c++ code to filter out all the fake ghost inputsthen realized the manufacturer slapped the touch digitizer upside down lol tapping top left was registering at the bottom right instead of messing with wires i just inverted the coordinates in the arduino map function and changed the y axis map to flip 320 to 0 through softwareright at the end when testing python threw a permission error 13 access denied on com5. took a sec to realize the arduino serial monitor was still open in the background and locking the port. wiped out all those annoying hardcoded magic numbers and threw in proper define macros for screen size, lane boundaries, and touch limits. also killed off duplicate render functions and moved repetitive logic like asteroid spawning into neat little helper functions so making changes later wont feel like painbtw i wanna apologize for this mess coz as u guys can probably see even this new display has started showing random lines on it already hardware is just pain sometimesbut so even with those lines on the screen🥲 the game still works fine just like you saw in the previous devlogs also uploaded a fresh demo video on youtube so you can check out the actual gameplay there
so i thought my last update was gonna be the final one and i was just gonna leave this project as it is🤡 but after looking at it again i felt like it can still be made much better and i also have some more plans for it so yeah im continuing Spaceshoot there are still some things i wanna try and improve so now im just taking it one update at a time and making it feel more complete i started with the space background because the old stars were looking kinda boring and sometimes they were getting drawn over the player too fixed that and then added 3 different types of stars the first one is just a tiny normal star which stays mostly simple in the background using a basic gfx->drawPixel() call. the second one is a bit bigger and has a small blinking and glowing effect using a millis() based phase timer so the pixels change for a short time and it don’t look like every star is just a fixed pixel. the third one is a shooting star or falling star which moves diagonally (starX += 2 and starY += 4 every frame) with a small custom drawn trail behind it, so it gives that quick falling star effect and makes the background feel way more natural also added some spacing logic for the glowing stars using a glowStarTooClose() math function that calculates squared distance against a GLOW_STAR_MIN_DIST of 48 pixels so they dont randomly spawn too close together i still have some plans left for this so yeah…🙃
i noticed a really annoying ui glitch on the game over screen, basically when your high score goes above 3 digits the text was just overlapping and looking completely messy jumped into Spaceshoot.ino and fixed it real quick. just threw in a simple if (hiScore >= 1000) check. so now if your score hits 4 digits or more, it triggers gfx->setCursor(15, 195) to drop the actual number down below so the HIGHEST SCORE label stays perfectly clean on top. anything 3 digits or less just runs through the else block and prints normally on the same line like it used to.
finished the 3D printable body for Spaceshoot and honestly this part took more time than i expected most of the work was not even drawing shapes, it was measuring everything properly and making sure the display actually fits inside the case without weird gaps and since i only know basic cad i built the whole thing directly from scratch instead of using a ready model and slowly kept fixing the dimensions until it started looking right measured the TFT shield using a vernier caliper and scale so the body matches the real hardware instead of guessing the dimensions and then built the whole front frame around the display and adjusted the screen opening until the bezels looked even from all sides spent a good amount of time figuring out the locking system bczz i wanted the display to stay secure without making the case hard to assemble and also i added a proper wall thickness cutouts and fitting space so the body is actually ready for 3d printing instead of being just a cad mode now i just have to wait for the print to arrive and as soon as i get the body in my hands i will definitely post another update with the final fit and assemble😊😊
i checked the assembly again and noticed a few things were still not fitting properly and the tft display was slightly misaligned and the type c port cutout was also a bit off. the overall fitting wasnt as good as i wanted so i spent around 30 mins fixing these small things. adjusted the display cutout, aligned the type c port and made some changes to the tolerances so everything fits better now ive also replaced the old step files in the repo with the updated version. i em pretty much sure that everything fits properly when i get to test it physically...
|
1793443940.5070395
|
1794048740.5070395
|
|
7424
|
My awesome macropad! by @Pragun | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Pragun | Stardance
|
1793335931.3754005
|
1793940731.3754005
|
|
7425
|
My awesome macropad! by @shouryamishra | Stardance
|
shouryamishra
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @shouryamishra | St Title: My awesome macropad! by @shouryamishra | Stardance...
|
1792860526.708302
|
1793724526.708302
|
|
7426
|
website by @teteos | Stardance
|
teteos
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: website by @teteos | Stardance
|
1792900216.0237072
|
1793764216.0237072
|
|
7428
|
My first slack bot! by @Jtuin | Stardance
|
Jtuin
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Jtuin | Stardance
|
1793228008.2849224
|
1793832808.2849224
|
|
7429
|
son blocks by @project516 | Stardance
|
project516
|
0
|
5.0
|
0
|
[]
|
[{"post_id": 2767, "ts": "2026 [{"post_id": 2767, "ts": "2026-06-05T15:43:31Z", "hours": 5.0, "text": "1.0.0 stable Im ata good place with the mod to release a first version. Im gonna submit it to modrinth and curseforge soon!"}]...
|
Title: son blocks by @project516 | Stardance
Devl Title: son blocks by @project516 | Stardance
Devlogs:
1.0.0 stable Im ata good place with the mod to release a first version. Im gonna submit it to modrinth and curseforge soon!...
|
1792914638.8473709
|
1793778638.8473709
|