Fan-made port · Super Nintendo

The King of Fighters '98

The SNESFest

A complete SNES fighting engine built from scratch — 50 fighters, 10 stages, six game modes and the full KOF '98 system set, running on real 16-bit hardware.

  • 286 megabitROM+MSU-1
  • 50fighters
  • 10stages
  • 6modes
65816 + PVSnesLib KOF '98 SNES cartridge with the fan-made The SNESFest label SNS-KF-USA · Fan-made · Not for sale
50Fighter entries
10Stages
6Game modes
286 megabitROM + MSU-1
1–8AI levels

Trailer

See the port in motion

The official English trailer: the fighting engine, the modes and the full roster running on a real SNES.

Official English trailer — The SNESFest Watch on YouTube

The story

A love letter to the SNES

About 30 years ago, seeing Street Fighter Alpha 2 running on the Super Nintendo felt impossible: large characters, smooth animation, effects and voices… all on a 16-bit console. That game left a mark — and proved that the SNES, when someone truly commits, can reach places that once seemed unimaginable.

Time passed, but the urge to push the SNES to its limit stayed. This port of The King of Fighters '98 was born from that obsession: take a huge fighting game full of systems, characters and effects, and make it fit on hardware many people already considered maxed out in the 90s.

It is not an emulator, a wrapper or an official ROM. It is a custom fighting engine written in 65816 + PVSnesLib, with assets converted from MUGEN/KOF '98 packages, running for real on the SNES — or on a compatible emulator.

"The SNES, when someone truly commits to it, can reach places that once seemed unimaginable."

— Fábio AD, developer

What's inside

A full fighting game, squeezed into a cartridge

Everything you expect from KOF '98 is here: the meter, the cancels, the teams, the attitude. Rebuilt from the ground up for the SNES.

50 fighter entries

The KOF '98 cast, five Street Fighter guests and hidden forms — including Kyo Nests, Kyo Ash, Rugal and Omega Rugal.

Power gauge & MAX

Build meter, activate MAX and spend it on supers, MAX/SDM versions and Quick SDM. Chains, cancels and juggles included.

Real defensive play

High, low and air blocking, chip damage, pushback, blowback guard crush, character-specific counters, reversals and throws.

AI with personality

Eight difficulty levels and four profiles — zoner, rush, grappler and balanced. Aggression, defense and super usage scale with the level.

Six ways to fight

Single Play campaign, local versus, 3v3 Team Play, Team VS, Survivor with its own ending, and a full-featured Practice mode.

MSU-1 ready

Stream character tiles, voices and the 13-still Survivor ending from the optional MSU-1 file. Music and SFX stay on SPC700/SNESMOD.

The roster

50 fighters. One cartridge.

The KOF '98 family, a few special guests and hidden forms. Search the roster or filter by category.

