Logo by p0p

Download the latest Minimon 2005:01:20 Binary|Source


Minimon has moved to opensource! Feel free to download the source (GPL) and submit changes to the forums. Patchs might be committed to the next major release. I hope to have a CVS server running soon.


A robust, interactive debugger, with symbol, break and watch points.
Extremely accurate LCD emulation, comparable to just about any emulator out there!
A tile viewer, supporting tile set, sprite set, map viewer and OAM viewer
Force feedback for rumble emulation
Very nice audio output with minimal aproximation (the PM has a 4MHZ sampling rate!)

System Requirements

Minimum CPU : 400mhz celeron (for full speed) 300mhz celeron (85~95% speed)
Memory: 10MB available
Gamepad with Force Feedback (recommended)
Audio card supporting a 44100hz sampling rate
16 or 32bpp video. (800x600 recommended)

Sodateyasan FAQ provided by Titney.


Status Details
CPU 77% All known opcodes as of mindx v13b darkfader revision, and exception jumps/calls.
LCD 80% Performs all known LCD operations
VPU 95% Supports all tile modes, sprites, and scrolling. 4 bits of sprite flags are still unknown. I trust there is still a lot I do not know.
Audio 50% Added the audio, but the memory map allows for another channel. Might have been scrapped!
Input 100% Completed. Everything can be mapped, including the menu buttons. (Need custom inputmap tags)
GUI 100% Fully functional
Externals 75% Preliminary EEPROM emulation (8k), RTC and Rumble. No IR support.

Notes about the emulator

Special thanks goes out to:

DaveX: For his copious works on the CPU and extra hardware
JustBurn: Lots of clues about the VPU before I started minimon, and his opcode timing chart. Download his OPEN-SOURCE emulator
p0p: Lots of support and feature requests
lameboy: For your tireless efforts to get this to run on your antiquated computer
Everyone in #pmdev for your work on the system, and everyone else for your interest in the system

It would also appear that the enable counting bits on timers are backwards. I know I do not use the scalar values, but I do not want to look into JustBurns source and be accused of stealing, maybe if we were on better terms, we could work out an agreement. Anywho.. I'll get this all figured out soon. Hopefully p0p gets me a flash cart soon.

There are some known issues when running on archaic versions of windows (98 and prior), I do not know why, but these issues seem almost completely unresolvable.

Change log

