Make ExecOnChange only call the update functions if the value changed
Fixup sound
Improve primitives
Massive mess with UI controls

new Control superclass
all controls handle their own mouse/keyboard events
you have to set enabled = True on a control before it takes any mouse/keyboard input and set it to False to stop it
fixed MessageBox position
probably broke loads of stuff
Minor code stye tweaks
Actually fix character sprite sheet location
Use a DropDownList for resolution option
walrus
Kill MessageBox.update()