🐸Battletoads🐸 - It's Stompin Time!
Please watch the video above for details
⚡ tl;dr
📦 Loads from the standard MAME ROM
🎮 3-player support, named controls, all 8 DIP switches
To be able to choose which character you want to play as, disable "3 Player" in dip switch settings.
🔊 True stereo sound
💾 High scores are saved
⏸️ Optional OSD Pause
🖥️ More scaling modes, scanlines and CRT Adjust settings
🎮DIP switch settings
📺 Native 15.6 kHz / 60.8 Hz raster
🐛 Player-under-enemies sprite bugs fixed
🐛 Cut-off HUD icons and static screens fixed
🐛 HDMI sync dropouts fixed
Credit first
srg320 wrote the original core in April 2023: the TMS34020 graphics CPU, the blitter and the BSMT2000 sound. Everything below is built on that work.
The original was a proof of concept. It needed a hand-made ROM setup, had no real platform features, and didn’t fit comfortably on the FPGA.
🎮 Loads and plays like a proper arcade core
Standard MRA and MAME ROMs. Runs on the unmodified MAME 0.289 btoads.zip. No extracted ROM files and no extra ZIPs.
Safe loading. Both CPUs are held in reset until the whole 8 MiB program, samples and Z80 code are written. I checked every payload byte against an independent MAME layout.
Controls named for what they do: Attack, Jump, Coin, Start, Service Menu, Pause. Players 2 and 3 were fixed, and all three players can use service and pause.
All eight DIP switches are in the OSD, including Three Players (on by default) and Free Play.
True stereo by default. MAME’s “Stereo” DIP label has its polarity reversed, which makes its default sound near-mono. The core’s default gives real stereo.
💾 High scores that stick
The cabinet’s 8 KB NVRAM now saves and restores, so high scores and service settings survive.
It auto-saves when you open the OSD after a change. The CPU pauses for the save and the video keeps running.
OSD Pause (optional, off by default) halts the game while the menu is open.
🖥️ Video options
Scaling modes: V-Integer and HV-Integer variants.
2x line doubling and CRT scanline effects.
CRT Adjust for analog and direct video: H-size, H-position and V-shift.
A steady 10 MHz pixel clock gives 15.625 kHz × 60.8 Hz native timing, a 640×257 raster.
🐛 Real bugs found and fixed
Player drawn under enemies. The TMS34020’s “find rightmost one” instruction returned the wrong bit number, which silently switched off the game’s sprite depth-sorting.
Cut-off HUD icons and static screens. The per-frame clear of the foreground page was too slow and the page flip landed after the picture had started. Writing it in 64-bit bursts brings the flip back into vertical blank.
Lost display sync. At boot the game clears the display-enable bit mid-frame, and the old core stopped all sync output. That is why the HDMI scaler dropped the signal.
⚙️ Making it fit and run fast
Memory. RAM-block use went from 541 to about 86% of the chip, which was over the safe limit.
Timing closure. The core runs at 80 MHz system and 160 MHz memory clocks, and the chip’s timing checks now all pass. That took a lot of restructuring of the CPU and foreground-graphics paths, then sweeps over many placement seeds, weeks of work. The release RBF is checked at all four timing corners with zero unconstrained paths.
Cleanup. The framework is updated to the current mister framework Template, with CPU sources bundled into the project.
Gameplay from boot
👾Join the Slop Goblins in the Slop Hub on Discord!
How to install
Get downloader_meatcores.ini below and place it in your mister SD card root folder, right next to downloader.ini
Run Update_All then load the games from Arcade/Meatcores
To update Meatcores and get any new games just run Update_All again
If you have downloader_meatcores.ini already just run Update_All then load the games from Arcade/Meatcores
Comments (11)
Still some bugs to iron out in this core
Nice one mate, happy to see this! Thanks! =)
Would it be possible to add an OSD option to choose which character (Toad) each player controls before starting the game, similar to the player/character selection options in Jotego’s X-Men, TMNT, and The Simpsons cores?
Ill take a look, see if I can put in a simple hack,to enable player selection in 3 player, for now disable 3 player in dip switches to enable character selection Although even breathing on this core wrong sets it off into a week of work trying to piece it back together.. I don't know why but this core is put together like its a skyscrapper build out of toothpicks
Love to throw the enemy out the screen, like TMNT in time.. lol
More Meat than I get on my Sunday dinner , thanks bud .
MeatToads are here.
Epic meatcore mate
🥩♥️👍
Very Meaty this Sunday morning! 🥩 Thank you MiSTer Meaty! 🙏
epic release bro
