I ported FCEUltra to PS2 to play a couple NES games on a TV in a different room for the holiday season. I have an autistic brother who loves Megaman, heh.
The built-in game genie rom support works if you put the game genie rom as gg.rom. I haven't used any codes, so I'm not sure if they actually work on the PS2.
Some notes about the source code:
The original project source code that I ported is at sourceforge.net/projects/fceumm. It's a mapper modded version, which supports the most mappers of any FCEUltra version, I think. I tried to make as little change as possible, so using a diff utility won't be too much trouble to see the changes I made. From what I can remember:
I had to remove support from gzip compressed nes roms because of a reference to dup() which wasn't supported and it was over my head on how to implement a similar function.
Instructions for use:
Menu Input:
Select opens/closes Config Menu
Start is used to save the savepath or set the screen center.

Confirm

Cancel

Browse up one directory.
The emulator now uses a FCEUltra.cnf fie that stores the settings for the emulator
Both the digital pad and analog stick can be used for movement.
By default:

is A.

is B.

opens the ingame menu.
Select is Select.
Start is Start.
L3 is used for swapping FDS disks.
R3 is used for swapping FDS sides.
L2 loads savestate
R2 saves savestate
You can use the in-game menu to select your savestate number.
2 controllers should work, I haven't tested it myself, still.
The FCEUltra.cnf file should be in mc0:/FCEUMM/ so "mc0:/FCEUMM/FCEUltra.cnf".
Code:
# FCEULTRA.CNF == Configuration file for the emulator FCEUltra
# CNF Handling Code (c)2006 Ronald Andersson aka dlanor
# ------------------------------------------------------------
OffsetX = 0
OffsetY = 0
ButtonSwitch = 0
Display = 0
Emulation = 0
Interlace = 0
Volume = 50
LowPass = 0
Turbo = 0
Savepath = mc0:/FCEUMM/
Elfpath = mc0:/BOOT/BOOT.ELF
# ------------------------------------------------------------
# End-Of-File for FCEUltra.CNF
input1.cnf/input2.cnf
Code:
;Default configuration
JOY_Menu = TRIANGLE
JOY_SaveState = R2
JOY_LoadState = L2
JOY_FDS_DiskSwap = R3
JOY_FDS_SideSwap = L3
JOY_A = CROSS
JOY_B = SQUARE
JOY_Select = SELECT
JOY_Start = START
JOY_Up = UP
JOY_Down = DOWN
JOY_Left = LEFT
JOY_Right = RIGHT
You can also use hex numbers that correspond to different buttons on the controller (taken from libpad.h):
Code:
LEFT 0x0080
DOWN 0x0040
RIGHT 0x0020
UP 0x0010
START 0x0008
R3 0x0004
L3 0x0002
SELECT 0x0001
SQUARE 0x8000
CROSS 0x4000
CIRCLE 0x2000
TRIANGLE 0x1000
R1 0x0800
L1 0x0400
R2 0x0200
L2 0x0100
If you want button combinations you can add them together in hex mode: e.g. select + square would be 0x8000 + 0x0001 = 0x8001. R1 + L1 would be 0x0800 + 0x0400 = 0x0C00.
For skins or color schemes:
Code:
# SKIN.CNF == Skin configuration file for the emulator FCEUltra
# CNF Handling Code (c)2006 Ronald Andersson aka dlanor
# -------------------------------------------------------------
FrameColor = 0x80FFFFFF
TextColor = 0x80FFFFFF
Highlight = 0x80408080
BGColor1 = 0x80000080
BGColor2 = 0x80000000
BGColor3 = 0x80000000
BGColor4 = 0x80000080
BGTexture = mc0:/FCEUMM/back.png
BGMenu = mc0:/FCEUMM/menu.png
# -------------------------------------------------------------
# End-Of-File for SKIN.CNF
You can define colors in... I think it's RRGGBBAA format. PNG/JPG textures are supported as well. The BGColors are applied to each corner in this order: top-left, top-right, bottom-left, bottom-right.
Thanks:
cah4e3 for making a version of FCEUltra with extra mapper support.
DCGrendel for providing a space to host my homebrew and helping me with various logic errors I had.
The entire ps2dev/ps2-scene community for PS2SDK, gsKit, and various other projects I utilized when porting FCEUltra, especially dlanor for his help and providing uLaunchelf's code as an example from which to work.
Latest release
here.
Attached is the cleaned core code for FCEUltra. It doesn't have any ps2-related code as of this second since the port is in middle of a rewrite.