Front End
OS X application Fullscreen
In Setup() set screen size to fill screen:
Add hiding of chrome at end of scripts:
frame.setUndecorated(true);
super.init();
}
Export as application and show app's package contents. Edit Info.plist file. Add after first <dict>
node, insert:
<integer>4</integer>
This will hide the menubar and dock when app launches. Be sure that it goes in alphabetical order, otherwise it won't work (i.e. LSUIPresentationMode goes after LSMinimumSystemVersion but before NSAppleScriptEnabled). (NOTE: this may be automatically included on export from Processing 1.0)
Also add this to any Emus so that the titlebar and dock to not show when they launch (otherwise they will for a split second).
Graphics Modes
Default graphics are slow when bigger than 800x600. Mostly because of image manipulation.
P3D graphics are faster with images and at larger sizes, but lack smoothing (using it now)
OPENGL has issues with zindexing (seems buggy, ignore)
P2D will be the best choice when it's complete, switch when Processing supports it.
SVG
When using SVG, you must import both the candy library and the xml library. Processing needs the xml library so that exported apps can use SVG:
import processing.xml.*;
SVG's need to be made in Illustrator, save for web and make sure "Presentation Attributes" is set. (NOTE: Candy and XML should now be included by default into Processing 1.0)
Prefs
Prefs are in XML, and store all info about each console and whatever else could be included. Looks like:
<console>
<name>2600</name>
<ext>a26</ext>
<rompath>/volumes/Zen/Applications/ces/roms/2600/</rompath>
<screenpath>/volumes/Zen/Applications/ces/screenshots/2600/</screenpath>
<color red="195" green="39" blue="39"/>
<meta>Atari 2600
1977, 8-bit
1 Button</meta>
</console>
</consoles>
Still needs an node for image extension, as well as root paths, etc possibly. Try to move as much to this as possible to limit hard coding. Also think about storing in user prefs folder like other prefs are. The unicode in is for newlines.
Keyboard Mappings
Taken from BSNES emu, as Bannisters defaults will work best for most games (also use for configuring ControllerMate). Mappings go "Controller - Keybaord - CES"
Player 1
Up - UP - Game List Up
Down - DOWN - Game List Down
Left - LEFT - Game List Page Up
Right - RIGHT - Game List Page Down
A - C (change in emus)
B - Opt
X (C) - Ctrl
Y - Shift
Select - Cmd (change in emus)
Start - Q - Start Game (change in emus)
L Button - Z - Previous System
R Button - X - Next System
Player 2
Up - Num 8
Down - Num 2
Left - Num 4
Right - Num 6
A - Home
B - Page Up
X (C) - End
Y - Page Down
Select - Num +
Start - Num Enter
L Button - Num 0
R Button - Num .