Michaël Larouche
banner
michaellarouche.bsky.social
Michaël Larouche
@michaellarouche.bsky.social
Senior Programmer (Contractor) for @digitaleclipse.bsky.social‬ on behalf of @coldbytes.bsky.social. Zig programming language fan. Profile picture by @johanvinet.com. FR/EN/日本語(勉強しています).
10 years ago I made a Balloon Fight hack for Festival Rétro 2015 that added a competition mode and several new screens.

I finally released the IPS patch and source code at: github.com/mlarouche/Ba...

Iwata sprites made by @johnriggs.bsky.social
November 9, 2025 at 8:35 PM
I also ported the GPU rendering of MK4 and added the resolution scaling as a nice bonus, we got great reactions from that one
October 30, 2025 at 1:52 PM
I also implemented the pre-game menu and the move list menu. Quite proud of the way I did the Kombat Kode selection and the auto-input inside the game for all games that have a versus mode.

Speaking of versus mode, I had to find lots of hooks inside the games for the fluid rematch flow and replay.
October 30, 2025 at 1:52 PM
My most obvious fix was to fix Shang Tsung Kombat Tomb stage fatality, however it is done via our C++ callbacks using code breakpoints. So if for instance address ff862250 is executed, a C++ function gets called and we modify the emulation state.
October 30, 2025 at 1:52 PM
I tried to avoid actually modifying the ROM themselves but for some I had no choice. For most of the game, I added the stage names for stages that aren't accessible via normal way like BOTTOM OF PIT in MK1 or GORO'S LAIR. Yes even in the home ports!

I also removed some copyright license.
October 30, 2025 at 1:52 PM
And of course implemented the fatality training mode, the one-button fatality feature was implemented for this mode first but in an upcoming patch it will available as well for normal and versus modes for all the arcade games. For Trilogy, you can use the builtin one.
October 30, 2025 at 1:52 PM
I implemented the training mode for Arcade MK1, MK2, MK3, UMK3, MK4 and MK Trilogy. Quite proud of the seamless switch between AI and Human. For each game, we needed to stop the match to end when health reach zero and all the health filling behaviors.
October 30, 2025 at 1:52 PM
I also found and exposed every secret we can find in every game. Some settings are visible in the GAME SETTINGS, other in ADDITIONAL SETTINGS in the pause menu.
October 30, 2025 at 1:52 PM
First feature I've did was the on-screen move list. Unlike any other fighting games, MK has dynamic states during a match. So it react to what's happening in the game. For every fighting game I had to find these variables: in combat, in finish him, health, sprite mirroring, selected character, etc.
October 30, 2025 at 1:52 PM
Happy launch day of Mortal Kombat Legacy Kollection! Here's a thread to explain what I did on the kollection itself!
October 30, 2025 at 1:52 PM
Inbound for Emeryville for a week to visit my colleagues at @digitaleclipse.bsky.social !
April 27, 2025 at 9:33 PM
Happy 30th birthday to one of the best games of all times, Chrono Trigger!

Bonne 30ème anniversaire Chrono Trigger!

クロノトリガー30年発売されたおめでとう!
March 11, 2025 at 12:55 PM
Even here it’s colder than usual
January 20, 2025 at 5:06 PM
December 12, 2024 at 5:51 PM
And the result. We did this project at Tribute from 2016 as a spare project until I left in 2018. Before leaving I had stop working on that NES project to work on a new graphics backend during that spare project for the C++ engine they have at the time.
November 22, 2024 at 1:48 PM
And last the CHR bank editor. Allow to specify banks of CHR data of 1K, 2K and 4K size and specify the source of graphics data to put into that bank.

You could specify an offset so it added tile padding for you.
November 22, 2024 at 1:48 PM
The palette editor with a popup to select the color from the color available on the NES
November 22, 2024 at 1:48 PM
For individual images, you can specify in the metadata if you want to optimize the tiles. For fonts for instance you don't want optimization.

It supported metatile importation as well
November 22, 2024 at 1:48 PM
The animation tool. For whole animation, you can set in which CHR ROM slot in RAM it will be set.

You can also group smaller animation together so they go into the same CHR 1K Bank, reducing CHR bank change.

You can change the algorithm to chop up the sprites into tiles with color separation.
November 22, 2024 at 1:48 PM
Here a bonus that I never shared before, a video of the custom NES tool I've written to generate game data.

It was designed to create an MMC3 ROM and the code was assembled using ca65.

I'll explain each individual tool in the thread.
November 22, 2024 at 1:48 PM
The other input is a structured buffer contained the palette as uint array.

We then sample the texture to get the palette index and read the packed color from the palette. It is then unpacked into a float4.

Before I used R8_UINT texture and Load() but using UNORM permit more filtering options.
November 21, 2024 at 6:16 PM
This week I'm in a vacation and I'm working on my game engine for my solo game. At the start of the week I worked on a palette shader that I'm been thinking about for a long time.

Here's the result first, the fighter is a temp sprite from OpenArt to test engine features.

A 🧵

#gamedev #zig #hlsl
November 21, 2024 at 6:16 PM