New games every week!
☀️- 14 - JSE Tweaks Blog
14th May 2025
I spent the day in JSE Tweaktown, yesterday.

-=-=-



For most of the day I was digging through the GameHandler functionality, trying my best find better sets of values that would look better in lower resolutions.

I think I've pretty much got it looking .. presentable.. ? Is that the right word?
The Top n/Last n scoreboard can still get a little bit weird, spacing wise, but otherwise it seems a bit better than it did the day before.

The Calendar mode, though. .. Probably best not to use anything smaller than 640x480, especially if you're using ScaleMode 3.
.. That still ends up looking rather ratty, mostly because the little calendar circles tend to scale in all manner of sizes, and the font routine struggles to keep things looking nice as a result.

But, yeah, things look .. "better"

I did consider doing a complete rewrite of the Calendar menu, though. I still might do that, though likely do it as a secondary option.
To be honest, there's other menus I oughta try to build, too. Like the "pick a number" menu system, or the "unlock levels on a long path, with 3 stars each" menu system, and other such things.
But that's a crazy spiral of coding that I'm not really in the mood to delve into.
..
yet!

Meanwhile..



So I'm sitting here in the middle of the day, wondering which of my giant list of things I should tackle next.
I've already tried to enhance the Tilemap on numerous occasions, so I don't think I'll be attempting that again any time soon.
There was one little thing I was trying to do with the tilemap, and that involves a ton of scaling and rotation, to draw a scaled and rotated tilemap onto a separate buffer.
But the maths kept on confounding me, especially in the current heatwave.

I wondered, then, what if I draw a small tilemap onto the BG buffer.. Then I can draw THAT onto the new buffer, and do what it was that I wanted to experiment with.
Could that work?

So I tried that.

This is something I've wanted to be able to do for YEARS, but have never quite found a language that could do it.
I mean, it should be simple, right? numbers, maths, images, bob's your uncle.

But no matter which language I've tried, there's never been a simple way to achieve the effect.

But.. I've got my own language here.
Surely it can't be THAT hard to code the effect that I've been trying to do.
.. Right?!

So..
Step one : Draw the tilemap to the BG buffer.
That's easy enough.

Step two : Create a new buffer and draw the BG buffered tilemap onto the new buffer, at a specific co-ordinate.
This was tricky, and was a lot of complexity, and took bloomin' ages.
The tricky part was pinpointing the exact pixel on BG buffer, ensuring that pixel is at the correct pixel on the new buffer, then rotating the BG buffer around that co-ordinate, whilst still retaining the correct point on both buffers.
Yikes!!!

Step three : Line by line, copy lines from New Buffer to Normal Screen buffer, gradually scaling each line a little bit bigger as you go.

The first question, is can I actually manage all the maths
The second question.. is how FAST can I manage all that maths..

So, I gave it all a go.
It took all day.
It took ALL day.
A whole lot of maths.
A TON of maths.

And then came the testing.
The Quest 3 is one of my slower devices, insofar as JSE goes, and on that I was managing 60fps, with only about 30% "Stress" level, so.
.. I think that means it's ok.

I should probably dig out the Samsung Bag'o'Crap to test on there, too.
I might do that later on today.
But then, I might not.
Who knows.

As for the "why", I'm not really sure. Like I said, it's a technique I've always wanted to try out, but have never had the chance to.
Will I even use the functionality?
I couldn't say for sure.
There's "the obvious game", but other than that.. Who knows.

Was it even worth adding the function into JSE?
Probably not.

Will I document it?
Maybe.

Is the command staying?
Sure. Because why not!?

Let me know if you think I should do any very specific game using the new command, which is demonstrated in the code below.

