Skip to content

Commit

Permalink
NEC TurboGrafx-16 / SuperGrafx / PC Engine
Browse files Browse the repository at this point in the history
  • Loading branch information
n-at committed Aug 30, 2023
1 parent 4527f30 commit 5b29612
Show file tree
Hide file tree
Showing 5 changed files with 125 additions and 29 deletions.
56 changes: 34 additions & 22 deletions assets/netplay-ui-client.js
Original file line number Diff line number Diff line change
Expand Up @@ -443,8 +443,8 @@

const virtualGamepads = {
'nes': [
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 0, input: 6, id:'left', icon: 'bi-caret-left-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 110, input: 7, id:'right', icon: 'bi-caret-right-fill', cls: 'btn-outline-secondary', square: true},

Expand All @@ -455,8 +455,8 @@
{region: 'right', top: 55, right: 0, input: 8, id:'a', text: 'A', cls: 'btn-outline-secondary', circle: true},
],
'gba': [
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 0, input: 6, id:'left', icon: 'bi-caret-left-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 110, input: 7, id:'right', icon: 'bi-caret-right-fill', cls: 'btn-outline-secondary', square: true},

Expand All @@ -470,8 +470,8 @@
{region: 'right', top: -80, right: 10, input: 11, id:'r', text: 'R', cls: 'btn-outline-secondary', circle: true},
],
'snes': [
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 0, input: 6, id:'left', icon: 'bi-caret-left-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 110, input: 7, id:'right', icon: 'bi-caret-right-fill', cls: 'btn-outline-secondary', square: true},

Expand All @@ -487,8 +487,8 @@
{region: 'right', top: -80, right: 10, input: 11, id:'r', text: 'R', cls: 'btn-outline-secondary', circle: true},
],
'segaMD': [
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 0, input: 6, id:'left', icon: 'bi-caret-left-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 110, input: 7, id:'right', icon: 'bi-caret-right-fill', cls: 'btn-outline-secondary', square: true},

Expand All @@ -503,17 +503,17 @@
{region: 'right', top: -10, left: 50, input: 11, id:'z', text: 'Z', cls: 'btn-outline-secondary', circle: true},
],
'segaMS': [
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 0, input: 6, id:'left', icon: 'bi-caret-left-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 110, input: 7, id:'right', icon: 'bi-caret-right-fill', cls: 'btn-outline-secondary', square: true},

{region: 'right', top: 55, left: -20, input: 0, id:'1', text: '1', cls: 'btn-outline-secondary', circle: true},
{region: 'right', top: 55, right: 0, input: 8, id:'2', text: '2', cls: 'btn-outline-secondary', circle: true},
],
'segaGG': [
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 0, input: 6, id:'left', icon: 'bi-caret-left-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 110, input: 7, id:'right', icon: 'bi-caret-right-fill', cls: 'btn-outline-secondary', square: true},

Expand All @@ -523,8 +523,8 @@
{region: 'right', top: 55, right: 0, input: 8, id:'2', text: '2', cls: 'btn-outline-secondary', circle: true},
],
'segaSaturn': [
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 0, input: 6, id:'left', icon: 'bi-caret-left-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 110, input: 7, id:'right', icon: 'bi-caret-right-fill', cls: 'btn-outline-secondary', square: true},

Expand All @@ -541,8 +541,8 @@
{region: 'right', top: -90, right: 10, input: 13, id:'r', text: 'R', cls: 'btn-outline-secondary', circle: true},
],
'atari2600': [
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 0, input: 6, id:'left', icon: 'bi-caret-left-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 110, input: 7, id:'right', icon: 'bi-caret-right-fill', cls: 'btn-outline-secondary', square: true},

Expand All @@ -553,8 +553,8 @@
{region: 'right', top: 55, left: 30, input: 0, id:'fire', icon: 'bi-fire', cls: 'btn-outline-danger', circle: true},
],
'atari7800': [
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 0, input: 6, id:'left', icon: 'bi-caret-left-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 110, input: 7, id:'right', icon: 'bi-caret-right-fill', cls: 'btn-outline-secondary', square: true},

Expand All @@ -566,8 +566,8 @@
{region: 'right', top: 55, right: 0, input: 8, id:'2', text: '2', cls: 'btn-outline-secondary', circle: true},
],
'lynx': [
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 0, input: 6, id:'left', icon: 'bi-caret-left-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 110, input: 7, id:'right', icon: 'bi-caret-right-fill', cls: 'btn-outline-secondary', square: true},

Expand All @@ -579,8 +579,8 @@
{region: 'right', top: 55, right: 0, input: 8, id:'a', text: 'A', cls: 'btn-outline-secondary', circle: true},
],
'jaguar': [
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 0, input: 6, id:'left', icon: 'bi-caret-left-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 110, input: 7, id:'right', icon: 'bi-caret-right-fill', cls: 'btn-outline-secondary', square: true},

Expand All @@ -604,6 +604,18 @@
{region: 'right', top: 55, left: -15, input: 0, id:'b', text: 'B', cls: 'btn-outline-secondary', circle: true},
{region: 'right', top: 55, left: 50, input: 8, id:'c', text: 'C', cls: 'btn-outline-secondary', circle: true},
],
'pce': [
{region: 'left', top: 0, left: 55, input: 4, id:'up', icon: 'bi-caret-up-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 110, left: 55, input: 5, id:'down', icon: 'bi-caret-down-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 0, input: 6, id:'left', icon: 'bi-caret-left-fill', cls: 'btn-outline-secondary', square: true},
{region: 'left', top: 55, left: 110, input: 7, id:'right', icon: 'bi-caret-right-fill', cls: 'btn-outline-secondary', square: true},

{region: 'center', top: 105, left: -15, input: 2, id:'select', text: 'select', cls: 'btn-outline-secondary', small: true},
{region: 'center', top: 105, right: -15, input: 3, id:'start', text: 'start', cls: 'btn-outline-secondary', small: true},

{region: 'right', top: 55, left: -20, input: 0, id:'ii', text: 'II', cls: 'btn-outline-secondary', circle: true},
{region: 'right', top: 55, right: 0, input: 8, id:'i', text: 'I', cls: 'btn-outline-secondary', circle: true},
],
'gb': 'nes',
'nds': 'snes',
'sega32x': 'segaMD',
Expand Down
6 changes: 6 additions & 0 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -88,3 +88,9 @@ wget -O "3do/3do_arcade_saot.bin" "https://github.com/Abdess/retroarch_system/ra

mkdir atari7800
wget -O "atari7800/7800_BIOS_U.rom" 'https://github.com/Abdess/retroarch_system/raw/libretro/Atari%20-%207800/7800%20BIOS%20(U).rom'

mkdir pce
wget -O "pce/syscard3.pce" "https://github.com/Abdess/retroarch_system/raw/libretro/NEC%20-%20PC%20Engine%20-%20TurboGrafx%2016%20-%20SuperGrafx/syscard3.pce"
wget -O "pce/syscard2.pce" "https://github.com/Abdess/retroarch_system/raw/libretro/NEC%20-%20PC%20Engine%20-%20TurboGrafx%2016%20-%20SuperGrafx/syscard2.pce"
wget -O "pce/syscard1.pce" "https://github.com/Abdess/retroarch_system/raw/libretro/NEC%20-%20PC%20Engine%20-%20TurboGrafx%2016%20-%20SuperGrafx/syscard1.pce"
wget -O "pce/gexpress.pce" "https://github.com/Abdess/retroarch_system/raw/libretro/NEC%20-%20PC%20Engine%20-%20TurboGrafx%2016%20-%20SuperGrafx/gexpress.pce"
20 changes: 20 additions & 0 deletions storage/core_options.go
Original file line number Diff line number Diff line change
Expand Up @@ -710,6 +710,24 @@ var CoreOptionsParallelN64 = []CoreOption{
{Id: "parallel-n64-boot-device", Name: "parallel-n64-boot-device", Variants: "Default|64DD IPL", Default: "Default"},
}

var CoreOptionsBeetlePCE = []CoreOption{
{Id: "pce_palette", Name: "pce_palette", Variants: "RGB|Composite", Default: "RGB"},
{Id: "pce_psgrevision", Name: "pce_psgrevision", Variants: "HuC6280|HuC6280A", Default: "HuC6280A"},
{Id: "pce_mouse_sensitivity", Name: "pce_mouse_sensitivity", Variants: "0.125|0.250|0.375|0.500|0.625|0.750|0.875|1.000|1.125|1.25|1.50|1.75|2.00|2.25|2.50|2.75|3.00|3.25|3.50|3.75|4.00|4.25|4.50|4.75|5.00", Default: "1.25"},
{Id: "pce_default_joypad_type_p1", Name: "pce_default_joypad_type_p1", Variants: "2 Buttons|6 Buttons", Default: "2 Buttons"},
{Id: "pce_default_joypad_type_p2", Name: "pce_default_joypad_type_p2", Variants: "2 Buttons|6 Buttons", Default: "2 Buttons"},
{Id: "pce_default_joypad_type_p3", Name: "pce_default_joypad_type_p3", Variants: "2 Buttons|6 Buttons", Default: "2 Buttons"},
{Id: "pce_default_joypad_type_p4", Name: "pce_default_joypad_type_p4", Variants: "2 Buttons|6 Buttons", Default: "2 Buttons"},
{Id: "pce_default_joypad_type_p5", Name: "pce_default_joypad_type_p5", Variants: "2 Buttons|6 Buttons", Default: "2 Buttons"},
{Id: "pce_Turbo_Delay", Name: "pce_Turbo_Delay", Variants: "Fast|Medium|Slow", Default: "Fast"},
{Id: "pce_cdbios", Name: "pce_cdbios", Variants: "Games Express|System Card 1|System Card 2|System Card 3|System Card 2 US|System Card 3 US", Default: "System Card 3"},
{Id: "pce_cdspeed", Name: "pce_cdspeed", Variants: "1|2|4|8", Default: "1"}, {Id: "pce_adpcmextraprec", Name: "pce_adpcmextraprec", Variants: "10-bit|12-bit", Default: "10-bit"},
{Id: "pce_adpcmvolume", Name: "pce_adpcmvolume", Variants: "0|10|20|30|40|50|60|70|80|90|100|110|120|130|140|150|160|170|180|190|200", Default: "100"},
{Id: "pce_cddavolume", Name: "pce_cddavolume", Variants: "0|10|20|30|40|50|60|70|80|90|100|110|120|130|140|150|160|170|180|190|200", Default: "100"},
{Id: "pce_cdpsgvolume", Name: "pce_cdpsgvolume", Variants: "0|10|20|30|40|50|60|70|80|90|100|110|120|130|140|150|160|170|180|190|200", Default: "100"},
{Id: "pce_ocmultiplier", Name: "pce_ocmultiplier", Variants: "1|2|3|4|5|6|7|8|9|10|20|30|40|50", Default: "1"},
}

func CoreOptionsByCore(core string) []CoreOption {
switch core {
case "fceumm":
Expand Down Expand Up @@ -760,6 +778,8 @@ func CoreOptionsByCore(core string) []CoreOption {
return CoreOptionsStella2014
case "parallel_n64":
return CoreOptionsParallelN64
case "mednafen_pce":
return CoreOptionsBeetlePCE
}
return []CoreOption{}
}
Expand Down
64 changes: 64 additions & 0 deletions storage/defaults.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ var (
"lynx",
"mame2003",
"arcade",
"pce",
}

Platforms = map[string]Platform{
Expand Down Expand Up @@ -196,6 +197,11 @@ var (
Name: "Atari 2600",
Extensions: []string{"a26"},
},
"pce": {
Id: "pce",
Name: "NEC TurboGrafx-16 / SuperGrafx / PC Engine",
Extensions: []string{"pce"},
},
"": {
Id: "",
Name: "Undefined",
Expand Down Expand Up @@ -225,6 +231,7 @@ var (
"3do": {"opera"},
"atari7800": {"prosystem"},
"atari2600": {"stella2014"},
"pce": {"mednafen_pce"},
}

Bioses = map[string][]Bios{
Expand Down Expand Up @@ -521,6 +528,32 @@ var (
},
},
"atari2600": {},
"pce": {
Bios{
Name: "syscard3.pce",
Url: "/assets/bios/pce/syscard3.pce",
Hash: "79f5ff55dd10187c7fd7b8daab0b3ffbd1f56a2c",
Description: "Super CD-ROM2 System V3.xx",
},
Bios{
Name: "syscard2.pce",
Url: "/assets/bios/pce/syscard2.pce",
Hash: "88da02e2503f7c32810f5d93a34849d470742b6d",
Description: "CD-ROM System V2.xx",
},
Bios{
Name: "syscard1.pce",
Url: "/assets/bios/pce/syscard2.pce",
Hash: "a39a66da7de6ba94ab84d04eef7afeec7d4ee66a",
Description: "CD-ROM System V1.xx",
},
Bios{
Name: "gexpress.pce",
Url: "/assets/bios/pce/gexpress.pce",
Hash: "014881a959e045e00f4db8f52955200865d40280",
Description: "Game Express CD Card",
},
},
}

//Configuration reference: https://retropie.org.uk/docs/RetroArch-Configuration
Expand Down Expand Up @@ -741,6 +774,17 @@ var (
Right: "arowright",
}

DefaultControlsPCEngine = EmulatorControlsMapping{
A: "z", //I
B: "x", //II
Select: "v", //Select
Start: "enter", //Run
Up: "arrowup",
Down: "arrowdown",
Left: "arrowleft",
Right: "arrowright",
}

DefaultControlsOther = EmulatorControlsMapping{
B: "x",
Y: "s",
Expand Down Expand Up @@ -1214,6 +1258,26 @@ func DefaultEmulatorSettings(systemType string) EmulatorSettings {
},
},
}

case "pce":
return EmulatorSettings{
Core: Cores["pce"][0],
Bios: "",
ColorScheme: DefaultColorScheme,
ColorBackground: DefaultColorBackground,
CacheLimit: DefaultCacheLimit,
Volume: DefaultVolume,
FastForwardRatio: DefaultFastForwardRatio,
SlowMotionRatio: DefaultSlowMotionRatio,
RewindGranularity: DefaultRewindGranularity,
Shader: Shaders[0].Value,
Buttons: DefaultButtons,
Controls: [4]EmulatorControls{
{
Keyboard: DefaultControlsPCEngine,
},
},
}
}

return EmulatorSettings{}
Expand Down
8 changes: 1 addition & 7 deletions web/handlers_settings.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package web

import (
"errors"
"fmt"
"github.com/flosch/pongo2/v6"
"github.com/labstack/echo/v4"
Expand Down Expand Up @@ -45,7 +44,7 @@ func (s *Server) settingsByPlatformForm(c echo.Context) error {
settings := context.settings
platformSettings, ok := settings.EmulatorSettings[platform]
if !ok {
return errors.New("platform not found")
platformSettings = storage.DefaultEmulatorSettings(platform)
}

return c.Render(http.StatusOK, "settings_platform", pongo2.Context{
Expand All @@ -71,11 +70,6 @@ func (s *Server) settingsByPlatformSubmit(c echo.Context) error {

settings := context.settings

_, ok := settings.EmulatorSettings[platform]
if !ok {
return errors.New("platform not found")
}

settings.EmulatorSettings[platform] = settingsCollectFormData(c)

if _, err := s.storage.SettingsSave(*settings); err != nil {
Expand Down

0 comments on commit 5b29612

Please sign in to comment.