Been working on reverse engineering Final Fight's level script handler and made a disturbing discovery (see title).
This game actually has two concurrent script handlers. One handler (which I'm calling the main script handler) spawns entities (enemies, bosses, item containers, weapons, debris, effects, etc) based on the screen's scroll position. The other (which I'm calling the gate handler) stops screen scrolling and spawns enemy entities that you must defeat to allow the game to proceed. What the game doesn't tell you is that the gate handler has also started a frame timer for each encounter. If you don't manage to defeat every enemy on the gate handler's hit list, it forces the win event and you can proceed through the game, whether that simply means the level can scroll again or a level outro demo is played.
Here's the debug display I made. When "GATE TIMER" runs out, Cody will proceed down the stairs even with enemies left on the hit list.
The one caveat is that you still have to defeat bosses, as the gate handler is disabled during boss encounters.
Hope to one day see someone more insane than me do a pacifist run of this game.