// Mystery Code!? // by Jayenkai // Created 2025/5/12 Symbol 0,"02_y?xyyxy_yxy_yxyyxy_yxy_yxyyxy?"; Symbol 1,"0__3_5!335!335!335!335!335!3_"; Symbol 2,"01_R?SRRSR_RSR_RSRRSR_RSR_RSRRSR?"; Symbol 3,"2__0_0_0_0_0_0_0_0_0_0_0_0_00I@0_0_0!I@0_0_0!I@0_0_0!I@0_0_0!I@0_0_0!I@0_0_0!I@0_0_0!I@0_0_0!I.0_0_0_0I.0_0_0_0I.0_0_0_0I.0_0_0_vB.v0_0_0.B.0B.0B.0_0_B.0B.0B.0_0_B_B?0_0_B_B?0_0_00vB@v0_0_0?v0B.0v0_0_0/vB.v0_0_0_W.0_0_0@W@0_0_0?cW@c0_0_0,xcvvW.vvcx0_0_0x0ccv!cc0x0_0?vv0x00c_c00x0vv0_0x!c_cx!0_0xx0_0_xx0_0vv0_0_vv"; Symbol 4,"2__0_0_0_0_0_0_0_0_0_0_0_0_00I@0_0_0!I@0_0_0!I@0_0_0!I@0_0_0!I@0_0_0!I@0_0_0!I@0_0_0!I@0_0_0!I.0_0_0_0I.0_0_0_0I.0_0_0_0I.0_0_0_vB.v0_0_0.B.0B.0B.0_0_B.0B.0B.0_0_B_B?0_0_B_B?0_0_00vB@v0_0_0?v0B.0v0_0_0/vB.v0_0_0_W.0_0_0@W@0_0_0?cW@c0_0_0,xcvvW.vvcx0_0_0x0ccv!cc0x0_0?vv0x00c_c00x0vv0_0vvx.c_cx.vv0_0vv0_0_vv0_0xx0_0_xx"; Symbol 5,"2__0_0_0_0_0_0_0_0_0_0_0_0_00I@0_0_0!I@0_0_0!I@0_0_0!I@0_0_0!I@0_0_0!I@0_0_0!I@0_0_0!I@0_0_0!I.0_0_0_0I.0_0_0_0I.0_0_0_0I.0_0_0_vB.v0_0_0.B.0B.0B.0_0_B.0B.0B.0_0_B_B?0_0_B_B?0_0_00vB@v0_0_0?v0B.0v0_0_0/vB.v0_0_0_W.0_0_0@W@0_0_0?cW@c0_0_0,xcvvW.vvcx0_0_0x0ccv!cc0x0_0?xx0x00c_c00x0xx0_0vvx.c_cx.vv0_0vv0_0_vv0_0vv0_0_vv"; Symbol 6,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0vv0x?0!x?0vv0_0vvx0_0/xvv0_0vvx!0!x!vv0_0xx0_0_xx"; Symbol 7,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0xx0x?0!x?0xx0_0vvx0_0/xvv0_0vvx!0!x!vv0_0vv0_0_vv"; Symbol 8,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0vv0x?0!x?0vv0_0x,0_0/x,0_0x@0!x@0_0vv0_0_vv"; Symbol 10,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_00;?0_0_0@;/0;?00;!0_;_;_;_0.;_;_;_;;0,;_;_;_;;0?;_;_;/"; Symbol 11,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0.;;0!;.0_0@;_0;!00;.0@;_;_;@0?;_;_;_;0.;_;_;_0!;_;_;/"; Symbol 12,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_00;.0/;.0_0!;/0?;!0_;_;?0;_0/;_;_;@0!;_;_;@0@;_;_;?"; Graphics 800,600,1 px=64-50 py=64 pang=0 SetBuffer BG CLS;ResetDraw;AA False SetSize 0.25 for x=0 to 127 for y=0 to 127 s=2 c=0 if x>64 then c=c+2 if y>64 then c=c+3 d=Round(Pyth(63-x,63-y)) if d==48 or d==53 then s=1;c=Rand(0,7) if d==49 or d==50 or d==51 or d==52 then s=0 SetRot Rand(0,3)*90 DrawImg x*8+4,y*8+4,s,c next next SetBuffer FG bgx=0 cloudx=0 repeat cls;ResetDraw;AA False SetGradient 100,180,255,40,70,160 Rect 0,0,jscrw,jscrh*0.35 ResetDraw SeedRnd 3717 for m=0 to 49 f=(m*0.01)+0.7 dx=Wrap(Rand(0,2048)+(cloudx*f),0,2048)-512;dy=Rand(0,jscrh*0.3)-32 SetSize f*3 DrawImg dx,dy,Rand(10,12) next ResetDraw SetSize 1.25 SetRot pang Mode7 px*8,py*8,jscrh*0.3,jscrh,1,4 // First quick test. Functionality may change if GamePad(ButtonA) then px=px-Sin(pang)*0.3;py=py-Cos(pang)*0.3;rev=Wrap(rev+0.2,0,3) rx=(GamePad(ButtonRight)-GamePad(ButtonLeft)) pang=pang-rx cloudx=(cloudx-1)-(rx*2) ResetDraw SetSize 3 DrawImg jscrw*0.5,jscrh*0.8-12,6+Floor(rev) SetSize 4 DrawImg jscrw*0.5,jscrh*0.8,3+Floor(rev) ShowFPS Flip Forever


A.I. Corner


Lyrics : By me
Sound Imported : The Sad and Lonely Kamata
> Reveal 🔎

: Download | Suno Link

Alternative version
: Download | Suno Link
Sung by Suno


"Muppet Derek is coding on the couch, with a MacBook on his knees" by DrawThings / Flux

> Reveal 🔎
Views 56, Upvotes 3  
Daily Blog , Jse
New games every week!
Site credits : If you can see it, Jayenkai did it.
(c) Jayenkai 2023 and onwards, RSS feed 92

Blog - ☀️- 14 - JSE Tweaks - AGameAWeek