2005:01:20 Moved to GPL, making minimon a public project!
2005:01:18 Fixed a problem with the default config file causing people with smaller desktops to not be able to use the emulator. Works now.
Moved to scalar timers, with huge thanks to JustBurn. Works great now. They are sped up from what he recommended I use.
2005:01:11 Fixed a problem with the updater, not letting people grab updates from the site. (requires HTTP/1.2 or something like that), fixed now.
2004:12:17 Internalized the Bios image (bios.min no longer required)
Fixed Celebi (CPU was underclocked too far)
Games actually produce rumble effects now (Cart IRQ 9) I don't know if this fires enough or not
Altered the IRQ code to be more intelligent
2004:12:06 Turns out that RTC was already emulated, and I just did not know! The RTC is simply the second counter. Go figure. I've patched it so that the initial state is consistant with the clock being set.
2004:11:23 Auto updater now works properly
Auto-updater is now just an update notifier.
Cleaned up the auto-updater, and added additional code to allow for large change-logs (>2k).
Fixed a bug in the auto update feature (was displaying the date wrong)
Added an Auto-Update feature... Since I release patches so frequently.
2004:11:22 Minimon now remembers if emulated gray is set.
Added New video filters, HQ2X - HQ4X, an interlaced mode (32bpp modes only)
Support for non-flickering grey emulation
Added a 'throttle' command, new inputmap added
2004:11:12 Fixed non-masked 16bpp modes
Fixed a bug with the 'enable' / 'disable', caused the developer view to start very small.
Added the ability to disable LCD mask filtering
Removed Timer 0 IRQ execution (causes Pichu Bros to lock)
Added a Emulation speed counter to the title bar (so people with slow computers, <~300mhz can tell how fast the emulator is running.
Config now remembers the last rom you loaded (so you can have your roms stored else where), if the debugger was enabled, and the LCD size
added [-1,-2,-3,-4] to the command line, changes the LCD size on boot (gui disabled only)
Rewrote the VPU core... over 2x faster now.
Added an IRQ prediction routine that helps reduce load when the virtual CPU is stalled.
Added a simple command line interface... minimon.exe [-r] [-d] romname Romname autoloads a rom... -r auto starts the emulator... -d disables the debugger.
Moved offscreen frame buffer to system memory, caused a HUGE performance increase on my PC (dropped the LCD blitter from #1 on the optomize list to #5)
2004:11:08 Added version revisions w/new title bar.
Optomized some (now it's a little more than 100% faster). You can thank intel VTune for that one.
Fixed a bug in the gradient tag processing (colors are better now)
Added a fill tag to the palette, so people can do JB style palettes (note, it's a 33%:66% blur ratio, not 50:50, so it does not look quite right). The palette in the config shows how to use the new tag, it also provides a much better palette (sharper color)
Did some more hacking on the pokemon channel emulator, and discovered that when the U and V registers are not equal, IRQs cannot occur. This appears to have solved the mysterious 'Game crash ahoy'! problem.
Changed IRQ functions to a queue system, which presumably is how the actual system works
Removed emulation loop audio, since it was underrunning way too often. I don't know if this is a problem with DirectSound, or what, but it turns out that it's way too hard to sync. I moved to a threaded notification system that breaks the audio down into segments. It is a little less accurate, but a lot more reasonable. (Also allows me to filter the audio)
2004:11:02 Added support to disable the audio completely
Is the emulation buffer underflows, the system with throttle it to catch up. If audio sounds bad, it's because your system can not keep up.
Now supports the ability to assemble instructions in place (minimon assembly syntax)
Debugger can now alter ROM.
Moved waveform generation to be generated by the execution loop. This makes audio output a LOT more accurate and responcive. Also, since audio has to be locked less frequently now (~1/10th the time), it should also release some load from the CPU!
2004:10:29 Double clicking in next to an opcode now allows users to add a breakpoint
Double clicking a branch address left moves the disassembler to that address, double right sets a break point at that address, double clicking on a memory address used opens up the 'edit memory' dialog.
Added the ability to jump to ambiguous locations in the disassembler. (Current page only)
Moved to floating point frequency conversion. Makes the frequencies more accurate, but the audio can sound staticy at times (especially on high frequencies).
Double clicking right deletes a watchpoint in the list
Double clicking the memory viewer allows you to change values and set watch points
Double clicking a watchpoint now allows you to change it's value
You can now save and add symbols
Fixed a problem where changing the minx settings prevented the primary window from receving keypresses.
Added the ability to delete symbols / breakpoints / watches individually.
2004:10:25 Added audio output and timer1 IRQ
Fixed 12 bytes of waste on eeproms (not really needed)
Added timers 0-2, but I do not know how their IRQs occur, or when they do.
Fixed a problem with new eeproms inheriting saves from the last game loaded.
2004:10:22 Fixed a minor problem with analog inputs
Fixed break on BIOS IRQ
The emulator now idles when it is inactive.
Fixed the input core to supports most all sliders, and one POV hat. This is 'typical' for most joysticks, more will just slow the emulation down.
Added the rumble support core
Added support to do specific resizes of the LCD window (non-debug mode)
Emulation / Input processing no longer happens if the primary window is inactive
Sync no longer 'catches up' if the emulation lags behind
The error console no longer automatically pops up, you must open it manually
2004:10:21 Fixed a a problem with the packed color creation that caused 16BPP colors to lose their blue values
Added a function to disable the debuggers and make the LCD extend the entire window.
2004:10:20 Fixed a problem with the LCD code in 16bpp color, was causing the screen to be double wide
Fixed a minor problem with EEPROMs not getting saved when you quit the emulator, rather than load a new rom or close the current one.
New Palette and Input core in place.
Created an XML Configuration system
Did quite a bit of internal clean up (more is needed)
Made the LCD have a grid mask, so it looks more authentic
Moved to DirectDraw for the LCD view, this makes the video a lot cleaner. (24bpp modes not supported, only 32 and 16)
Altered EEPROM code to save a eeprom PER rom, rather than just to c:\eeprom.min
Added shock IRQ (not maskable by IE... this will eventually change)
Fixed a problem with BCD addition (carry at 0x99 not 0x100)
2004:10:15 Fixed BCD (was only adding the lower nybble
Fixed 16 bit addition (signs were getting clobbered)
Fixed prohibited map size, actually 24x16 (see togepi)
First version to run everything!
2004:10:14 Fixed a major issue with the IRQ code, so the hack has been removed.

Things left to do

Commentary needs to be displayed in the disassembler
Register editor

Compatibility (reflects next version)

Image Image Image Image
Zany Cards Pichu Bros. Mini Pokemon Party Mini Snorlax Lunchtime
Playable Playable Playable Playable
Image Image Image Image
Pokemon Puzzle Collection Pokemon Puzzle Collection 2 Pokemon Pinball Mini Togepi no Dai Bouken
Playable Playable Playable Playable
Image Image Image
Pokemon Race Mini Pokemon Shock Tetris Pokemon Sodateyasan Mini
Playable Corrupt saves Playable

Please note that I OWN all these games and do not promote piracy of the system in any form. Although the system is no longer in production Nintendo(tm) still owns all the rights and priviledges to the system and all it's properties. If you wish to play the games, please buy the system. If you wish to develop for this system, please use this emulator or the Pokemon Channel hack.

For Pokemon Mini Specifications, go to Pokemon Mini