50 of 50 fighters

  • Hidden form
  • Requires MSU-1

    How to unlock the hidden forms

    • Omega Rugal: hold L+R on Rugal's cell.
    • Kyo Nests / Kyo Ash: press L or R on Kyo's cell.
    • Regular Rugal needs the streamed MSU-1 CHR. Without the data file the cell shows Omega Rugal.

    Without MSU-1, the ROM-resident roster is Kyo, Iori, Shingo, Terry, Benimaru, Daimon and Omega Rugal. Everything else needs the data file.

    Game modes

    Pick your fight

    Six modes, plus an attract demo and a sound test. Every match is best of three rounds.

    Single Play

    Arcade campaign. Fight your way through the roster and reach the ending.

    Single VS

    Two players, one screen. Classic local versus, best of three.

    Team Play 3v3

    Pick three fighters and take on the CPU in team elimination order.

    Team VS

    Two local teams of three. Build your order and settle it on the screen.

    Survivor

    Endless gauntlet with its own 13-still ending when MSU-1 data is present.

    Practice

    Command list in the pause menu, infinite meter, protected health, frozen clock and an idle CPU.

    Screenshots

    Running on 16-bit hardware

    Native 256×224 resolution. Click any shot to open it full size.

    MSU-1

    Two ways to play

    The optional MSU-1 data file unlocks the complete roster, streamed graphics and voices. The ROM alone still runs the core game.

    With MSU-1

    Full experience
    • All 50 entries available.
    • Character tiles streamed from the MSU-1 file.
    • Streamed voices and the 13-still Survivor ending.
    • The attract demo can pick from the full roster.
    • Music and SFX still come from SPC700/SNESMOD.

    ROM only

    Core game
    • ROM-resident roster: Kyo, Iori, Shingo, Terry, Benimaru, Daimon and Omega Rugal.
    • These characters keep their voices in the ROM.
    • Regular Rugal, Kyo variants and streamed guests are unavailable.
    • Attract demo and Survivor are limited; the ending falls back to the normal one.
    • Music, SFX, HUD, stages and the core fight still work.

    Controls

    Four buttons. No excuses.

    Direction + button combinations reproduce the classic MUGEN motions — QCF, QCB, DP, HCF, HCB, charge and double motions.

    Super Nintendo controller layout SNES controller with the Y, X, B and A face buttons, L and R shoulder buttons, D-pad, Select and Start. L R X Y B A SELECT START

    L = dodge · R = blowback · L+R = taunt. On the select screen, SELECT changes the AI level; in a fight it opens the pause menu.

    Button Action
    D-padWalk, crouch, jump
    YLight punch
    XStrong punch
    BLight kick
    AStrong kick
    LStanding dodge
    L + ←/→Back / forward roll
    RBlowback (CD)
    L + RTaunt
    STARTConfirm / advance menus. In Single or Team Play, START on the CPU side opens that side's character select.
    SELECTChanges the AI level on the select screen. During a fight, opens the pause menu (Continue / Command List / Exit).

    Under the hood

    Built with 65816 and stubbornness

    A hybrid PVSnesLib build with a hand-written assembly fighting engine, plus Python tools that convert MUGEN assets into compact tables.

    build.sh
    # requirements: PVSnesLib 4.6+, WLA-DX, Python 3
    make pvsnes PVSNESLIB_HOME=~/pvsneslib
    make pvsnes-verify PVSNESLIB_HOME=~/pvsneslib
    
    # output
    kof98-snes.sfc  # 64 megabit ROM
    kof98-snes.msu  # optional data (~222 megabit) — ROM+MSU-1 = 286 megabit

    Keep both files together for the full roster. Use only the .sfc to play without MSU-1.

    • src/engine/fight.asm The 65816 fighting engine core.
    • src/snes/fight_bridge.asm ASM bridge and memory map for the PVSnesLib build.
    • tools/build_fight.py Converts SFF/AIR/CNS/CMD into compact tables.
    • tools/build_stages.py + tools/build_audio.py Stage and audio conversion.
    • docs/ Technical docs, move lists and validation reports.

    Credits

    Standing on the shoulders of legends

    This port would not exist without the people who extracted and shared these assets over the years. Their names greet you on the very first screen of the game.

    THANKS FOR

    IKARUGA, ZELGADIS,
    NEOGOUKI, OHGAKI, M.M.R.,
    AHURON, LE@N, MDK, JUANXOC,
    TESTP, JERZY, 119WAY,
    FERVICANTE, KAMRANBERNSTEIN,
    KOOPAKOOT, SANDER71113, EHNYD,
    MOUSER, H", VICE, BRAZOMBIE,
    GONZO-, JIN, J.LEE

    Thank you also to the MUGEN community, the PVSnesLib and WLA-DX maintainers, the SNES/SPC700 scene, and the emulator developers at Snes9x, Mesen and bsnes.

    If I forgot anyone, please let me know — the credit belongs to you.

    Bug tracker

    Found a bug? Report it here

    Describe the bug you found in the game — the character, the mode, the move and what happened. Your report goes straight to the public list below and helps shape the next fixes.

    Describe the bug

    Reported bugs

    Download

    Ready to fight?

    Grab the latest build from GitHub Releases. 286 megabit total (ROM + MSU-1): download the ROM and the optional MSU-1 data if you want the full roster and streamed extras.

    Open GitHub Releases kof98-snes.sfc + kof98-snes.msu

    Fan project, unofficial and non-commercial. The King of Fighters, SNK, Street Fighter and Capcom characters belong to their respective owners.