Skip to content

Commit

Permalink
firmware v1.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
polpo committed Mar 28, 2024
1 parent 4e6017b commit 28a0c6f
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 11 deletions.
20 changes: 14 additions & 6 deletions pgusinit/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# PicoGUSinit v2.0.0
# PicoGUSinit v2.1.0

PicoGUSinit (also called pgusinit, after the program's .exe file) detects and
initializes a PicoGUS card. In GUS emulation mode, it should be used instead of
Expand Down Expand Up @@ -28,11 +28,14 @@ settings. Options may be given for other settings:
* `/f firmware.uf2` - uploads firmware in the file named firmware.uf2 to the
PicoGUS.
* `/j` - enables game port joystick emulation mode (disabled by default).
* `/v x` - sets wavetable header volume to x percent (PicoGUS 2.0 boards only).
Available in all modes in case you want to use the wavetable header as an aux
input (for example for an internal CD-ROM drive).

Firmware files that come with the releases:

* `pg-gus.uf2` - GUS emulation
* `pg-adlib.uf2` - AdLib emulation
* `pg-sb.uf2` - Sound Blaster/AdLib emulation
* `pg-mpu.uf2` - MPU-401 with intelligent mode emulation
* `pg-tandy.uf2` - Tandy 3-Voice emulation
* `pg-cms.uf2` - CMS/Game Blaster emulation
Expand Down Expand Up @@ -64,14 +67,19 @@ specified in ULTRASND.
See the Compatibility List wiki for notes on programs that require these
options to be set: https://github.com/polpo/picogus/wiki/Compatibility-list

### AdLib, MPU-401, Tandy, and CMS emulation modes
### Sound Blaster/AdLib, MPU-401, Tandy, and CMS emulation modes

* `/p x` - sets the base port of the emulated card to x. Defaults to 388 for
AdLib, 330 for MPU-401, 2C0 for Tandy, and 220 for CMS.
* `/p x` - sets the base port of the emulated card to x. Defaults to 220 for
Sound Blaster, 330 for MPU-401, 2C0 for Tandy, and 220 for CMS.

### Sound Blaster/AdLib mode

* `/o x` - sets the base port of the OPL/AdLib. Defaults to 388.
* `/w` - wait on OPL2 data write. Can fix speed-sensitive early AdLib games on
fast systems (example: 688 Attack Sub).

### MPU-401 emulation mode

* `/v x` - Sets wavetable header volume to x percent (PicoGUS 2.0 boards only).
* `/s` - enable sysex delay to prevent buffer overflows on older MPU-401
revisions.
* `/n` - Fake all-notes-off for the Roland RA-50.
Expand Down
8 changes: 4 additions & 4 deletions pgusinit/pgusinit.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ typedef enum {
} card_mode_t;

void banner(void) {
printf("PicoGUSinit v2.0.1 (c) 2024 Ian Scott - licensed under the GNU GPL v2\n\n");
printf("PicoGUSinit v2.1.0 (c) 2024 Ian Scott - licensed under the GNU GPL v2\n\n");
}

const char* usage_by_card[] = {
Expand All @@ -58,8 +58,10 @@ void usage(char *argv0, card_mode_t mode) {
fprintf(stderr, " /? - show this message\n");
fprintf(stderr, " /f fw.uf2 - program the PicoGUS with the firmware file fw.uf2\n");
fprintf(stderr, " /j - enable USB joystick support\n");
fprintf(stderr, " /v x - set the volume of the wavetable header. Scale 0-100, Default: 100\n");
fprintf(stderr, " (for PicoGUS v2.0 boards only)\n");
if (mode > GUS_MODE && mode < JOYSTICK_ONLY_MODE) {
fprintf(stderr, "Sound Blaster, MPU-401, Tandy, CMS modes only:\n");
fprintf(stderr, "Sound Blaster/AdLib, MPU-401, Tandy, CMS modes only:\n");
fprintf(stderr, " /p x - set the (hex) base port address of the emulated card. Defaults:\n");
fprintf(stderr, " Sound Blaster: 220; MPU-401: 330; Tandy: 2C0; CMS: 220\n");
// "................................................................................\n"
Expand All @@ -71,8 +73,6 @@ void usage(char *argv0, card_mode_t mode) {
}
if (mode == MPU_MODE) {
fprintf(stderr, "MPU-401 mode only:\n");
fprintf(stderr, " /v x - set the volume of the wavetable header. Scale 0-100, Default: 100\n");
fprintf(stderr, " (for PicoGUS v2.0 boards only)\n");
fprintf(stderr, " /s - delay SYSEX (for rev.0 Roland MT-32)\n");
fprintf(stderr, " /n - fake all notes off (for Roland RA-50)\n");
// "................................................................................\n"
Expand Down
22 changes: 22 additions & 0 deletions sw/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,25 @@
# v1.2.0

## New features/fixes

### Sound Blaster 2.0 emulation:

The AdLib mode (`pg-adlib.uf2`) has been replaced with a _new_ Sound Blaster 2.0 mode (`pg-sb.uf2`)! Code to emulate the Sound Blaster DSP was contributed by [Kevin Moonlight](https://github.com/yyzkevin) - huge thanks to him.

* Sound Blaster 2.0 DSP support is pretty well tested but you may run into issues. Please consult the [Compatibility List](https://github.com/polpo/picogus/wiki/Compatibility-list) for titles with known issues, and feel free to [file an issue on GitHub](https://github.com/polpo/picogus/issues/new) to report any problems.
* AdLib/OPL2 emulation has been improved, fixing issues with missing/wrong notes.
* The SB base port can be set with pgusinit with the `/p` option, and the OPL/AdLib base port with the new `/o` option.
* Some older titles supporting AdLib are "speed sensitive" and have weird playback on fast systems (even with a genuine OPL2/OPL3). A new `/w` option in pgusinit can work around these issues in most circumstances.

### MPU-401 emulation:

* Fixes an issue reported by zuldan on Vogons where running pgusinit in MPU-401 mode wouldn't work on certain systems. Fixed by initing the MPU-401 and sending the reset MIDI data asynchronously, preventing IOCHRDY from being held low for too long.
* Sysex delay handled without busy wait. Shouldn't have much effect presently, but may allow MPU-401 to be emulated simultaneously with other modes in the future.

### General:

* Allows the volume of the wavetable header to be set with the `/v` option in pgusinit in all modes. This is useful if you want to use the wavetable header to mix in other external audio sources like a CD-ROM drive (connection guide coming to the Wiki).

# v1.1.0

## New features/fixes
Expand Down
2 changes: 1 addition & 1 deletion sw/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ include(pico_sdk_import.cmake)
include(pico_extras_import.cmake)

project(picogus
VERSION "1.1.0"
VERSION "1.2.0"
LANGUAGES C CXX ASM
)

Expand Down

0 comments on commit 28a0c6f

Please sign in to comment.