Skip to content

Commit

Permalink
Merge pull request #931 from dionoid/master
Browse files Browse the repository at this point in the history
Added files for new Philips P2000T (M2000) core
  • Loading branch information
fpscan authored Mar 28, 2024
2 parents d599726 + c8e6cbf commit c4de5a8
Show file tree
Hide file tree
Showing 7 changed files with 152 additions and 6 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
.DS_Store
docs/.DS_Store
.DS_Store
.venv
1 change: 1 addition & 0 deletions docs/development/licenses.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ See below for a summary of the licenses behind RetroArch and its cores:
| [Kronos](../library/kronos.md) | [GPLv2](https://github.com/libretro/yabause/blob/kronos/yabause/COPYING) | |
| [LowRES NX](../library/lowres_nx.md) | [zlib](https://github.com/timoinutilis/lowres-nx/blob/master/LICENSE) | |
| [Lutro](../library/lutro.md) | [MIT](https://github.com/libretro/libretro-lutro/blob/master/LICENSE) | |
| M2000 | [GPLv3](https://github.com/p2000t/M2000/blob/main/LICENSEE) | |
| MAME | [BSD-3-Clause & GNU GPLv2](http://mamedev.org/legal.html) | |
| MAME 2000 | [MAME (Non-commercial)](https://github.com/libretro/mame2000-libretro/blob/master/readme.txt) | Non-commercial |
| [MAME 2003](../library/mame_2003.md) | [MAME (Non-commercial)](https://github.com/libretro/mame2003-libretro/blob/master/LICENSE.md) | Non-commercial |
Expand Down
Binary file added docs/image/core/m2000/machine.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
142 changes: 142 additions & 0 deletions docs/library/m2000.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
# Philips - P2000T (M2000)

![](../image/core/m2000/machine.png)

## Background

The P2000T was Philips' first home computer, before they later switched to manufacturing MSX computers. The P2000T was a Z80-powered machine which launched in 1981 and was built like a tank. It featured an integrated keyboard, power supply, two cartridge slots and a very innovative and fast Mini-Cassette system (MDCR), which was fully automated and used mini tapes that could hold up to 42 kilobytes of data.

The P2000T was reasonably popular among hobbyists and kids in elementary schools in The Netherlands, as Philips promoted the machine strongly in the science and education sectors. Because of the relatively high introductory price and the fact that its SAA5050 video chip only supported teletext display mode, the P2000T never became the success that Philips hoped for.

While the system's video and sound capabilities were rather limited, some developers still were able to create remarkably good games, like a Pac-Man clone named "Ghosthunt", a Phoenix clone named "Fraxxon", a Lady Bug clone named "Lazy Bug" and a Breakout clone named "Brick-Wall".

The P2000T (M2000) emulator core has been authored by:

- Dion Olsthoorn
- Marcel the Kogel (who wrote the original emulator back in 1997)

and is licensed under:

- [GPL3](https://github.com/p2000t/M2000/blob/main/LICENSE)

A summary of the licenses behind RetroArch and its cores can be found [here](../development/licenses.md).

## Extensions

Content that can be loaded by the M2000 core have the following file extensions:

- .cas
- .p2000t

## Features

Frontend-level settings or features that the M2000 core respects:

| Feature | Supported |
|-------------------|:---------:|
| Restart ||
| Screenshots ||
| Saves ||
| States ||
| Rewind ||
| Netplay ||
| Core Options ||
| RetroAchievements ||
| RetroArch Cheats ||
| Native Cheats ||
| Controls ||
| Remapping ||
| Multi-Mouse ||
| Rumble ||
| Sensors ||
| Camera ||
| Location ||
| Subsystem ||
| [Softpatching](../guides/softpatching.md) ||
| Disk Control ||
| Username ||
| Language ||
| Crop Overscan ||
| LEDs ||

## Directories

The M2000 core's library name is 'M2000'.

## Geometry and timing

- The M2000 core's core provided FPS is `50`
- The M2000 core's core provided sample rate is `30000`
- The M2000 core's base width is `640`
- The M2000 core's base height is `480`
- The M2000 core's max width is `640`
- The M2000 core's max height is `480`
- The M2000 core's core provided aspect ratio is `4/3`

## Usage

Playing P2000T games using the M2000 core works best when the core is in **'Game Focus'** mode, which allows it to take precedence in inputs. The reason is that **every** P2000T game relies on keyboard input and even the buttons of the RetroPad controller are internally emulating actual key presses.

The easiest way to automatically enable 'Game Focus' mode for the M2000 core is in **Settings > Input** where you set the option called **Auto Enable 'Game Focus' Mode** to `Detect`. Or correspondingly in retroarch.cfg set `input_auto_game_focus = "2"`. Be aware that the default hotkey for toggling the **Game Focus** mode is the **Scroll Lock** key, which might not be present on your keyboard. If that's the case, you'll need to remap it - for example to the **Tab** key.

## User 1 device types

The M2000 core supports the following device type(s) in the controls menu, bolded device types are the default for the specified user(s):

- **RetroKeyboard** - Keyboard. Keyboard inputs are always active.
- RetroPad - Joypad. The buttons are internally mapped to actual key presses (see information below).

## Joypad

| RetroPad Inputs | P2000T |
|---------------------------------------------|-----------|
| ![](../image/retropad/retro_a.png) | Space |
| ![](../image/retropad/retro_b.png) | Space |
| ![](../image/retropad/retro_start.png) | < START > |
| ![](../image/retropad/retro_select.png) | < STOP > |
| ![](../image/retropad/retro_dpad_up.png) | Up |
| ![](../image/retropad/retro_dpad_down.png) | Down |
| ![](../image/retropad/retro_dpad_left.png) | Left |
| ![](../image/retropad/retro_dpad_right.png) | Right |

### Joypad remapping for games that use alternative keys (e.g. Fraxxion)

Some P2000T games use alternative keys for navigation. An example is Fraxxion, which uses the **Left** and **Up** keys to move the spaceship horizontally, which was probably done for better control on the original P2000T keyboard.
To be able to use the D-pad for horizontal movement in the emulator, you should start Fraxxion, then open the menu and go to **Quick Menu > Controls > Port 1 Controls** and remap **D-Pad Right** to RetroPad **Up**. Now return to **Quick Menu > Controls**, click **Manage Remap Files** and select **Save Game Remap File** to save the remapping for Fraxxion only.

## Keyboard

| RetroKeyboard Inputs | P2000T Key |
|------------------------------|---------------------------|
| Keyboard a .. z | a .. z |
| Keyboard 0 .. 9 | 0 .. 9 |
| Keyboard Backspace | Backspace |
| Keyboard Return | Enter |
| Keyboard Space | Space |
| Keyboard Double Quote " | Double Quote " |
| Keyboard Slash / | Slash / |
| Keyboard Question ? | Question ? |
| Keyboard Comma , | Comma , |
| Keyboard Minus - | Minus - |
| Keyboard Period . | Period . |
| Keyboard Underscore _ | Underscore _ |
| Keyboard Backquote ` | < CODE > |
| Keyboard Keypad 0 .. 9 | 0 .. 9 |
| Keyboard Keypad Period . | Period . |
| Keyboard Keypad Enter | Enter |
| Keyboard Up | Up |
| Keyboard Down | Down |
| Keyboard Right | Right |
| Keyboard Left | Left |
| Keyboard F1 | < START > |
| Keyboard F2 | < STOP > |
| Keyboard F3 | < ZOEK > |

## External Links

- [Libretro M2000 Core info file](https://github.com/libretro/libretro-super/blob/master/dist/info/m2000_libretro.info)
- [Official M2000 Github Repository](https://github.com/p2000t/M2000)
- [Report M2000 Issues Here](https://github.com/p2000t/M2000/issues)
- [Wikipedia page on the Philips P2000T](https://en.wikipedia.org/wiki/Philips_P2000#P2000T)
- [P20000T documentation](https://github.com/p2000t/documentation)
- [P20000T game collection](https://github.com/p2000t/software/tree/master/cassettes/games)
4 changes: 2 additions & 2 deletions docs/library/o2em.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Magnavox - Odyssey2 / Phillips Videopac+ (O2EM)
# Magnavox - Odyssey2 / Philips Videopac+ (O2EM)

<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/JvxqCJS0hyg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Expand Down Expand Up @@ -40,7 +40,7 @@ Content that can be loaded by the O2EM core have the following file extensions:
RetroArch database(s) that are associated with the O2EM core:

- [Magnavox - Odyssey2](https://github.com/libretro/libretro-database/blob/master/rdb/Magnavox%20-%20Odyssey2.rdb)
- [Phillips - Videopac+](https://github.com/libretro/libretro-database/blob/master/rdb/Philips%20-%20Videopac%2B.rdb)
- [Philips - Videopac+](https://github.com/libretro/libretro-database/blob/master/rdb/Philips%20-%20Videopac%2B.rdb)

## Features

Expand Down
3 changes: 2 additions & 1 deletion docs/meta/core-list.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@
| Kronos | Sega Saturn/ST-V | A port of the Kronos, which is itself a fork of Yabause emulator |
| LowRes NX | Game engine | A port of the LowRes NX fantasy console to libretro |
| Lutro | Game engine | An experimental Lua game framework for libretro, based on a subset of the LOVE API |
| M2000 | Philips P2000T | A port of M2000, the portable Philips P2000 emulator to libretro |
| MAME (Current) | Arcade/Console/various | Based on MAME development branch. Full list of supported systems: http://adb.arcadeitalia.net/mame.php |
| MAME 2000 | Arcade/Console/various | (See MAME note) |
| MAME 2003 | Arcade/Console/various | (See MAME note) |
Expand Down Expand Up @@ -139,7 +140,7 @@
| nSide Balanced | Nintendo SNES/SFC/Game Boy/Color | |
| Numero | TI-83 | A TI-83 Emulator for Libretro |
| NXEngine | Game engine | An open-source reimplementation of the Cave Story / Doukutsu engine |
| O2EM | Magnavox Odyssey2/Phillips Videopac+ | |
| O2EM | Magnavox Odyssey2/Philips Videopac+ | |
| Oberon | Oberon RISC machine | An emulator for the Oberon RISC machine, ported to libretro |
| OpenLara | Game engine | A port of the OpenLara free/open re-implementation of the engine used by the original Tomb Raider series |
| OpenTyrian | Game | A port of the OpenTyrian clone of the classic Tyrian shmup, ported to libretro |
Expand Down
7 changes: 4 additions & 3 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ nav:
- 'GCE Emulation':
- 'GCE - Vectrex (vecx)': 'library/vecx.md'
- 'Magnavox Emulation':
- 'Magnavox - Odyssey2 / Phillips Videopac+ (O2EM)': 'library/o2em.md'
- 'Magnavox - Odyssey2 / Philips Videopac+ (O2EM)': 'library/o2em.md'
- 'Mattel Emulation':
- 'Mattel - Intellivision (FreeIntv)': 'library/freeintv.md'
- 'Microsoft Emulation':
Expand Down Expand Up @@ -201,8 +201,9 @@ nav:
- 'NEC - PC Engine SuperGrafx (Beetle SGX)': 'library/beetle_sgx.md'
- 'NEC - PC Engine / CD (Beetle PCE FAST)': 'library/beetle_pce_fast.md'
- 'NEC - PC-FX (Beetle PC-FX)': 'library/beetle_pc_fx.md'
- 'Phillips Emulation':
- 'Magnavox - Odyssey2 / Phillips Videopac+ (O2EM)': 'library/o2em.md'
- 'Philips Emulation':
- 'Magnavox - Odyssey2 / Philips Videopac+ (O2EM)': 'library/o2em.md'
- 'Philips - P2000T (M2000)': 'library/m2000.md'
- 'RISC-V Emulation':
- 'RVVM - RISC-V Virtual Machine': 'library/rvvm.md'
- 'SNK Emulation':
Expand Down

0 comments on commit c4de5a8

Please sign in to comment.