diff --git a/src/m64py/core/config.py b/src/m64py/core/config.py index c285aa8..3a5c130 100644 --- a/src/m64py/core/config.py +++ b/src/m64py/core/config.py @@ -131,7 +131,7 @@ class Config: def set_parameter(self, param_name, param_value): """Sets the value of one of the emulator's parameters.""" try: - param_type = self.parameters[self.section][param_name] + param_type = self.parameters[self.section][param_name.encode()] param_ctype = M64_CTYPE[param_type] except KeyError: return @@ -156,7 +156,7 @@ class Config: def get_parameter(self, param_name): """Retrieves the value of one of the emulator's parameters.""" try: - param_type = self.parameters[self.section][param_name] + param_type = self.parameters[self.section][param_name.encode()] param_ctype = M64_CTYPE[param_type] except KeyError: return diff --git a/src/m64py/core/core.py b/src/m64py/core/core.py index 0ff9e21..d0f6216 100644 --- a/src/m64py/core/core.py +++ b/src/m64py/core/core.py @@ -153,7 +153,7 @@ class Core: def error_message(self, return_code): """Returns description of the error""" self.m64p.CoreErrorMessage.restype = C.c_char_p - rval = self.m64p.CoreErrorMessage(return_code) + rval = self.m64p.CoreErrorMessage(return_code).decode() return rval def core_startup(self, path, use_vidext): diff --git a/src/m64py/frontend/input.py b/src/m64py/frontend/input.py index 1a067b4..2615fdd 100644 --- a/src/m64py/frontend/input.py +++ b/src/m64py/frontend/input.py @@ -212,6 +212,7 @@ class Input(QDialog, Ui_InputDialog): def set_opts(self): for key, val in self.opts.items(): param, tooltip, widget, ptype = val + tooltip = tooltip.decode() if ptype == M64TYPE_BOOL: if param: widget.setChecked(param) @@ -220,6 +221,7 @@ class Input(QDialog, Ui_InputDialog): elif ptype == M64TYPE_INT: widget.setCurrentIndex(widget.findData(param)) elif ptype == M64TYPE_STRING: + param = param.decode() if key in ["AnalogDeadzone", "AnalogPeak"]: if param: paramX, paramY = param.split(",") @@ -245,11 +247,11 @@ class Input(QDialog, Ui_InputDialog): elif ptype == M64TYPE_STRING: if key in ["AnalogDeadzone", "AnalogPeak"]: spin1, spin2 = widget - self.config.set_parameter(key,"%s,%s" % ( - spin1.value(), spin2.value())) + value = "%s,%s" % (spin1.value(), spin2.value()) + self.config.set_parameter(key, value.encode()) else: self.config.set_parameter( - key, str(widget.text())) + key, widget.text().encode()) def get_keys(self): self.keys = { @@ -316,12 +318,13 @@ class Input(QDialog, Ui_InputDialog): else: value = self.get_sdl_key(widget.text()) if value: - self.config.set_parameter(key, "key(%s)" % value) + v = "key(%s)" % value + self.config.set_parameter(key, v.encode()) else: continue def get_axis(self, axis): - param = self.config.get_parameter(axis) + param = self.config.get_parameter(axis).decode() if param: return AXIS_RE.findall(param) @@ -356,26 +359,30 @@ class Input(QDialog, Ui_InputDialog): xr = KEY_RE.findall(str(self.pushX_Axis_R.text())) if xl and xr: xl, xr = xl[0], xr[0] - self.config.set_parameter("X Axis", "%s(%s,%s)" % (xl[0], xl[1], xr[1])) + axis = "%s(%s,%s)" % (xl[0], xl[1], xr[1]) + self.config.set_parameter("X Axis", axis.encode()) else: xl = self.get_sdl_key(self.pushX_Axis_L.text()) xr = self.get_sdl_key(self.pushX_Axis_R.text()) if xl and xr: - self.config.set_parameter("X Axis", "key(%s,%s)" % (xl, xr)) + axis = "key(%s,%s)" % (xl, xr) + self.config.set_parameter("X Axis", axis.encode()) yu = KEY_RE.findall(str(self.pushY_Axis_U.text())) yd = KEY_RE.findall(str(self.pushY_Axis_D.text())) if yu and yd: yu, yd = yu[0], yd[0] - self.config.set_parameter("Y Axis", "%s(%s,%s)" % (yu[0], yu[1], yd[1])) + axis = "%s(%s,%s)" % (yu[0], yu[1], yd[1]) + self.config.set_parameter("Y Axis", axis.encode()) else: yu = self.get_sdl_key(self.pushY_Axis_U.text()) yd = self.get_sdl_key(self.pushY_Axis_D.text()) if yu and yd: - self.config.set_parameter("Y Axis", "key(%s,%s)" % (yu, yd)) + axis = "key(%s,%s)" % (yu, yd) + self.config.set_parameter("Y Axis", axis.encode()) def get_key(self, key): - param = self.config.get_parameter(key) + param = self.config.get_parameter(key).decode() if not param: return [0, 0] @@ -400,6 +407,7 @@ class Input(QDialog, Ui_InputDialog): from m64py.SDL2.keyboard import SDL_GetScancodeFromName if "Shift" in text or "Ctrl" in text or "Alt" in text: text = "Left %s" % text + text = text.encode() return SCANCODE2KEYCODE[SDL_GetScancodeFromName(text)] else: try: @@ -420,6 +428,7 @@ class Input(QDialog, Ui_InputDialog): else: from m64py.SDL.keyboard import SDL_GetKeyName text = SDL_GetKeyName(int(sdl_key)).title() + text = text.decode() if not text: return self.tr("Select...") if "Shift" in text or "Ctrl" in text or "Alt" in text: diff --git a/src/m64py/frontend/plugin.py b/src/m64py/frontend/plugin.py index 0ecc282..26cf052 100644 --- a/src/m64py/frontend/plugin.py +++ b/src/m64py/frontend/plugin.py @@ -69,7 +69,8 @@ class Plugin(QDialog, Ui_PluginDialog): row1, row2 = 0, 0 for count, item in enumerate(self.items): param_name, param_type = item - param_help = self.config.get_parameter_help(param_name) + param_name = param_name.decode() + param_help = self.config.get_parameter_help(param_name).decode() opts = format_options(param_help) if param_type == M64TYPE_STRING: @@ -115,7 +116,7 @@ class Plugin(QDialog, Ui_PluginDialog): for param_name, item in self.widgets.items(): widget, widget_class, opts = item if widget_class == QLineEdit: - widget.setText(str(self.config.get_parameter(param_name))) + widget.setText(self.config.get_parameter(param_name).decode()) elif widget_class == QSpinBox: param = self.config.get_parameter(param_name) if param is not None: @@ -134,7 +135,7 @@ class Plugin(QDialog, Ui_PluginDialog): for param_name, item in self.widgets.items(): widget, widget_class, opts = item if widget_class == QLineEdit: - param_value = str(widget.text()) + param_value = widget.text().encode() elif widget_class == QSpinBox: param_value = int(widget.value()) elif widget_class == QComboBox: diff --git a/src/m64py/frontend/rominfo.py b/src/m64py/frontend/rominfo.py index e15d4b1..2599c6b 100644 --- a/src/m64py/frontend/rominfo.py +++ b/src/m64py/frontend/rominfo.py @@ -28,9 +28,9 @@ class RomInfo(): self.parent = parent self.core = self.parent.worker.core rom_info = [ - ('GoodName', self.core.rom_settings.goodname), - ('Name', self.core.rom_header.Name), - ('MD5', self.core.rom_settings.MD5), + ('GoodName', self.core.rom_settings.goodname.decode()), + ('Name', self.core.rom_header.Name.decode()), + ('MD5', self.core.rom_settings.MD5.decode()), ('CRC1', '%x' % sl(self.core.rom_header.CRC1)), ('CRC2', '%x' % sl(self.core.rom_header.CRC2)), ('Type', self.core.rom_type), diff --git a/src/m64py/frontend/romlist.py b/src/m64py/frontend/romlist.py index c2983bc..bf2cd46 100644 --- a/src/m64py/frontend/romlist.py +++ b/src/m64py/frontend/romlist.py @@ -57,7 +57,12 @@ class ROMList(QMainWindow, Ui_ROMList): self.splitter.setStretchFactor(1, 2) self.reader = ROMReader(self) - self.rom_list = self.qset.value("rom_list", []) + + try: + self.rom_list = self.qset.value("rom_list", []) + except TypeError: + self.rom_list = [] + self.user_data_path = self.core.config.get_path("UserData") if self.rom_list: @@ -91,8 +96,10 @@ class ROMList(QMainWindow, Ui_ROMList): for rom in self.rom_list: if len(rom) == 4: crc, goodname, path, fname = rom - list_item = QListWidgetItem(goodname.decode()) - list_item.setData(Qt.UserRole, (crc, goodname.decode(), path, fname)) + if isinstance(goodname, bytes): + goodname = goodname.decode() + list_item = QListWidgetItem(goodname) + list_item.setData(Qt.UserRole, (crc, goodname, path, fname)) self.listWidget.addItem(list_item) self.progressBar.setValue(0) self.progressBar.hide() diff --git a/src/m64py/frontend/settings.py b/src/m64py/frontend/settings.py index 6f2198e..93a405c 100644 --- a/src/m64py/frontend/settings.py +++ b/src/m64py/frontend/settings.py @@ -202,7 +202,10 @@ class Settings(QDialog, Ui_Settings): return default def get_size_safe(self): - size = self.qset.value("size", SIZE_1X) + try: + size = self.qset.value("size", SIZE_1X) + except TypeError: + size = SIZE_1X if not type(size) == tuple: size = SIZE_1X if len(size) != 2: @@ -253,15 +256,15 @@ class Settings(QDialog, Ui_Settings): self.checkOSD.setChecked( self.core.config.get_parameter("OnScreenDisplay")) self.checkOSD.setToolTip( - self.core.config.get_parameter_help("OnScreenDisplay")) + self.core.config.get_parameter_help("OnScreenDisplay").decode()) self.checkNoCompiledJump.setChecked( self.core.config.get_parameter("NoCompiledJump")) self.checkNoCompiledJump.setToolTip( - self.core.config.get_parameter_help("NoCompiledJump")) + self.core.config.get_parameter_help("NoCompiledJump").decode()) self.checkDisableExtraMem.setChecked( self.core.config.get_parameter("DisableExtraMem")) self.checkDisableExtraMem.setToolTip( - self.core.config.get_parameter_help("DisableExtraMem")) + self.core.config.get_parameter_help("DisableExtraMem").decode()) delay_si = self.core.config.get_parameter("DelaySI") if delay_si is not None: @@ -270,7 +273,7 @@ class Settings(QDialog, Ui_Settings): self.checkDelaySI.setChecked(False) self.checkDelaySI.setEnabled(False) self.checkDelaySI.setToolTip( - self.core.config.get_parameter_help("DelaySI")) + self.core.config.get_parameter_help("DelaySI").decode()) count_per_op = self.core.config.get_parameter("CountPerOp") if count_per_op is not None: @@ -278,7 +281,7 @@ class Settings(QDialog, Ui_Settings): else: self.comboCountPerOp.setEnabled(False) self.comboCountPerOp.setToolTip( - self.core.config.get_parameter_help("CountPerOp")) + self.core.config.get_parameter_help("CountPerOp").decode()) def set_plugins(self): plugin_map = self.core.plugin_map @@ -327,7 +330,7 @@ class Settings(QDialog, Ui_Settings): self.core.config.set_parameter("DisableExtraMem", self.checkDisableExtraMem.isChecked()) self.core.config.set_parameter("DelaySI", self.checkDelaySI.isChecked()) self.core.config.set_parameter("CountPerOp", self.comboCountPerOp.currentIndex()) - self.core.config.set_parameter("SharedDataPath", self.pathData.text()) + self.core.config.set_parameter("SharedDataPath", self.pathData.text().encode()) def save_plugins(self): for plugin_type in self.combomap: diff --git a/src/m64py/ui/inputbutton.py b/src/m64py/ui/inputbutton.py index 0d858fd..3c5905d 100644 --- a/src/m64py/ui/inputbutton.py +++ b/src/m64py/ui/inputbutton.py @@ -71,6 +71,7 @@ class InputButton(QPushButton): else: from m64py.SDL.keyboard import SDL_GetKeyName text = SDL_GetKeyName(QT2SDL[key]).title() + text = text.decode() text = text.replace("Left ", "") self.setText(text.title())