Clb184

@clb184.bsky.social

🇵🇪 I like AoE2, TF2 and shmups. Sometimes programming something weird.

It sure takes a bit of effort to fix all the screen tearing landmines in PC-98 Touhou while still maintaining the exact original frame timing. The resulting code is often not natural at all.

Screenshot of VirtualDub2 showing a recording of TH03's character selection screen in 1P vs. CPU mode. The Z key is held all the way throughout to select Reimu vs. Reimu as quickly as possible. The original game's fadeout animation displays noticeable tearing on the currently selected frame #116 due to ZUN changing the PC-98's hardware graphics palette mid-frame.Screenshot of VirtualDub2 showing the same recording from ReC98's landmine-fixing `debloated` branch. No more screen tearing, and we're still at frame 116.Screenshot of the code behind the tearing landmine fix, featuring a silly trick to cut excess frames and another workaround that addresses the different placement of the palette manipulation.

Got Borland C++ running on my Win98 machine. I had to install it on a VM first cuz my floppy drive is kinda dead. Anyway, the main reason to get this was to run it on DOS. I would like to try Visual C++ on this later.

BildBildBild

PC-98 Touhou has a fundamental issue at the core of its trigonometry code that prevents perfect symmetries of bullet patterns. (Basically, right-shifting positive values rounds them toward 0, but right-shifting negative values rounds them away from 0.)

A 2-spread pattern using a base angle of 0x40, TH02's hardcoded medium spread angle, and spawned at the center of the playfield to trap the player at its spawn point.Visualization of the asymmetry in this 2-spread pattern. The right lane moves at the correct angle; the cyan area shows the symmetric triangle the pattern is expected to form, and the red area shows the inaccurate extra amount of space covered by the left lane.Commented version of polar_x(), the general PC-98 Touhou function at the root of the inaccuracy.Results of stepping through polar_x() for the angle and speed values used in the 2-spread pattern. The left lane (which uses an angle of 0x46) ends up with a negative multiplication result, which is then right-shifted to a number whose absolute value is one higher than the value for the corresponding right lane, thus causing the inaccuracy.

Our next jam is getting close! Unlike recent ones, the theme will remain a secret until the very start. Unless you'd like to guess based off the banner? This one will run for a whole week, so take it easy! Event: itch.io/jam/touhou-j... Discord: discord.gg/touhougamejam

Touhou Fan Game Jam 15

A game jam from 2025-02-16 to 2025-03-09 hosted by Nitori, historyleaf, hp78, SolarisSect, Fox McMurphy, noeticnightjar, Aeon, Kevin Minh, GreatHornedOwl, Jacoder23, Yal & Seniro Rainbow. Banner by H...

itch.io