Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Moving everything to Trunk in prep for Branch "helper app" Open Emu p…

…roject.

git-svn-id: https://openemu.svn.sourceforge.net/svnroot/openemu/Trunk@669 a16923d9-94c8-4a39-ae78-11df2d60a2ba
  • Loading branch information...
commit c143e774c7e8dafb44756338a47ff1bca7294a65 1 parent da2db54
@vade vade authored
Showing with 37,084 additions and 0 deletions.
  1. BIN  BSNES/BSNES.xcodeproj/TemplateIcon.icns
  2. +2,440 −0 BSNES/BSNES.xcodeproj/project.pbxproj
  3. +27 −0 BSNES/BSNESInterface.h
  4. +62 −0 BSNES/BSNESInterface.mm
  5. +7 −0 BSNES/BSNES_Prefix.pch
  6. +1,220 −0 BSNES/ControlsPreference.xib
  7. BIN  BSNES/English.lproj/InfoPlist.strings
  8. +45 −0 BSNES/Info.plist
  9. +32 −0 BSNES/SNESGameController.h
  10. +69 −0 BSNES/SNESGameController.mm
  11. +49 −0 BSNES/SNESGameEmu.h
  12. +323 −0 BSNES/SNESGameEmu.mm
  13. +32 −0 BSNES/SNESPreferenceViewController.h
  14. +58 −0 BSNES/SNESPreferenceViewController.mm
  15. BIN  BSNES/bsnes.icns
  16. +9 −0 BSNES/config.yaml
  17. +45 −0 BSNES/core/base.hpp
  18. +229 −0 BSNES/core/cartridge/cartridge.cpp
  19. +134 −0 BSNES/core/cartridge/cartridge.hpp
  20. +22 −0 BSNES/core/cartridge/gameboyheader.cpp
  21. +294 −0 BSNES/core/cartridge/header.cpp
  22. +3 −0  BSNES/core/cheat/cheat-inline.hpp
  23. +395 −0 BSNES/core/cheat/cheat.cpp
  24. +69 −0 BSNES/core/cheat/cheat.hpp
  25. +10 −0 BSNES/core/chip/bsx/bsx.cpp
  26. +71 −0 BSNES/core/chip/bsx/bsx.hpp
  27. +140 −0 BSNES/core/chip/bsx/bsx_base.cpp
  28. +97 −0 BSNES/core/chip/bsx/bsx_cart.cpp
  29. +119 −0 BSNES/core/chip/bsx/bsx_flash.cpp
  30. +16 −0 BSNES/core/chip/chip.hpp
  31. +210 −0 BSNES/core/chip/cx4/cx4.cpp
  32. +95 −0 BSNES/core/chip/cx4/cx4.hpp
  33. +187 −0 BSNES/core/chip/cx4/data.cpp
  34. +251 −0 BSNES/core/chip/cx4/functions.cpp
  35. +228 −0 BSNES/core/chip/cx4/oam.cpp
  36. +227 −0 BSNES/core/chip/cx4/opcodes.cpp
  37. +39 −0 BSNES/core/chip/cx4/serialization.cpp
  38. +83 −0 BSNES/core/chip/dsp1/dsp1.cpp
  39. +20 −0 BSNES/core/chip/dsp1/dsp1.hpp
  40. +1,625 −0 BSNES/core/chip/dsp1/dsp1emu.cpp
  41. +129 −0 BSNES/core/chip/dsp1/dsp1emu.hpp
  42. +56 −0 BSNES/core/chip/dsp1/serialization.cpp
  43. +149 −0 BSNES/core/chip/dsp2/dsp2.cpp
  44. +45 −0 BSNES/core/chip/dsp2/dsp2.hpp
  45. +177 −0 BSNES/core/chip/dsp2/opcodes.cpp
  46. +26 −0 BSNES/core/chip/dsp2/serialization.cpp
  47. +42 −0 BSNES/core/chip/dsp3/dsp3.cpp
  48. +12 −0 BSNES/core/chip/dsp3/dsp3.hpp
  49. +1,146 −0 BSNES/core/chip/dsp3/dsp3emu.c
  50. +62 −0 BSNES/core/chip/dsp4/dsp4.cpp
  51. +12 −0 BSNES/core/chip/dsp4/dsp4.hpp
  52. +2,150 −0 BSNES/core/chip/dsp4/dsp4emu.c
  53. +108 −0 BSNES/core/chip/dsp4/dsp4emu.h
  54. +84 −0 BSNES/core/chip/obc1/obc1.cpp
  55. +26 −0 BSNES/core/chip/obc1/obc1.hpp
  56. +9 −0 BSNES/core/chip/obc1/serialization.cpp
  57. +243 −0 BSNES/core/chip/sa1/bus/bus.cpp
  58. +45 −0 BSNES/core/chip/sa1/bus/bus.hpp
  59. +139 −0 BSNES/core/chip/sa1/dma/dma.cpp
  60. +11 −0 BSNES/core/chip/sa1/dma/dma.hpp
  61. +24 −0 BSNES/core/chip/sa1/memory/memory.cpp
  62. +5 −0 BSNES/core/chip/sa1/memory/memory.hpp
  63. +633 −0 BSNES/core/chip/sa1/mmio/mmio.cpp
  64. +256 −0 BSNES/core/chip/sa1/mmio/mmio.hpp
  65. +321 −0 BSNES/core/chip/sa1/sa1.cpp
  66. +37 −0 BSNES/core/chip/sa1/sa1.hpp
  67. +161 −0 BSNES/core/chip/sdd1/sdd1.cpp
  68. +41 −0 BSNES/core/chip/sdd1/sdd1.hpp
  69. +452 −0 BSNES/core/chip/sdd1/sdd1emu.cpp
  70. +164 −0 BSNES/core/chip/sdd1/sdd1emu.hpp
  71. +19 −0 BSNES/core/chip/sdd1/serialization.cpp
  72. +511 −0 BSNES/core/chip/spc7110/decomp.cpp
  73. +46 −0 BSNES/core/chip/spc7110/decomp.hpp
  74. +81 −0 BSNES/core/chip/spc7110/serialization.cpp
  75. +677 −0 BSNES/core/chip/spc7110/spc7110.cpp
  76. +136 −0 BSNES/core/chip/spc7110/spc7110.hpp
  77. +8 −0 BSNES/core/chip/srtc/serialization.cpp
  78. +233 −0 BSNES/core/chip/srtc/srtc.cpp
  79. +24 −0 BSNES/core/chip/srtc/srtc.hpp
  80. +7 −0 BSNES/core/chip/st010/serialization.cpp
  81. +95 −0 BSNES/core/chip/st010/st010.cpp
  82. +44 −0 BSNES/core/chip/st010/st010.hpp
  83. +126 −0 BSNES/core/chip/st010/st010_data.hpp
  84. +261 −0 BSNES/core/chip/st010/st010_op.cpp
  85. +20 −0 BSNES/core/chip/st011/st011.cpp
  86. +9 −0 BSNES/core/chip/st011/st011.hpp
  87. +124 −0 BSNES/core/chip/st018/st018.cpp
  88. +51 −0 BSNES/core/chip/st018/st018.hpp
  89. +106 −0 BSNES/core/chip/superfx/bus/bus.cpp
  90. +27 −0 BSNES/core/chip/superfx/bus/bus.hpp
  91. +107 −0 BSNES/core/chip/superfx/core/core.cpp
  92. +92 −0 BSNES/core/chip/superfx/core/core.hpp
  93. +270 −0 BSNES/core/chip/superfx/core/opcode_table.cpp
  94. +661 −0 BSNES/core/chip/superfx/core/opcodes.cpp
  95. +175 −0 BSNES/core/chip/superfx/core/registers.hpp
  96. +275 −0 BSNES/core/chip/superfx/disasm/disasm.cpp
  97. +5 −0 BSNES/core/chip/superfx/disasm/disasm.hpp
  98. +67 −0 BSNES/core/chip/superfx/memory/memory.cpp
  99. +9 −0 BSNES/core/chip/superfx/memory/memory.hpp
  100. +118 −0 BSNES/core/chip/superfx/mmio/mmio.cpp
  101. +2 −0  BSNES/core/chip/superfx/mmio/mmio.hpp
  102. +73 −0 BSNES/core/chip/superfx/superfx.cpp
  103. +24 −0 BSNES/core/chip/superfx/superfx.hpp
  104. +93 −0 BSNES/core/chip/superfx/timing/timing.cpp
  105. +19 −0 BSNES/core/chip/superfx/timing/timing.hpp
  106. +117 −0 BSNES/core/chip/supergameboy/supergameboy.cpp
  107. +37 −0 BSNES/core/chip/supergameboy/supergameboy.hpp
  108. +369 −0 BSNES/core/cpu/core/algorithms.cpp
  109. +74 −0 BSNES/core/cpu/core/core.cpp
  110. +219 −0 BSNES/core/cpu/core/core.hpp
  111. +479 −0 BSNES/core/cpu/core/disasm/disasm.cpp
  112. +30 −0 BSNES/core/cpu/core/disasm/disasm.hpp
  113. +77 −0 BSNES/core/cpu/core/memory.hpp
  114. +348 −0 BSNES/core/cpu/core/opcode_misc.cpp
  115. +177 −0 BSNES/core/cpu/core/opcode_pc.cpp
  116. +275 −0 BSNES/core/cpu/core/opcode_read.cpp
  117. +165 −0 BSNES/core/cpu/core/opcode_rmw.cpp
  118. +195 −0 BSNES/core/cpu/core/opcode_write.cpp
  119. +81 −0 BSNES/core/cpu/core/registers.hpp
  120. +36 −0 BSNES/core/cpu/core/serialization.cpp
  121. +312 −0 BSNES/core/cpu/core/table.cpp
  122. +25 −0 BSNES/core/cpu/cpu.cpp
  123. +23 −0 BSNES/core/cpu/cpu.hpp
  124. +34 −0 BSNES/core/cpu/scpu/debugger/debugger.cpp
  125. +6 −0 BSNES/core/cpu/scpu/debugger/debugger.hpp
  126. +272 −0 BSNES/core/cpu/scpu/dma/dma.cpp
  127. +71 −0 BSNES/core/cpu/scpu/dma/dma.hpp
  128. +35 −0 BSNES/core/cpu/scpu/memory/memory.cpp
  129. +16 −0 BSNES/core/cpu/scpu/memory/memory.hpp
  130. +537 −0 BSNES/core/cpu/scpu/mmio/mmio.cpp
  131. +71 −0 BSNES/core/cpu/scpu/mmio/mmio.hpp
  132. +113 −0 BSNES/core/cpu/scpu/scpu.cpp
  133. +106 −0 BSNES/core/cpu/scpu/scpu.hpp
  134. +105 −0 BSNES/core/cpu/scpu/serialization.cpp
  135. +35 −0 BSNES/core/cpu/scpu/timing/event.cpp
  136. +107 −0 BSNES/core/cpu/scpu/timing/irq.cpp
  137. +28 −0 BSNES/core/cpu/scpu/timing/joypad.cpp
  138. +172 −0 BSNES/core/cpu/scpu/timing/timing.cpp
  139. +40 −0 BSNES/core/cpu/scpu/timing/timing.hpp
  140. +9 −0 BSNES/core/data/bsnes.Manifest
  141. +8 −0 BSNES/core/data/bsnes.desktop
  142. BIN  BSNES/core/data/bsnes.ico
  143. BIN  BSNES/core/data/bsnes.png
  144. +81 −0 BSNES/core/data/documentation.html
  145. BIN  BSNES/core/data/icons-16x16/accessories-text-editor.png
  146. BIN  BSNES/core/data/icons-16x16/appointment-new.png
  147. BIN  BSNES/core/data/icons-16x16/document-new.png
  148. BIN  BSNES/core/data/icons-16x16/document-open.png
  149. BIN  BSNES/core/data/icons-16x16/folder-new.png
  150. BIN  BSNES/core/data/icons-16x16/help-browser.png
  151. BIN  BSNES/core/data/icons-16x16/image-x-generic.png
  152. BIN  BSNES/core/data/icons-16x16/input-gaming.png
  153. BIN  BSNES/core/data/icons-16x16/item-check-off.png
  154. BIN  BSNES/core/data/icons-16x16/item-check-on.png
  155. BIN  BSNES/core/data/icons-16x16/item-radio-off.png
  156. BIN  BSNES/core/data/icons-16x16/item-radio-on.png
  157. BIN  BSNES/core/data/icons-16x16/preferences-desktop.png
  158. BIN  BSNES/core/data/icons-16x16/process-stop.png
  159. BIN  BSNES/core/data/icons-16x16/system-file-manager.png
  160. BIN  BSNES/core/data/icons-16x16/system-search.png
  161. BIN  BSNES/core/data/icons-16x16/text-x-generic.png
  162. BIN  BSNES/core/data/icons-16x16/utilities-terminal.png
  163. BIN  BSNES/core/data/icons-16x16/video-display.png
  164. BIN  BSNES/core/data/icons-16x16/view-refresh.png
  165. BIN  BSNES/core/data/icons-22x22/accessories-text-editor.png
  166. BIN  BSNES/core/data/icons-22x22/audio-volume-high.png
  167. BIN  BSNES/core/data/icons-22x22/folder.png
  168. BIN  BSNES/core/data/icons-22x22/input-gaming.png
  169. BIN  BSNES/core/data/icons-22x22/preferences-system.png
  170. BIN  BSNES/core/data/icons-22x22/system-file-manager.png
  171. BIN  BSNES/core/data/icons-22x22/system-search.png
  172. BIN  BSNES/core/data/icons-22x22/video-display.png
  173. BIN  BSNES/core/data/joypad.png
  174. +77 −0 BSNES/core/data/license.html
  175. BIN  BSNES/core/data/logo.png
  176. +595 −0 BSNES/core/dsp/adsp/adsp.cpp
  177. +174 −0 BSNES/core/dsp/adsp/adsp.hpp
  178. +77 −0 BSNES/core/dsp/adsp/adsp_tables.cpp
  179. +12 −0 BSNES/core/dsp/dsp.hpp
  180. +62 −0 BSNES/core/dsp/sdsp/brr.cpp
  181. +52 −0 BSNES/core/dsp/sdsp/counter.cpp
  182. +3 −0  BSNES/core/dsp/sdsp/debugger/debugger.cpp
  183. +3 −0  BSNES/core/dsp/sdsp/debugger/debugger.hpp
  184. +135 −0 BSNES/core/dsp/sdsp/echo.cpp
  185. +62 −0 BSNES/core/dsp/sdsp/envelope.cpp
  186. +54 −0 BSNES/core/dsp/sdsp/gaussian.cpp
  187. +35 −0 BSNES/core/dsp/sdsp/misc.cpp
  188. +335 −0 BSNES/core/dsp/sdsp/sdsp.cpp
  189. +176 −0 BSNES/core/dsp/sdsp/sdsp.hpp
  190. +68 −0 BSNES/core/dsp/sdsp/serialization.cpp
  191. +174 −0 BSNES/core/dsp/sdsp/voice.cpp
  192. +35 −0 BSNES/core/interface.hpp
  193. +104 −0 BSNES/core/lib/libco/amd64.c
  194. +51 −0 BSNES/core/lib/libco/fiber.c
  195. +23 −0 BSNES/core/lib/libco/libco.c
  196. +34 −0 BSNES/core/lib/libco/libco.h
  197. +325 −0 BSNES/core/lib/libco/ppc-elf.c
  198. +478 −0 BSNES/core/lib/libco/ppc.s
  199. +513 −0 BSNES/core/lib/libco/ppc64.s
  200. +102 −0 BSNES/core/lib/libco/sjlj.c
  201. +67 −0 BSNES/core/lib/libco/ucontext.c
  202. +93 −0 BSNES/core/lib/libco/x86.c
  203. +23 −0 BSNES/core/lib/nall/algorithm.hpp
  204. +74 −0 BSNES/core/lib/nall/any.hpp
  205. +94 −0 BSNES/core/lib/nall/array.hpp
  206. +90 −0 BSNES/core/lib/nall/base64.hpp
  207. +51 −0 BSNES/core/lib/nall/bit.hpp
  208. +124 −0 BSNES/core/lib/nall/config.hpp
  209. +66 −0 BSNES/core/lib/nall/crc32.hpp
  210. +30 −0 BSNES/core/lib/nall/detect.hpp
  211. +73 −0 BSNES/core/lib/nall/dictionary.hpp
  212. +88 −0 BSNES/core/lib/nall/dl.hpp
  213. +38 −0 BSNES/core/lib/nall/endian.hpp
  214. +256 −0 BSNES/core/lib/nall/file.hpp
  215. +190 −0 BSNES/core/lib/nall/filemap.hpp
  216. +190 −0 BSNES/core/lib/nall/function.hpp
  217. +263 −0 BSNES/core/lib/nall/input.hpp
  218. +81 −0 BSNES/core/lib/nall/lzss.hpp
  219. +40 −0 BSNES/core/lib/nall/moduloarray.hpp
  220. +77 −0 BSNES/core/lib/nall/platform.hpp
  221. +106 −0 BSNES/core/lib/nall/priorityqueue.hpp
  222. +45 −0 BSNES/core/lib/nall/property.hpp
  223. +80 −0 BSNES/core/lib/nall/serial.hpp
  224. +120 −0 BSNES/core/lib/nall/serializer.hpp
  225. +143 −0 BSNES/core/lib/nall/sha256.hpp
  226. +62 −0 BSNES/core/lib/nall/sort.hpp
  227. +17 −0 BSNES/core/lib/nall/static.hpp
  228. +44 −0 BSNES/core/lib/nall/stdint.hpp
  229. +18 −0 BSNES/core/lib/nall/string.hpp
  230. +114 −0 BSNES/core/lib/nall/string/base.hpp
  231. +25 −0 BSNES/core/lib/nall/string/cast.hpp
  232. +100 −0 BSNES/core/lib/nall/string/compare.hpp
  233. +285 −0 BSNES/core/lib/nall/string/convert.hpp
  234. +109 −0 BSNES/core/lib/nall/string/core.hpp
  235. +48 −0 BSNES/core/lib/nall/string/filename.hpp
  236. +72 −0 BSNES/core/lib/nall/string/match.hpp
  237. +160 −0 BSNES/core/lib/nall/string/math.hpp
  238. +103 −0 BSNES/core/lib/nall/string/replace.hpp
  239. +56 −0 BSNES/core/lib/nall/string/split.hpp
  240. +48 −0 BSNES/core/lib/nall/string/strl.hpp
  241. +50 −0 BSNES/core/lib/nall/string/trim.hpp
  242. +75 −0 BSNES/core/lib/nall/string/utility.hpp
  243. +97 −0 BSNES/core/lib/nall/traits.hpp
  244. +190 −0 BSNES/core/lib/nall/ups.hpp
  245. +72 −0 BSNES/core/lib/nall/utf8.hpp
  246. +36 −0 BSNES/core/lib/nall/utility.hpp
  247. +92 −0 BSNES/core/lib/nall/varint.hpp
  248. +162 −0 BSNES/core/lib/nall/vector.hpp
  249. +23 −0 BSNES/core/lib/ruby/audio.hpp
  250. +223 −0 BSNES/core/lib/ruby/audio/alsa.cpp
  251. +94 −0 BSNES/core/lib/ruby/audio/ao.cpp
  252. +212 −0 BSNES/core/lib/ruby/audio/directsound.cpp
  253. +210 −0 BSNES/core/lib/ruby/audio/openal.cpp
  254. +113 −0 BSNES/core/lib/ruby/audio/oss.cpp
  255. +117 −0 BSNES/core/lib/ruby/audio/pulseaudio.cpp
  256. +22 −0 BSNES/core/lib/ruby/input.hpp
  257. +160 −0 BSNES/core/lib/ruby/input/carbon.cpp
  258. +388 −0 BSNES/core/lib/ruby/input/directinput.cpp
  259. +791 −0 BSNES/core/lib/ruby/input/rawinput.cpp
  260. +238 −0 BSNES/core/lib/ruby/input/sdl.cpp
  261. +59 −0 BSNES/core/lib/ruby/input/x.cpp
  262. +138 −0 BSNES/core/lib/ruby/input/xlibkeys.hpp
  263. +358 −0 BSNES/core/lib/ruby/ruby.cpp
  264. +109 −0 BSNES/core/lib/ruby/ruby.hpp
  265. +133 −0 BSNES/core/lib/ruby/ruby_audio.cpp
  266. +173 −0 BSNES/core/lib/ruby/ruby_impl.cpp
