Skip to content

Commit 48a883c

Browse files
authored
Merge pull request #28 from fhoedemakers/Development
Themed borders added
2 parents 872caa6 + 05799ff commit 48a883c

18 files changed

Lines changed: 25779 additions & 182 deletions

CHANGELOG.md

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@
77

88
[See setup section in in Pico-infoNesPlus readme how to install and wire up](https://github.com/fhoedemakers/pico-infonesPlus#pico-setup)
99

10+
# v0.21 Release Notes
11+
12+
- In-game hotkeys are now consistent with the other emulators.
13+
- On RP2350 based boards: Themed borders/bezels are shown in-game. For this you need the latest [metadata pack](https://github.com/fhoedemakers/pico-smsplus/releases/latest/download/SMSPlusMetadata.zip) from the releases section. Download and unzip it's contents to the root of the SD card.
14+
- Support for [Retro-bit 8 button Genesis-USB](https://www.retro-bit.com/controllers/genesis/#usb).
15+
1016
# v0.20 Release Notes
1117

1218
- Added support for [Adafruit Fruit Jam](https://www.adafruit.com/product/6200):
@@ -137,7 +143,7 @@ For the latest two player PCB 2.0, you need:
137143
| Board | Binary | Readme |
138144
|:--|:--|:--|
139145
| Waveshare RP2040-Zero | [picosmsPlus_WaveShareRP2040ZeroWithPCB_arm.uf2](https://github.com/fhoedemakers/pico-smsplus/releases/latest/download/picosmsPlus_WaveShareRP2040ZeroWithPCB_arm.uf2) | [Readme](README.md#pcb-with-waveshare-rp2040rp2350-zero) |
140-
| Waveshare RP2350-Zero | [picosmsPlus_WaveShareRP2350PiZero_arm_piousb.uf2](https://github.com/fhoedemakers/pico-smsplus/releases/latest/download/picosmsPlus_WaveShareRP2350PiZero_arm_piousb.uf2) | [Readme](https://github.com/fhoedemakers/pico-infonesPlus/blob/main/README.md#pcb-with-waveshare-rp2040rp2350-zero) |
146+
| Waveshare RP2350-Zero | [picosmsPlus_WaveShareRP2350ZeroWithPCB_arm.uf2](https://github.com/fhoedemakers/pico-smsplus/releases/latest/download/picosmsplus_WaveShareRP2350ZeroWithPCB_arm.uf2) | [Readme](README.md#pcb-with-waveshare-rp2040rp2350-zero) |
141147

142148
PCB: [Gerber_PicoNES_Mini_PCB_v2.0.zip](https://github.com/fhoedemakers/pico-smsplus/releases/latest/download/Gerber_PicoNES_Mini_PCB_v2.0.zip)
143149

@@ -171,7 +177,13 @@ PCB: [Gerber_PicoNES_Micro_v1.2.zip](https://github.com/fhoedemakers/pico-smsplu
171177
- Metadata: [SMSPlusMetadata.zip](https://github.com/fhoedemakers/pico-smsplus/releases/latest/download/SMSPlusMetadata.zip)
172178

173179

174-
Extract the zip file to the root folder of the SD card. Select a game in the menu and press START to show more information and box art. Works for most official released games. Screensaver shows floating random cover art.
180+
Extract the zip file to the root folder of the SD card. Select a game in the menu and press START to show more information and box art. Works for most official released games. Screensaver shows floating random cover art. Works for RP2040 and RP2350.
181+
Extra on RP2350: when a game is loaded a themed bezel/border is shown.
182+
183+
184+
185+
186+
175187

176188

177189

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ add_executable(${projectname}
3737
splash.cpp
3838
DefaultSS444.c
3939
DefaultSS555.c
40+
EmuOverlay444.c
41+
EmuOverlay555.c
4042
)
4143

4244
pico_set_program_name(${projectname} "${projectname}")

EmuOverlay444.c

Lines changed: 12804 additions & 0 deletions
Large diffs are not rendered by default.

EmuOverlay555.c

Lines changed: 12804 additions & 0 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 63 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11

2-
# pico-smsplus
2+
# pico-smsplus, A Sega Master System and Game Gear emulator for RP2040/RP2350 based boards.
33

44
This software is a port of [SmsPlus](https://segaretro.org/SMS_Plus), a Sega Master System and Game Gear emulator for RP2040/RP2350 based microcontroller boards like the RaspberryPi Pico and Pico 2. Sound and video are ouput over HDMI.
55
The code for HDMI output is based on [Shuichi Takano's Pico-InfoNes project](https://github.com/shuichitakano/pico-infones) which in turn is based on [PicoDVI](https://github.com/Wren6991/PicoDVI).
66

7-
Put your Master System (.sms) and Game Gear (.gg) rom files on a FAT32 formatted SD card. You can organize the roms in directories. A menu is displayed on which you can select the rom to play.
7+
Create a FAT32 or exFAT formatted SD card and copy your Master System (.sms) and/or Game Gear (.gg) roms and optional [metadata](#using-metadata) on to it.
8+
You can organize the roms in directories. A menu is displayed on which you can select the rom to play.
89

910
Supports two controllers for two player Master System games. [See "about two player games" below for specifics and limitations](#about-two-player-games)
1011

12+
See the [releases](https://github.com/fhoedemakers/pico-smsplus/releases/latest) page for the supported RP2040/RP2350 boards.
13+
1114
***
1215

1316
## Video
@@ -16,13 +19,12 @@ Click on image below to see a demo video.
1619
[![Video](https://img.youtube.com/vi/__E8h2Ay3g8/0.jpg)](https://www.youtube.com/watch?v=__E8h2Ay3g8)
1720

1821
***
19-
## Not perfect
22+
## RP2040 notes
2023

21-
**There are still some issues to be fixed. The emulator runs decently well, especially on the Pico 2/RP2350. On the Pico/RP2040, Some games may not run at full speed or at all. (afterburner).**
24+
**The emulator works very well on the Pico 2/RP2350. On the Pico/RP2040, some games may not run at full speed or at all. (like afterburner).**
2225

2326
>[!WARNING]
2427
> On Pico/RP2040, some games show red flashing between screens. This can be occasionally or severe depending on the game. If you are sensitive for this, or experience health issues while playing those games, please stop playing immediately.
25-
> Runs much better on Pico 2/RP2350.
2628
2729
***
2830

@@ -45,7 +47,7 @@ Click on image below to see a demo video.
4547

4648
The binary specific for your config can be downloaded from the [releases](https://github.com/fhoedemakers/pico-smsplus/releases/latest) page.
4749

48-
You need a FAT32 formatted SD card to put your .sms and .gg roms on.
50+
You need a FAT32 or exFAT formatted SD card to put your .sms and .gg roms on.
4951

5052
>[!NOTE]
5153
> For detailed instructions how to setup specific configurations, see the [Pico-InfonesPlus sister project](https://github.com/fhoedemakers/pico-infonesPlus).
@@ -69,11 +71,11 @@ These boards already contain an RP2040 cpu, a separate Raspberry Pi Pico is not
6971

7072
## Other RP2350 based boards
7173

72-
- [Adafruit Metro RP2350](https://www.adafruit.com/product/6003) or [Adafruit Metro RP2350 with PSRAM](https://www.adafruit.com/product/6267)
7374

75+
- [Adafruit Fruit Jam](https://www.adafruit.com/product/6200)
76+
- [Adafruit Metro RP2350](https://www.adafruit.com/product/6003) or [Adafruit Metro RP2350 with PSRAM](https://www.adafruit.com/product/6267)
7477
- [Pimoroni Pico Plus 2](https://shop.pimoroni.com/products/pimoroni-pico-plus-2?variant=42092668289107)
75-
76-
Use the breadboard config for this. Should also work on the Pimoroni Pico DV Demo base, but currently untested. This board does not fit the PCB because of the SP/CE connector on back of the board.
78+
Use the breadboard config or Pimoroni Pico DV Demo base. This board does not fit the PCB because of the SP/CE connector on back of the board.
7779
The PSRAM on the board is used in stead of flash to load the roms from SD.
7880

7981
## Waveshare RP2040 & RP2350 Zero
@@ -89,6 +91,7 @@ The following controllers are supported.
8991
- SONY DUALSHOCK 4
9092
- SONY DualSense
9193
- Xinput type controllers (Xbox)
94+
- [Retro-bit 8 button Genesis-USB](https://www.retro-bit.com/controllers/genesis/#usb).
9295
- and more...
9396

9497
Also original NES and WII-classic controllers are supported in some configurations.
@@ -113,78 +116,79 @@ The emulator supports two player games using two NES controllers or an USB gamec
113116

114117
***
115118

116-
## Menu Usage
119+
# Gamepad and keyboard usage
120+
Below the button mapping for different controllers. You can also use a USB-keyboard.
121+
| | (S)NES | Genesis | XInput | Dual Shock/Sense |
122+
| --- | ------ | ------- | ------ | ---------------- |
123+
| Button1 | B (*) | A | A | X |
124+
| Button2 | A | B | B | Circle |
125+
| Select | select | Mode or C | Select | Select |
126+
127+
(*) On SNES USB-controller press Y once to activate the B-button.
128+
129+
## In menu
117130
Gamepad buttons:
118131
- UP/DOWN: Next/previous item in the menu.
119132
- LEFT/RIGHT: next/previous page.
120-
- A (Circle): Open folder/flash and start game.
121-
- B (X): Back to parent folder.
122-
- START: Starts game currently loaded in flash.
133+
- Button2 : Open folder/flash and start game.
134+
- Button1 : Back to parent folder.
135+
- START: Show metadata and box art (when available).
123136

124137
The colors in the menu can be changed and saved:
125138
- Select + Up/Down changes the foreground color.
126139
- Select + Left/Right changes the background color.
127-
- Select + A saves the colors. Screen will flicker when saved.
128-
- Select + B resets the colors to default. (Black on white)
129-
130-
131-
## Emulator (in game)
132-
Gamepad buttons:
133-
- SELECT + START: Resets back to the SD Card menu. Game saves (when available) are saved to the SD card.
134-
- SELECT + UP/SELECT + DOWN: switches screen modes.
135-
- SELECT + A/B: toggle rapid-fire.
136-
- START + A : Toggle framerate display.
137-
- SELECT + LEFT: Switch audio output to the connected speakers on the line-out jack of the Pimoroni Pico DV Demo Base. The speaker setting will be remembered when the emulator is restarted.
140+
- Select + Button2 saves the colors. Screen will flicker when saved.
141+
- Select + Button1 resets the colors to default. (Black on white)
138142

139-
When using an USB-Keyboard:
140-
- Cursor keys: Up, Down, left, right
141-
- Z: Back to parent folder
142-
- X: Open Folder/flash and start a game
143-
- S: Starts game currently loaded in flash.
144-
- A: acts as the select button.
145143

146144
## Emulator (in game)
147145
Gamepad buttons:
148146
- SELECT + START, Xbox button: Resets back to the SD Card menu. Game saves are saved to the SD card.
149147
- SELECT + UP/SELECT + DOWN: switches screen modes.
150-
- SELECT + A/B: toggle rapid-fire.
151-
- START + A : Toggle framerate display
152-
- SELECT + LEFT: Switch audio output to the connected speakers on the line-out jack of the Pimoroni Pico DV Demo Base. The speaker setting will be remembered when the emulator is restarted.
153-
154-
When using a Genesis Mini controller, press C for SELECT.
155-
156-
When using an USB-Keyboard
157-
- Cursor keys: up, down, left, right
158-
- A: Select
159-
- S: Start
160-
- Z: B
161-
- X: A
162-
163-
>[!NOTE]
164-
> The standard NES style layout is used for all controller types. So when using XInput controllers, B and A are swapped.
148+
- START + Button2 : Toggle framerate display
149+
- **Pimoroni Pico DV Demo Base only**: SELECT + LEFT: Switch audio output to the connected speakers on the line-out jack of the Pimoroni Pico DV Demo Base. The speaker setting will be remembered when the emulator is restarted.
150+
- **Fruit Jam Only**
151+
- pushbutton 1 (on board): Mute audio of built-in speaker. Audio is still outputted to the audio jack.
152+
- SELECT + UP: Toggle scanlines.
153+
- pushbutton 2 (on board) or SELECT + RIGHT: Toggles the VU meter on or off. (NeoPixel LEDs light up in sync with the music rhythm)
154+
- **Genesis Mini Controller**: When using a Genesis Mini 3 button controller, press C for SELECT. On the 8-button Genesis controllers, MODE acts as SELECT.
155+
- **USB-keyboard**: When using an USB-Keyboard
156+
- Cursor keys: up, down, left, right
157+
- A: Select
158+
- S: Start
159+
- Z: Button2
160+
- X: Button1
161+
162+
## Using metadata.
163+
164+
<img alt="Screenshot 2025-10-19 14-57-45" src="https://github.com/user-attachments/assets/da91016f-093b-4b96-8d8e-5a0f37cf2506" />
165+
166+
Download the metadata pack from the [releases page](https://github.com/fhoedemakers/pico-smsplus/releases/latest/download/SMSPlusMetadata.zip) It contains box art, game info and themed borders/bezels for many games. The metadata is used in the menu to show box art and game info when a rom is selected. When the screensaver is started, random box art is shown. Extra on RP2350 boards: When in-game, themed borders/bezels are shown around the game screen.
167+
168+
- Download pack [here](https://github.com/fhoedemakers/pico-smsplus/releases/latest/download/SMSPlusMetadata.zip).
169+
- Extract the zip contents to the **root of the SD card**.
170+
- In the menu:
171+
- Highlight a game and press **START** → show cover art and metadata.
172+
- Press **SELECT** → show full game description.
173+
- Press **Button1** → return to menu.
174+
- Press **START** or **Button2** → start the game.
175+
- **RP2350-only**: In-game: A themed bezel is shown:
176+
177+
| Master System | Game Gear |
178+
| ------------- | -------- |
179+
| <img width="320" alt="Screenshot 2025-10-19 14-57-33" src="https://github.com/user-attachments/assets/19db1e45-0cda-442f-ac1a-3b54b7ccfa84" /> | <img width="320" alt="Screenshot 2025-10-21 17-04-42" src="https://github.com/user-attachments/assets/8f9bed95-fea8-4ce8-aa1c-edcbeacb1945" /> |
165180

166181

167182
***
168183

169184
## Building from source
170185

171-
When using Visual Studio code, make sure to build in Release or RelWithDbinfo mode, as the emulator is too slow in the other modes.
172-
173-
Build shell scripts are available:
186+
Use the bld.sh script to build the project. Build using Ubuntu Linux or WSL on Windows. See the Pico SDK installation instructions on how to set up the build environment.
174187

175-
- build.sh : Builds .uf2 for the Pimoroni DV Deno Base
176-
- build_alternate.sh: For the PCB or breadboard variant
177-
- build_feather_dvi.sh: For the Adafruit feather
178-
- build_ws_rp2040_pizero.sh: For the Wavehare device
188+
Use ./bld.sh --h for options.
179189

180-
Make sure they are executable by running `chmod +x build*.sh` in the terminal.
181-
182-
The _debug.sh scripts can be use to create a debug build for each system.
190+
The resulting .uf2 file will be in the releases/ folder. Copy it to the Pico when in bootloader mode.
183191

184192
***
185193

186-
## Things to do (if possible):
187-
188-
- [ ] Improve performance
189-
- [ ] Save states
190194

assets/EmuOverlay.444

150 KB
Binary file not shown.

assets/EmuOverlay.555

150 KB
Binary file not shown.

build.sh

Lines changed: 0 additions & 10 deletions
This file was deleted.

build_alternate.sh

Lines changed: 0 additions & 14 deletions
This file was deleted.

build_alternate_debug.sh

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)