From c59831c7748ac2e5ddcf175cd085271b54210135 Mon Sep 17 00:00:00 2001 From: Alexey Nurgaliev Date: Thu, 31 Aug 2023 18:51:41 +0300 Subject: [PATCH] PC-FX support --- data/emulator.js | 35 ++++++++++++++++++++++++++++++++++- data/emulator.min.js | 2 +- index.html | 1 + 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/data/emulator.js b/data/emulator.js index 709bd1b..a1fc488 100644 --- a/data/emulator.js +++ b/data/emulator.js @@ -28,6 +28,7 @@ class EmulatorJS { 'mame2003': 'mame2003', 'mednafen_ngp': 'ngp', 'mednafen_pce': 'pce', + 'mednafen_pcfx': 'pcfx', 'mednafen_psx_hw': 'psx', 'mednafen_wswan': 'ws', 'melonds': 'nds', @@ -72,6 +73,7 @@ class EmulatorJS { '3do': 'opera', 'psp': 'ppsspp', 'pce': 'mednafen_pce', + 'pcfx': 'mednafen_pcfx', 'ngp': 'mednafen_ngp', 'ws': 'mednafen_wswan', 'coleco': 'gearcoleco', @@ -95,6 +97,7 @@ class EmulatorJS { 'mame2003': ['zip'], 'mednafen_ngp': ['ngp', 'ngc'], 'mednafen_pce': ['pce', 'cue', 'ccd', 'iso', 'img', 'bin', 'chd'], + 'mednafen_pcfx': ['cue', 'ccd', 'toc', 'chd'], 'mednafen_psx': ['cue', 'toc', 'm3u', 'ccd', 'exe', 'pbp', 'chd'], 'mednafen_wswan': ['ws', 'wsc', 'pc2'], 'mednafen_psx_hw': ['cue', 'toc', 'm3u', 'ccd', 'exe', 'pbp', 'chd'], @@ -869,7 +872,7 @@ class EmulatorJS { } let resData = {}; - const needsCue = (["mednafen_psx", "mednafen_psx_hw", "mednafen_pce"].includes(this.getCore())) && !this.config.disableCue; + const needsCue = (["mednafen_psx", "mednafen_psx_hw", "mednafen_pce", "mednafen_pcfx"].includes(this.getCore())) && !this.config.disableCue; const altName = this.config.gameUrl.startsWith("blob:") ? (this.config.gameName || "game") : this.config.gameUrl.split('/').pop().split("#")[0].split("?")[0]; this.checkCompression(new Uint8Array(data), this.localization("Decompress Game Data"), (fileName, fileData) => { if (fileName.includes("/")) { @@ -2122,6 +2125,23 @@ class EmulatorJS { {id: 6, label: this.localization('LEFT')}, {id: 7, label: this.localization('RIGHT')}, ]; + } else if ('pcfx' === this.getControlScheme()) { + buttons = [ + {id: 8, label: this.localization('I')}, + {id: 0, label: this.localization('II')}, + {id: 9, label: this.localization('III')}, + {id: 1, label: this.localization('IV')}, + {id: 10, label: this.localization('V')}, + {id: 11, label: this.localization('VI')}, + {id: 3, label: this.localization('RUN')}, + {id: 2, label: this.localization('SELECT')}, + {id: 12, label: this.localization('MODE1')}, + {id: 13, label: this.localization('MODE2')}, + {id: 4, label: this.localization('UP')}, + {id: 5, label: this.localization('DOWN')}, + {id: 6, label: this.localization('LEFT')}, + {id: 7, label: this.localization('RIGHT')}, + ]; } else { buttons = [ {id: 0, label: this.localization('B')}, @@ -2870,6 +2890,19 @@ class EmulatorJS { {"type":"dpad","location":"left","left":"50%","right":"50%","joystickInput":false,"inputValues":[4,5,6,7]} ]; info.push(...speedControlButtons); + } else if ('pcfx' === this.getControlScheme()) { + info = [ + {"type":"button","text":"I","id":"i","location":"right","right":5,"top":70,"bold":true,"input_value":8}, + {"type":"button","text":"II","id":"ii","location":"right","right":75,"top":70,"bold":true,"input_value":0}, + {"type":"button","text":"III","id":"iii","location":"right","right":145,"top":70,"bold":true,"input_value":9}, + {"type":"button","text":"IV","id":"iv","location":"right","right":5,"top":0,"bold":true,"input_value":1}, + {"type":"button","text":"V","id":"v","location":"right","right":75,"top":0,"bold":true,"input_value":10}, + {"type":"button","text":"VI","id":"vi","location":"right","right":145,"top":0,"bold":true,"input_value":11}, + {"type":"dpad","location":"left","left":"50%","right":"50%","joystickInput":false,"inputValues":[4,5,6,7]}, + {"type":"button","text":"Select","id":"select","location":"center","left":-5,"fontSize":15,"block":true,"input_value":2}, + {"type":"button","text":"Run","id":"run","location":"center","left":60,"fontSize":15,"block":true,"input_value":3} + ]; + info.push(...speedControlButtons); } else { info = [ {"type":"button","text":"Y","id":"y","location":"right","left":40,"bold":true,"input_value":9}, diff --git a/data/emulator.min.js b/data/emulator.min.js index 6663981..a95334d 100644 --- a/data/emulator.min.js +++ b/data/emulator.min.js @@ -1 +1 @@ -!function(){var e,t;e=window,t=function(){return n=[function(e,t,n){"use strict";n.r(t);function b(e,t){var n=t.x-e.x,t=t.y-e.y;return Math.sqrt(n*n+t*t)}function _(e){return e*(Math.PI/180)}function o(e){f.has(e)&&clearTimeout(f.get(e)),f.set(e,setTimeout(e,100))}function a(e,t,n){for(var i,o=t.split(/[ ,]+/g),a=0;athis.options.threshold){var r,l={};for(r in this.direction)this.direction.hasOwnProperty(r)&&(l[r]=this.direction[r]);var c={};for(r in this.direction={x:n,y:i,angle:t},e.direction=this.direction,l)l[r]===this.direction[r]&&(c[r]=!0);if(c.x&&c.y&&c.angle)return e;c.x&&c.y||this.trigger("plain",e),c.x||this.trigger("plain:"+n,e),c.y||this.trigger("plain:"+i,e),c.angle||this.trigger("dir dir:"+t,e)}else this.resetDirection();return e};var x=w;function E(e,t){this.nipples=[],this.idles=[],this.actives=[],this.ids=[],this.pressureIntervals={},this.manager=e,this.id=E.id,E.id+=1,this.defaults={zone:document.body,multitouch:!1,maxNumberOfNipples:10,mode:"dynamic",position:{top:0,left:0},catchDistance:200,size:100,threshold:.1,color:"white",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:.5,lockX:!1,lockY:!1,shape:"circle",dynamicPage:!1,follow:!1},this.config(t),"static"!==this.options.mode&&"semi"!==this.options.mode||(this.options.multitouch=!1),this.options.multitouch||(this.options.maxNumberOfNipples=1);e=getComputedStyle(this.options.zone.parentElement);return e&&"flex"===e.display&&(this.parentIsFlex=!0),this.updateBox(),this.prepareNipples(),this.bindings(),this.begin(),this.nipples}E.prototype=new m,(E.constructor=E).id=0,E.prototype.prepareNipples=function(){var i=this.nipples;i.on=this.on.bind(this),i.off=this.off.bind(this),i.options=this.options,i.destroy=this.destroy.bind(this),i.ids=this.ids,i.id=this.id,i.processOnMove=this.processOnMove.bind(this),i.processOnEnd=this.processOnEnd.bind(this),i.get=function(e){if(void 0===e)return i[0];for(var t=0,n=i.length;t