Sorry, we could not display the entire diff because too many files (3,038) changed.
View
BIN  BSNES/BSNES.xcodeproj/TemplateIcon.icns
Binary file not shown
View
2,440 BSNES/BSNES.xcodeproj/project.pbxproj
2,440 additions, 0 deletions not shown
View
27 BSNES/BSNESInterface.h
@@ -0,0 +1,27 @@
+/*
+ * BSNESInterface.h
+ * BSNES
+ *
+ * Created by Joshua Weinberg on 7/20/09.
+ * Copyright 2009 __MyCompanyName__. All rights reserved.
+ *
+ */
+#pragma once
+
+//#include <base.hpp>
+#include "system/interface/interface.hpp"
+#import "OERingBuffer.h"
+
+class BSNESInterface : public SNES::Interface {
+public:
+ void video_refresh(uint16_t *data, unsigned pitch, unsigned *line, unsigned width, unsigned height);
+ void audio_sample(uint16_t left, uint16_t right);
+ void input_poll();
+ int16_t input_poll(unsigned deviceid, unsigned id);
+ OERingBuffer *ringBuffer;
+ int width;
+ int height;
+ int pitch;
+ int16_t pad[2][12];
+ uint16_t *video;
+};
View
62 BSNES/BSNESInterface.mm
@@ -0,0 +1,62 @@
+#include <base.hpp>
+#include "BSNESInterface.h"
+
+void BSNESInterface::video_refresh(uint16_t *input, unsigned apitch, unsigned *line, unsigned awidth, unsigned aheight) {
+
+ width = awidth;
+ height = aheight;
+ pitch = apitch;
+
+
+ pitch >>= 1;
+
+ uint16_t *output = video;
+ for(unsigned y = 0; y < height; y++)
+ {
+ if(width == 512 && line[y] == 256)
+ {
+ for(unsigned x = 0; x < 256; x++)
+ {
+ uint16_t p = *input++;
+ *output++ = p;
+ *output++ = p;
+ }
+ input += 256;
+ }
+ else
+ {
+ for(unsigned x = 0; x < width; x++)
+ {
+ uint16_t p = *input++;
+ *output++ = p;
+ }
+ }
+ input += pitch - width;
+ output += pitch - width;
+ }
+}
+
+void BSNESInterface::audio_sample(uint16_t left, uint16_t right) {
+ // if(config.audio.mute) left = right = 0;
+ // audio.sample(left, right);
+ //printf("sampled");
+
+ [ringBuffer write:&left maxLength:2];
+ [ringBuffer write:&right maxLength:2];
+}
+
+void BSNESInterface::input_poll() {
+ // inputManager.poll();
+}
+
+int16_t BSNESInterface::input_poll(unsigned deviceid, unsigned a) {
+ //NSLog(@"polled input: device: %d id: %d", deviceid, id);
+ if (deviceid == SNES::Input::DeviceIDJoypad1) {
+ return pad[0][a];
+ }
+ else if(deviceid == SNES::Input::DeviceIDJoypad2) {
+ return pad[1][a];
+ }
+
+ return 0;//inputManager.getStatus(deviceid, id);
+}
View
7 BSNES/BSNES_Prefix.pch
@@ -0,0 +1,7 @@
+//
+// Prefix header for all source files of the 'BSNES' target in the 'BSNES' project.
+//
+
+#ifdef __OBJC__
+ #import <Cocoa/Cocoa.h>
+#endif
View
1,220 BSNES/ControlsPreference.xib
@@ -0,0 +1,1220 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
+ <data>
+ <int key="IBDocument.SystemTarget">1050</int>
+ <string key="IBDocument.SystemVersion">10A432</string>
+ <string key="IBDocument.InterfaceBuilderVersion">732</string>
+ <string key="IBDocument.AppKitVersion">1038</string>
+ <string key="IBDocument.HIToolboxVersion">437.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">732</string>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="1"/>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomObject" id="1001">
+ <string key="NSClassName">SNESPreferenceViewController</string>
+ </object>
+ <object class="NSCustomObject" id="1003">
+ <string key="NSClassName">FirstResponder</string>
+ </object>
+ <object class="NSCustomObject" id="1004">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSCustomView" id="1005">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">268</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextField" id="962050357">
+ <reference key="NSNextResponder" ref="1005"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{17, 240}, {84, 17}}</string>
+ <reference key="NSSuperview" ref="1005"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="434022868">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">Show player:</string>
+ <object class="NSFont" key="NSSupport" id="131575409">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">1044</int>
+ </object>
+ <reference key="NSControlView" ref="962050357"/>
+ <object class="NSColor" key="NSBackgroundColor" id="1038796712">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="630467324">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlTextColor</string>
+ <object class="NSColor" key="NSColor" id="143259541">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MAA</bytes>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSTextField" id="787072964">
+ <reference key="NSNextResponder" ref="1005"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{106, 238}, {36, 22}}</string>
+ <reference key="NSSuperview" ref="1005"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="351839748">
+ <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags2">-1874852864</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="131575409"/>
+ <object class="NSNumberFormatter" key="NSFormatter" id="971412454">
+ <object class="NSMutableDictionary" key="NS.attributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>allowsFloats</string>
+ <string>formatterBehavior</string>
+ <string>locale</string>
+ <string>maximum</string>
+ <string>maximumIntegerDigits</string>
+ <string>minimum</string>
+ <string>minimumIntegerDigits</string>
+ <string>roundingIncrement</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <boolean value="NO"/>
+ <integer value="1040"/>
+ <object class="NSLocale">
+ <string key="NS.identifier"/>
+ </object>
+ <real value="8"/>
+ <integer value="1"/>
+ <real value="1"/>
+ <integer value="1"/>
+ <real value="1"/>
+ </object>
+ </object>
+ <string key="NS.positiveformat">#1</string>
+ <string key="NS.negativeformat">#1</string>
+ <nil key="NS.positiveattrs"/>
+ <nil key="NS.negativeattrs"/>
+ <nil key="NS.zero"/>
+ <nil key="NS.nil"/>
+ <object class="NSAttributedString" key="NS.nan">
+ <string key="NSString">NaN</string>
+ <object class="NSDictionary" key="NSAttributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ </object>
+ <real value="1" key="NS.min"/>
+ <real value="8" key="NS.max"/>
+ <object class="NSDecimalNumberHandler" key="NS.rounding">
+ <int key="NS.roundingmode">3</int>
+ <bool key="NS.raise.overflow">YES</bool>
+ <bool key="NS.raise.underflow">YES</bool>
+ <bool key="NS.raise.dividebyzero">YES</bool>
+ </object>
+ <string key="NS.decimal">.</string>
+ <string key="NS.thousand">,</string>
+ <bool key="NS.hasthousands">NO</bool>
+ <bool key="NS.localized">NO</bool>
+ <bool key="NS.allowsfloats">NO</bool>
+ </object>
+ <reference key="NSControlView" ref="787072964"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textBackgroundColor</string>
+ <object class="NSColor" key="NSColor" id="637919909">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MQA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textColor</string>
+ <reference key="NSColor" ref="143259541"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSStepper" id="1059944598">
+ <reference key="NSNextResponder" ref="1005"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{147, 235}, {19, 27}}</string>
+ <reference key="NSSuperview" ref="1005"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSStepperCell" key="NSCell" id="557018">
+ <int key="NSCellFlags">654848</int>
+ <int key="NSCellFlags2">0</int>
+ <reference key="NSControlView" ref="1059944598"/>
+ <double key="NSValue">1</double>
+ <double key="NSMinValue">1</double>
+ <double key="NSMaxValue">8</double>
+ <double key="NSIncrement">1</double>
+ <bool key="NSValueWraps">YES</bool>
+ </object>
+ </object>
+ <object class="NSTextField" id="179577599">
+ <reference key="NSNextResponder" ref="1005"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{168, 240}, {101, 17}}</string>
+ <reference key="NSSuperview" ref="1005"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="965444743">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">Show bindings:</string>
+ <reference key="NSSupport" ref="131575409"/>
+ <reference key="NSControlView" ref="179577599"/>
+ <reference key="NSBackgroundColor" ref="1038796712"/>
+ <reference key="NSTextColor" ref="630467324"/>
+ </object>
+ </object>
+ <object class="NSMatrix" id="36752993">
+ <reference key="NSNextResponder" ref="1005"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{274, 239}, {168, 18}}</string>
+ <reference key="NSSuperview" ref="1005"/>
+ <bool key="NSEnabled">YES</bool>
+ <int key="NSNumRows">1</int>
+ <int key="NSNumCols">2</int>
+ <object class="NSMutableArray" key="NSCells">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSButtonCell" id="893370307">
+ <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Keyboard</string>
+ <reference key="NSSupport" ref="131575409"/>
+ <reference key="NSControlView" ref="36752993"/>
+ <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags2">0</int>
+ <object class="NSButtonImageSource" key="NSAlternateImage" id="1039409395">
+ <string key="NSImageName">NSRadioButton</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ <object class="NSButtonCell" id="554711082">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Gamepad</string>
+ <reference key="NSSupport" ref="131575409"/>
+ <reference key="NSControlView" ref="36752993"/>
+ <int key="NSTag">1</int>
+ <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags2">0</int>
+ <object class="NSImage" key="NSNormalImage">
+ <int key="NSImageFlags">549453824</int>
+ <string key="NSSize">{18, 18}</string>
+ <object class="NSMutableArray" key="NSReps">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="0"/>
+ <object class="NSBitmapImageRep">
+ <object class="NSData" key="NSTIFFRepresentation">
+ <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
+IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
+29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
+dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
+AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
+AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
+0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
+7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
+5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
+3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
+AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
+AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
+6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
+/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
+///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
+YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
+AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
+AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
+AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB
+AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
+AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
+AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAABEgAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAARIGFw
+cGwCAAAAbW50clJHQiBYWVogB9kABQANAAAAOwAMYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAPbWAAEAAAAA0y1hcHBsvQkfoRizoa3hZ+SMa9pbkwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA
+AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAYSbmRpbgAA
+B+wAAAY+ZGVzYwAADiwAAABkZHNjbQAADpAAAAJCbW1vZAAAENQAAAAoY3BydAAAEPwAAAAkWFlaIAAA
+AAAAAGVxAAA6MQAACZZYWVogAAAAAAAAaloAAK9yAAAa+VhZWiAAAAAAAAAnCwAAFncAAK6WWFlaIAAA
+AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1
+cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD
+AQAAAgAAACEAcgDsAYICNQMBA/0FJAZqB84JXwsFDNYOxBDCEtwU8hczGWQbpx3qICsiciSnJuEpDys6
+LUcvNjEdMwc07jbSOLI6jDxZPiE/5kGeQ1JE/UadSDdJyktZTNROVU/CUTJSmVP7VVlWulgOWV9asFv0
+XTRecl+mYN5iEWNGZHNlnWbCZ+ZpCmopa0ZsXm12bo1voHCvcb9y0HPhdPF2AHcOeB55MHo2exl77nzC
+fZZ+cX9IgCKA/YHagruDnoSAhWmGU4c/iC+JIYoWiw2MBYz/jf2O/o//kQGSA5MGlAaU+5XilsaXq5iS
+mXeaYptRnD6dLZ4enxCgBKD4oeyi4KPVpMeluqawp52ojal8qmyrV6xArSiuD67+sACxB7ILsw60DbUM
+tgu3B7f/uPS56breu9C8wb2wvp+/isB3wWbCVcNExDXFJcYYxw3IAsj4yenKwMuIzEzNDs3PzpDPT9AO
+0MnRhNI/0vnTr9Rm1R3V09aL10LX+Nit2WLaGNrP24bcPdz03bDeZd8M35ngJOCt4TnhxuJU4uPjdeQH
+5JjlLOXA5lPm5ud56Azon+ky6cTqU+rj63TsBeyT7SHtr+477sXvUu/g8Grw8/F68gLyjPMW86D0KPSu
+9TL1tfYv9qL3Dfdm9774C/hF+H74uPjx+WT53vrU/H3+i///AAAAJAB8AQIBkAJAAxQD/gUjBlwHuQk7
+CtIMiw5jEEoSOhRCFloYfRqhHMce7iEeI0slZCeEKZQrcy0kLsgwcTIaM8I1aTcOOKo6QjvaPW0+/ECI
+Qg1Di0UFRnxH50lWSrVMFE1uTsNQFlFqUrJT91U9VnZXr1jjWhNbRFxtXZtew1/mYQZiJGNDZF9leGaO
+Z6VovGnPauFr820Ibh5vMnBKcVxydnOQdKF1iHZldzx4F3j1edN6sXuRfHB9Vn46fx6ABIDsgdaCwIOr
+hJaFgoZuh1qISIk3iiWLEov/jOuN1Y6/j6OQh5FsklKTN5QflQqV85bel8qYtpmkmpGbf5xsnVmeRZ8y
+oB+hCqH0ouCjzaS0pZumhKdoqFqpZqp7q4ismq2krq2vvbDFscyyzrPRtNa12LbZt9m427nYutm73rzh
+vea+77/1wQDCDcMbxCrFL8YdxvnHz8ikyXrKUcspzADM1s2szoPPWtAv0QPR19Kr03/UU9Ul1fTWv9eN
+2FrZJtnw2rjbgtxI3Qfdtt5k3xHfwOBv4R/hzeJ64ynj1+SD5S7l1uZ95yTnyehu6RHpsOpR6vHrjuwq
+7MbtYe377pHvKO/C8Fjw7PF/8hLyqPM+89L0YvTx9YH2EPae9yT3nPgY+KD5MfnU+pH7Z/xj/YT+m/8g
+/1j/j//H//8AAAAVAEoAmQEBAXEB9QKOAzwEAATbBdMG2wgACSwKdwvHDSUOig/6EXES5RRZFcsXOBik
+GgobZxy+HgsfUCCYId8jJyRqJakm4ygbKU8qfiurLNIt9i8WMDIxSzJWM2c0cDV3Nnw3fDh6OXk6cjto
+PGU9ZD5mP2ZAX0FaQlJDTERBRTNGIUcQSABI7knZSsNLrkyYTYBOZk9PUDhRJFIOUvlT5FTQVb5WpFd6
+WEpZFVniWrFbgFxPXRxd6l66X4lgVmElYfRiwmORZGBlLGX5ZsZnkWhfaSxp+GrDa41sVm0bbdVuhm8w
+b9lwgnEmcc1ydXMac790ZXUJda92VXb6d6F4SXjyeZt6SHr1e6N8U30Gfbp+bX8kf9uAlYFTgg+CzIOK
+hESFAIW+hnuHN4fziK+JbYoqiueLpIxijR6N246bj1qQG5DbkZuSXpMhk+SUqJVrljSXApfRmJ+Zb5pA
+mxOb5Zy3nYueYp85oBGg6qHFoqGjgqRkpUWmJ6cJp+2o06m6qqGriKx0rV6uSa83sCOxD7IAsvKz47TZ
+tc22w7e3uLS5q7qlu6C8m72Yvpe/k8CNwYrCh8OGxIDFecZ1x3DIZslmynrLk8ynzbbOus/B0MHRwNLJ
+09XU3dXz1xrYStmD2sjcM92u30rhBeLm5PrnYuoP7S/w5/WS+6X//wAAbmRpbgAAAAAAAAY2AACVRgAA
+Vs8AAFKpAACRTgAAKBAAABVgAABQDQAAVDkAAtwoAAKo9QABczMAAwEAAAIAAAAYADIATQBmAH4AlgCu
+AMYA3QD0AQwBIgE6AVABaAF/AZcBrgHGAd8B+AIQAigCQgJcAnYCkAKrAsYC4gL/AxsDOANVA3QDkwOz
+A9MD8wQVBDcEWgR9BKMEyQTyBRwFRwVzBZ8FzAX5BigGVwaHBrgG6QccB1AHhge9B/QILAhmCKII3gkc
+CVsJnAnfCiMKaQqwCvkLQwuSC+EMMAyFDNoNMA2JDeQOQQ6gDv4PYA/GEC0QlBEAEXAR4RJUEs0TRBO/
+FDwUuRU7Fb8WRxbSF10X6xh9GREZqRpDGt4bfRwhHMUdbB4SHrwfZyAVIMUhdCIlIuIjxiSyJaEmiid5
+KGcpVypEKzAsIC0LLfYu4S/KMLMxnDKDM200VTU7NiI3Cjf0ON45yzq+O8c82z3uPwFAGUEpQjlDTURf
+RXJGhUeYSK5JxUrdS/tNGU41T15QhVGwUtpUEVVIVoVXxFjmWf9bIFxBXWhelV/AYPBiJmNkZKRl5Wcr
+aHZpxWsWbG9txW8acHRxy3MmdIB113cweIl543tyfSN+4oClgm6EO4YVh/WJ1YvGjbiPr5Gmk6GVp5et
+mbGbuJ3Dn8Oh36SSp1uqGKzTr4CyNLTft5m6VL0Uv9/CvMWQyH7LcM570XXUkde72t3eA+FJ5Kfohu2W
+9XX5NPrX++382f2m/qH//wAAABYAMQBLAGYAfgCXALAAyADgAPgBEQEpAUEBWQFxAYoBowG9AdYB8AIK
+AiQCPgJZAnQCkAKsAskC5gMEAyIDQANfA38DngPAA+IEBAQnBEoEbwSWBMAE7wUfBVEFhAW3BesGIAZW
+BowGxAb8BzYHcQeuB+wIKghqCKsI7gkxCXYJvQoFCk8KmwroCzYLiAvbDC4MhgzfDTkNlg31DlUOuA8a
+D4EP6xBWEMIRNBGnEhwSlRMQE4sUDBSLFQ4VlRYeFqsXORfIGFsY8BmJGiMavhtcG/4coR1FHekejh83
+H94giyE0Id8iiyNeJD8lKCYOJvQn3ijHKbQqnCuILHYtYy5RL0AwLzEiMhQzCTQBNPc17zbqN+g46Tnu
+OvQ8BT0YPis/QEBYQWtCgUOaRLFFzEblSAFJH0o/S2FMiE2sTtZQBFEzUmBTl1TSVgtXTVh4WYRak1ur
+XL5d3F78YBZhOmJgY45kvWXqZxxoUmmKasJsAW0+bndvs3DwcihzZ3Shddl3EnhLeYV633xiffd/j4En
+gr+EWIX5h5uJO4rhjI6OPI/tkaCTV5UZluWYrpp+nFWeMqAOof6kKKZfqJKqxa0Br0Kxg7PQti+4krsC
+vXnAB8KUxTbH3sqSzV/QHtL81ebYxNut3rnhxuTf6I/r2e6c8Ofy1PRz9fj3tP//AAAAJQBPAHgAoADH
+AOwBEgE2AVwBgAGlAcsB8QIYAj8CZwKPArkC5AMQAz4DbAOdA84EAgQ3BG4EqATjBSIFYwWlBegGLQZz
+BrsHBQdSB6EH8ghFCJsI8wlNCasKCwpuCtQLPAusDBsMjw0GDYAN/g6ADwIPihAXEKIRLRG5EkcS3BNx
+FAsUpRVFFegWkRc7F+YYlxlLGgEauht2HDcc+B27Hn0fRCALINYhnyJrI04kPSU0JionIigdKRwqHSse
+LCctLi46L0kwWTFwMogzpjTDNeQ3Cjg0OWM6mzv3PWk+4EBkQeVDckUBRpZILEnGS19M+k6PUChRvFNL
+VOBWb1f+WYVbElygXjhfy2FjYv9koWZAZ+NpimszbOJui3A5ceVzmHVFdvV4qHpdfAR9pH9KgO6CkoQ0
+hdyHg4kkisaMa44Nj62RSJLhlH6WHpe7mVWa8ZyOniufwqFhovuklaY2p9KpZ6sFrJmuM6/LsWmy+LSV
+tiy3xLlduvS8i74ov8nBZ8MHxKTGT8f5yZ7LTM0Czp3QG9Ge0yrUv9Zn2AjZudtr3Q7eruBX4ezjbeTk
+5lPnuekU6lDrg+yt7cbu0e/U8MbxtfKQ82z0LPTr9Z72SPby94j4HPiv+S/5qvok+p77Avtm+8r8LvyH
+/NH9G/1l/a/9+v5N/rn/Jv+S//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AABtbHVjAAAAAAAAABIAAAAMbmJOTwAAABIAAADocHRQVAAAABYAAAD6c3ZTRQAAABAAAAEQZmlGSQAA
+ABAAAAEgZGFESwAAABwAAAEwemhDTgAAAAwAAAFMZnJGUgAAABYAAAFYamFKUAAAAA4AAAFuZW5VUwAA
+ABIAAAF8cGxQTAAAABIAAAGOcHRCUgAAABgAAAGgZXNFUwAAABIAAAG4emhUVwAAAA4AAAHKcnVSVQAA
+ACQAAAHYa29LUgAAAAwAAAH8ZGVERQAAABAAAAIIbmxOTAAAABYAAAIYaXRJVAAAABQAAAIuAEYAYQBy
+AGcAZQAtAEwAQwBEAEwAQwBEACAAYQAgAEMAbwByAGUAcwBGAOQAcgBnAC0ATABDAEQAVgDkAHIAaQAt
+AEwAQwBEAEwAQwBEAC0AZgBhAHIAdgBlAHMAawDmAHIAbV9pgnIAIABMAEMARABMAEMARAAgAGMAbwB1
+AGwAZQB1AHIwqzDpMPwAIABMAEMARABDAG8AbABvAHIAIABMAEMARABLAG8AbABvAHIAIABMAEMARABM
+AEMARAAgAEMAbwBsAG8AcgBpAGQAbwBMAEMARAAgAGMAbwBsAG8Acl9pgnJtsmZ2mG95OlZoBCYEMgQ1
+BEIEPQQ+BDkAIAQWBBoALQQ0BDgEQQQ/BDsENQQ5zuy37AAgAEwAQwBEAEYAYQByAGIALQBMAEMARABL
+AGwAZQB1AHIAZQBuAC0ATABDAEQATABDAEQAIABjAG8AbABvAHIAaQAAbW1vZAAAAAAAAAYQAACchAAA
+AADDleyhAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29weXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDA5AA</bytes>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSColor" key="NSColor" id="560900311">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MCAwAA</bytes>
+ </object>
+ </object>
+ <reference key="NSAlternateImage" ref="1039409395"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ </object>
+ <string key="NSCellSize">{82, 18}</string>
+ <string key="NSIntercellSpacing">{4, 2}</string>
+ <int key="NSMatrixFlags">1151868928</int>
+ <string key="NSCellClass">NSActionCell</string>
+ <object class="NSButtonCell" key="NSProtoCell" id="784366450">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Radio</string>
+ <reference key="NSSupport" ref="131575409"/>
+ <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags2">0</int>
+ <object class="NSImage" key="NSNormalImage">
+ <int key="NSImageFlags">549453824</int>
+ <string key="NSSize">{18, 18}</string>
+ <object class="NSMutableArray" key="NSReps">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="0"/>
+ <object class="NSBitmapImageRep">
+ <object class="NSData" key="NSTIFFRepresentation">
+ <bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
+IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
+29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
+dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
+AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
+AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
+0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
+7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
+5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
+3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
+AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
+AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
+6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
+/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
+///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
+YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
+AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
+AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
+AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB
+AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
+AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
+AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
+ </object>
+ </object>
+ </object>
+ </object>
+ <reference key="NSColor" ref="560900311"/>
+ </object>
+ <reference key="NSAlternateImage" ref="1039409395"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ <reference key="NSSelectedCell" ref="893370307"/>
+ <reference key="NSBackgroundColor" ref="1038796712"/>
+ <reference key="NSCellBackgroundColor" ref="637919909"/>
+ <reference key="NSFont" ref="131575409"/>
+ </object>
+ </object>
+ <string key="NSFrameSize">{600, 280}</string>
+ <reference key="NSSuperview"/>
+ <string key="NSClassName">OEGameControllerView</string>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">view</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="1005"/>
+ </object>
+ <int key="connectionID">2</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">bindingType</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="36752993"/>
+ </object>
+ <int key="connectionID">16</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">playerField</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="787072964"/>
+ </object>
+ <int key="connectionID">17</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">playerStepper</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="1059944598"/>
+ </object>
+ <int key="connectionID">18</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showedBindingsChanged:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="787072964"/>
+ </object>
+ <int key="connectionID">19</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showedBindingsChanged:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="1059944598"/>
+ </object>
+ <int key="connectionID">20</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showedBindingsChanged:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="36752993"/>
+ </object>
+ <int key="connectionID">21</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <reference key="object" ref="0"/>
+ <reference key="children" ref="1000"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="1001"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="1003"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">First Responder</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="1004"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1</int>
+ <reference key="object" ref="1005"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="962050357"/>
+ <reference ref="787072964"/>
+ <reference ref="1059944598"/>
+ <reference ref="179577599"/>
+ <reference ref="36752993"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3</int>
+ <reference key="object" ref="962050357"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="434022868"/>
+ </object>
+ <reference key="parent" ref="1005"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4</int>
+ <reference key="object" ref="787072964"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="351839748"/>
+ </object>
+ <reference key="parent" ref="1005"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5</int>
+ <reference key="object" ref="1059944598"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="557018"/>
+ </object>
+ <reference key="parent" ref="1005"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">6</int>
+ <reference key="object" ref="179577599"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="965444743"/>
+ </object>
+ <reference key="parent" ref="1005"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">7</int>
+ <reference key="object" ref="36752993"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="554711082"/>
+ <reference ref="784366450"/>
+ <reference ref="893370307"/>
+ </object>
+ <reference key="parent" ref="1005"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">8</int>
+ <reference key="object" ref="554711082"/>
+ <reference key="parent" ref="36752993"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">9</int>
+ <reference key="object" ref="784366450"/>
+ <reference key="parent" ref="36752993"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">10</int>
+ <reference key="object" ref="893370307"/>
+ <reference key="parent" ref="36752993"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">11</int>
+ <reference key="object" ref="965444743"/>
+ <reference key="parent" ref="179577599"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">12</int>
+ <reference key="object" ref="557018"/>
+ <reference key="parent" ref="1059944598"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">13</int>
+ <reference key="object" ref="351839748"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="971412454"/>
+ </object>
+ <reference key="parent" ref="787072964"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">14</int>
+ <reference key="object" ref="971412454"/>
+ <reference key="parent" ref="351839748"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">15</int>
+ <reference key="object" ref="434022868"/>
+ <reference key="parent" ref="962050357"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-3.IBPluginDependency</string>
+ <string>1.IBEditorWindowLastContentRect</string>
+ <string>1.IBPluginDependency</string>
+ <string>1.WindowOrigin</string>
+ <string>1.editorWindowContentRectSynchronizationRect</string>
+ <string>10.IBPluginDependency</string>
+ <string>11.IBPluginDependency</string>
+ <string>12.IBPluginDependency</string>
+ <string>13.IBPluginDependency</string>
+ <string>14.IBNumberFormatterLocalizesFormatMetadataKey</string>
+ <string>14.IBPluginDependency</string>
+ <string>15.IBPluginDependency</string>
+ <string>3.IBPluginDependency</string>
+ <string>4.IBPluginDependency</string>
+ <string>5.IBPluginDependency</string>
+ <string>6.IBPluginDependency</string>
+ <string>7.IBPluginDependency</string>
+ <string>8.IBPluginDependency</string>
+ <string>9.IBPluginDependency</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{368, 164}, {600, 280}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{628, 654}</string>
+ <string>{{217, 442}, {480, 272}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">21</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">SNESPreferenceViewController</string>
+ <string key="superclassName">OEControlsViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">SNESPreferenceViewController.h</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.1+">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBDocumentRelativeSource</string>
+ <string key="minorKey">../OpenEmu/OEGameCoreController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">OEControlsViewController</string>
+ <string key="superclassName">OEPreferenceViewController</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>selectInputControl:</string>
+ <string>showedBindingsChanged:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>bindingType</string>
+ <string>playerField</string>
+ <string>playerSelector</string>
+ <string>playerStepper</string>
+ <string>selectedControl</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>NSTextField</string>
+ <string>NSMatrix</string>
+ <string>NSStepper</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBDocumentRelativeSource</string>
+ <string key="minorKey">../OpenEmu/OEControlsViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">OEGameControllerView</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBDocumentRelativeSource</string>
+ <string key="minorKey">../OpenEmu/OEGameControllerView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">OEPreferenceViewController</string>
+ <string key="superclassName">NSViewController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBDocumentRelativeSource</string>
+ <string key="minorKey">../OpenEmu/OEPreferenceViewController.h</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSActionCell</string>
+ <string key="superclassName">NSCell</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <string key="superclassName">NSResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="136657914">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="804197646">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="215979399">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSButtonCell</string>
+ <string key="superclassName">NSActionCell</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSCell</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSControl</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="950244929">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSFormatter</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMatrix</string>
+ <string key="superclassName">NSControl</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMatrix.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMenu</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="43503164">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSNumberFormatter</string>
+ <string key="superclassName">NSFormatter</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSNumberFormatter.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="136657914"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="804197646"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="215979399"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="950244929"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDragging.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <reference key="sourceIdentifier" ref="43503164"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="103443461">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSResponder</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSStepper</string>
+ <string key="superclassName">NSControl</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSStepper.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSStepperCell</string>
+ <string key="superclassName">NSActionCell</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSStepperCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSTextField</string>
+ <string key="superclassName">NSControl</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTextField.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSTextFieldCell</string>
+ <string key="superclassName">NSActionCell</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTextFieldCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <string key="superclassName">NSResponder</string>
+ <reference key="sourceIdentifier" ref="103443461"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSViewController</string>
+ <string key="superclassName">NSResponder</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">view</string>
+ <string key="NS.object.0">NSView</string>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSViewController.h</string>
+ </object>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <integer value="1050" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <integer value="1050" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+ <integer value="3000" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <string key="IBDocument.LastKnownRelativeProjectPath">BSNES.xcodeproj</string>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ </data>
+</archive>
View
BIN  BSNES/English.lproj/InfoPlist.strings
Binary file not shown
View
45 BSNES/Info.plist
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDocumentTypes</key>
+ <array>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>jma</string>
+ <string>zip</string>
+ <string>smc</string>
+ </array>
+ <key>CFBundleTypeName</key>
+ <string>SNES Game</string>
+ </dict>
+ </array>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundleIconFile</key>
+ <string>bsnes</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.openemu.${PRODUCT_NAME:identifier}</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>BNDL</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>0.057</string>
+ <key>NSPrincipalClass</key>
+ <string>BSNESGameController</string>
+ <key>SUFeedURL</key>
+ <string>http://openemu.sourceforge.net/bsnes_appcast.xml</string>
+ <key>SUEnableAutomaticChecks</key>
+ <string>1</string>
+ <key>SUPublicDSAKeyFile</key>
+ <string>dsa_pub.pem</string>
+</dict>
+</plist>
View
32 BSNES/SNESGameController.h
@@ -0,0 +1,32 @@
+/*
+ Copyright (c) 2009, OpenEmu Team
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the OpenEmu Team nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <Cocoa/Cocoa.h>
+#import <OEGameCoreController.h>
+
+@interface BSNESGameController : OEGameCoreController
+@end
View
69 BSNES/SNESGameController.mm
@@ -0,0 +1,69 @@
+/*
+ Copyright (c) 2009, OpenEmu Team
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the OpenEmu Team nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SNESGameController.h"
+#import "SNESGameEmu.h"
+#import "SNESPreferenceViewController.h"
+
+NSArray *BSNESRawControlNames = nil;
+
+@implementation BSNESGameController
+
++ (void)initialize
+{
+ if(self == [BSNESGameController class])
+ {
+ [self registerPreferenceViewControllerClasses:
+ [NSDictionary dictionaryWithObject:[BSNESPreferenceViewController class]
+ forKey:OEControlsPreferenceKey]];
+
+ BSNESRawControlNames = [[NSArray alloc] initWithObjects:BSNESEmulatorNames
+ count:SNES_CONTROL_COUNT];
+ }
+}
+
+- (NSArray *)genericControlNames
+{
+ return BSNESRawControlNames;
+}
+
+- (NSUInteger)playerCount
+{
+ return MAC_MAX_PLAYERS;
+}
+
+- (NSString *)pluginName
+{
+ return @"BSNESPlugin";
+}
+
+- (Class)gameCoreClass
+{
+ return [BSNESGameEmu class];
+}
+
+@end
View
49 BSNES/SNESGameEmu.h
@@ -0,0 +1,49 @@
+/*
+ Copyright (c) 2009, OpenEmu Team
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the OpenEmu Team nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <Cocoa/Cocoa.h>
+#import <GameCore.h>
+#include <base.hpp>
+#include "BSNESInterface.h"
+
+#define MAC_MAX_PLAYERS 8
+#define SNES_CONTROL_COUNT 12
+
+extern NSString *BSNESEmulatorNames[];
+
+@class OERingBuffer;
+
+@interface BSNESGameEmu : GameCore {
+ uint32 controlPad[MAC_MAX_PLAYERS];
+ UInt16 *soundBuffer;
+ unsigned char *videoBuffer;
+ BSNESInterface *interface;
+ //SNES::System *system;
+}
+//- (void) reportControlPad: (int) padID withFlags: (uint32) flags;
+
+@end
View
323 BSNES/SNESGameEmu.mm
@@ -0,0 +1,323 @@
+/*
+ Copyright (c) 2009, OpenEmu Team
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the OpenEmu Team nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "SNESGameEmu.h"
+#import <OERingBuffer.h>
+
+//#include <libreader/libreader.hpp>
+//#include <libreader/filereader.hpp>
+//#include "utility/utility.hpp"
+
+#define SAMPLERATE 32040
+#define SAMPLEFRAME 800
+#define SIZESOUNDBUFFER SAMPLEFRAME*4
+
+@interface BSNESGameEmu ()
+- (NSUInteger)SNES_buttonMaskForButton:(OEButton)gameButton;
+@end
+
+@implementation BSNESGameEmu
+
+NSUInteger BSNESEmulatorValues[] = { SNES::Input::JoypadR, SNES::Input::JoypadL, SNES::Input::JoypadX, SNES::Input::JoypadA, SNES::Input::JoypadRight, SNES::Input::JoypadLeft, SNES::Input::JoypadDown, SNES::Input::JoypadUp, SNES::Input::JoypadStart, SNES::Input::JoypadSelect, SNES::Input::JoypadY, SNES::Input::JoypadB };
+NSString *BSNESEmulatorNames[] = { @"Joypad@ R", @"Joypad@ L", @"Joypad@ X", @"Joypad@ A", @"Joypad@ Right", @"Joypad@ Left", @"Joypad@ Down", @"Joypad@ Up", @"Joypad@ Start", @"Joypad@ Select", @"Joypad@ Y", @"Joypad@ B" };
+
+- (OEEmulatorKey)emulatorKeyForKey:(NSString *)aKey index:(NSUInteger)index player:(NSUInteger)thePlayer
+{
+ NSUInteger val = BSNESEmulatorValues[index];
+ OEEmulatorKey ret = OEMakeEmulatorKey(thePlayer, val);
+ return ret;
+}
+
+- (void)pressEmulatorKey:(OEEmulatorKey)aKey
+{
+ interface->pad[aKey.player-1][aKey.key] = 0xFFFF;
+}
+
+- (void)releaseEmulatorKey:(OEEmulatorKey)aKey
+{
+ interface->pad[aKey.player-1][aKey.key] = 0;
+}
+#pragma mark Exectuion
+
+- (void)executeFrame
+{
+ [self executeFrameSkippingFrame:NO];
+}
+
+- (void)executeFrameSkippingFrame: (BOOL) skip
+{
+ SNES::system.run();
+ //[self reportControlPad:0 withFlags:controlPad[0]];
+
+// IPPU.RenderThisFrame = !skip;
+// S9xMainLoop();
+//
+ //S9xMixSamples((unsigned char*)soundBuffer, SAMPLEFRAME * [self channelCount]);
+ //[[self ringBufferAtIndex:0] write:soundBuffer maxLength:sizeof(UInt16) * [self channelCount] * SAMPLEFRAME];
+}
+
+bool loadCartridge(const char *filename, SNES::MappedRAM &memory) {
+ if(file::exists(filename) == false) return false;
+ //Reader::Type filetype = Reader::detect(filename, true);
+
+ uint8_t *data;
+ unsigned size;
+
+ NSData* dataObj = [NSData dataWithContentsOfFile:[[NSString stringWithUTF8String:filename] stringByStandardizingPath]];
+ if(dataObj == nil) return false;
+ size = [dataObj length];
+ data = (uint8_t*)[dataObj bytes];
+
+ //remove copier header, if it exists
+ if((size & 0x7fff) == 512) memmove(data, data + 512, size -= 512);
+
+ memory.copy(data, size);
+ return true;
+}
+
+- (BOOL)loadFileAtPath: (NSString*) path
+{
+ //system = new SNES::System();
+
+ //[self mapButtons];
+
+
+ interface = new BSNESInterface();
+
+ memset(&interface->pad, 0, sizeof(int16_t) * 24);
+ interface->video = (uint16_t*)malloc(512*480*2);
+ interface->ringBuffer = [self ringBufferAtIndex:0];
+ SNES::system.init(interface);
+
+
+
+ SNES::MappedRAM memory;
+ if(loadCartridge([path UTF8String], memory) == false) return NO;
+ SNES::Cartridge::Type type = SNES::cartridge.detect_image_type(memory.data(), memory.size());
+ memory.reset();
+
+ if(loadCartridge([path UTF8String], SNES::memory::cartrom));