We just hit a palm tree at 290km/h. The car cartwheeled into the ocean. My girlfriend and I were ejected into the stratosphere. She landed, fixed her hair, and scolded me for wasting 3 seconds. THIS RELATIONSHIP IS TOXIC! ๐ฉ๐๏ธ๐
#ArcadeKaren#CoinOpKaren#OutRun
Just slaughtered a Lizard Man and he dropped a "World's Best Dad" mug. Great. Now I have to find his wife in Level 2 and explain why heโs late for the fly roast. This game is an emotional liability lawsuit waiting to happen! ๐ฆโ๏ธ๐ญ
#ArcadeKaren#CoinOpKaren#Rastan
I tried to de-escalate a fight at the mall by flicking a coin and shouting "WHOO!" The bad guys didn't start dancing. They just stole my purse. This game is giving terrible self-defense advice! ๐บ๐ฉ๐
#ArcadeKaren#CoinOpKaren#Moonwalker
@usa_retro I could go outside and fight the weather, or I can stay on this couch and spam the Elbow Smash on Abobo until he glitches through a wall.
I choose violence (but the warm kind). ๐๐
The Dreamcast didnโt "port" arcade games; it WAS the arcade. Sega literally shoved a NAOMI board into a plastic box and said "You're welcome." We had arcade-perfect Crazy Taxi, SoulCalibur, and a memory card that was also a Tamagotchi. It was too pure for this world. ๐
OH. MY. GOD!!!! Just made probably the most FUNDAMENTAL accelerated math routine that has been used in every Sega Dreamcast port that I have been involved with either directly or indirectly, the 4x4 matrix multiply, 10-30% faster!!! WELCOME TO GAINZVILLE, FOLKS!!!
It all started the other day when Niels replaced the body of the C++ overloaded multiplication operator in the Simulant DC engine's 4x4 Matrix class with a one-line call to forward it to my SH4ZAM'd up equivalent routine, looking for some perf gainz on his skinning-heavy engine. The result? +8 FPS. EIGHT. FROM ONE FUNCTION! DO YOU KNOW WHAT I WOULD DO FOR A FREE 8 FPS IN GTA3?!?!? ๐คฃ
Anyway, needless to say, I had always known this one operation was probably the single hottest routine in any engine or game or port to DC... It's the reason why, if you're just starting to get into DC development, and your math and TnL are in plain C code, you probably wonder why your performance sucks.
By doing your matrix transforms in plain C, you are losing out on using the DC's most powerful instruction, FTRV, which can transform a single 4D vector by a whole freaking 4x4 matrix in just 4-7 cycles. It's the reason why a Dreamcast is even competitive with other 6th consoles without hardware TnL or a PS2-style vector unit... and you cannot access it without using inline ASM or using something like my SH4ZAM library, where some chad has given you the ability to harness to the SH4's power from a C or C++ API.
ANYWAY, long story short, the gainz made me decide to go back and revisit my implementation, which I had admittedly not looked at since working on GTA3. Since then, I had always either taken with me, or had it get grabbed by jnmartin for use in our DC ports like Vice City, Mario 64, Mario Kart 64, Star Fox 64... Plus I am about to be bringing in for Sonic Mania's 3D stages...
So last night, for about 3 hours, armed with the SH4 performance counters, I played a meticulous game of SH4 assembly Tetris, moving every instruction around in the routine and, trying to find the best organization that maximizes instruction pairing for superscalar dual dispatch as well as minimizes pipeline stalls due to resource hazards, cache misses, or frankly me fucking up with a prefetch instruction (lolz)...
What's the end result? This beauty you can see here on the left, and a net gain of 10-30%, depending on the state of the cache and the contents of the relevant cache lines above each matrix operand in memory when the routine is called...
THIS IS HUGE. Every one of these games can now leverage this gain, and everyone using my SH4ZAM library will be able to leverage it as well too!
Here's a link to SH4ZAM, which is now in kos-ports for those of you still doin' math in C or C++ and wondering why you're struggling to achieve N64+ performance: https://t.co/QWLqwVrymp
Modern gaming is soft. In the 80s, there was no pause button. If you had to pee, you died. Multiplayer wasn't online; it was standing shoulder-to-shoulder with a stranger who smelled like vinegar. We didn't buy skins, we bought glory with 5lbs of quarters in our pockets. ๐น๏ธ๐ช
"I'd buy that for a dollar!" FALSE ADVERTISING. Iโve put $20 into this cabinet and Murphy walks slower than a Roomba on carpet. Dead or alive, Iโm speaking to the manager about these difficulty settings! ๐ค๐ฎโโ๏ธ
#ArcadeKaren#CoinOpKaren#RoboCop
I just put enough quarters into this machine to buy a real tank. If I hear "MISSION FAILED" one more time, I'm hijacking a camel and riding it through the food court. ๐ช๐ฅ๐ค
Iโve been listening to this music loop for 3 hours. I just tried to trap my barista in a saliva bubble so sheโd turn into a banana. She called security. ๐ฆ๐ซง๐
#ArcadeKaren#CoinOpKaren#BubbleBobble