pico-duke3D: Duke Nukem 3D op de RP2350

Omdat de game-data op de kaart blijft staan, kan men eenvoudig schakelen tussen de shareware-episode en de volledige Atomic Edition door simpelweg één bestand te vervangen.

Functionaliteiten

De volgende functies zijn werkend geïmplementeerd:

  • Video: Video via HDMI.
  • Audio: Geluidseffecten en Adlib / Sound Blaster-muziek.
  • Invoer: USB-gamepads en toetsenborden, plus NES-, SNES- en Wii Classic-controllers op boards die over de juiste connectoren beschikken.
  • Opslag: Savegames, instellingen en screenshots worden op de SD-kaart bewaard.
  • Foutmeldingen: Fouten worden direct op het scherm getoond, waardoor een seriële kabel of computer niet nodig is om problemen te diagnosticeren.
  • Uitvoering: Werkt stand-alone of via het pico-bootLoader menu.

Benodigdheden

Om de poort te gebruiken, heb je het volgende nodig:

  • Een van de vier ondersteunde boards (zie hieronder).
  • Een micro SD-kaart, geformatteerd in FAT of exFAT.
  • DUKE3D.GRP: Het data-bestand van het spel. Zowel de shareware-versie als de geregistreerde of Atomic Edition werken.
  • Een HDMI-scherm en een gamepad of toetsenbord. De game kan volledig worden gespeeld, opgeslagen en geladen met enkel een gamepad.

Ondersteunde hardware

Alle onderstaande boards zijn getest en functioneel op echte hardware.

KenmerkFruit JamMurmulator M2Adafruit DVI + SDOlimex RP2040-PICO-PC
VideoHDMI 640×480HDMI 640×480HDMI 640×480HDMI 640×480
GeluidKoptelefoon of HDMI (schakelt automatisch)Koptelefoon en HDMI gelijktijdigKoptelefoon (optionele module) en HDMI gelijktijdigAudiojack en HDMI gelijktijdig
USB pad / toetsenbordDirect aansluitenOTG-adapter nodigOTG-adapter nodigDirect aansluiten op USB-A poort
NES/SNES poorten—TweeTweeEén (via UEXT-connector)
Wii Classic padJaJa——
IndicatorenKnipperende LED + 5 LED's als sound-level meterKnipperende LEDKnipperende LEDKnipperende LED
Extra vereisten——Module moet een Pimoroni Pico Plus 2 zijnPico 2 met PSRAM chip op GPIO 8
SD-map (via bootLoader)/emu/8//emu/13//emu/2//emu/15/

Aanvullende hardware-informatie

Adafruit DVI + SD Dit is een zelfbouw-optie: een Pico-vormige module op een breadboard of kleine printplaat, met een Adafruit DVI breakout voor video en een MicroSD breakout voor de kaart. Het is essentieel dat de module een Pimoroni Pico Plus 2 is en geen gewone Pico 2, omdat het spel het extra geheugen van deze module nodig heeft om te kunnen starten.

Olimex RP2040-PICO-PC Dit board wordt gebruikt met een Raspberry Pi Pico 2. Aangezien een standaard Pico 2 geen PSRAM heeft, moet er een PSRAM-chip worden gemonteerd (chip select op GPIO 8). Zonder deze chip zal het spel een foutmelding op het scherm tonen en stoppen. De PS/2-toetsenbordpoort van het board wordt niet gebruikt.

PicoNES PCB

De bovengenoemde componenten kunnen op een PCB worden gesoldeerd in plaats van op een breadboard. Dit resulteert in een volwaardige console met twee controllerpoorten en een behuizing. Het ontwerp hiervoor is de PicoNES (v2.6) door @johnedgarpark.

Belangrijke hardware-eisen voor PicoNES

Om Duke Nukem 3D op de PicoNES PCB te draaien, is er slechts één combinatie die werkt:

  • Design v2.6, een Pimoroni Pico Plus 2, en male headers die in de doorvoergaatjes zijn geplaatst.

Let op: Een standaard Pico 2 of Pico 2 W zal het spel niet kunnen draaien vanwege het ontbrekende geheugen. De Pico Plus 2 kan niet plat tegen de PCB worden gesoldeerd omdat de SP/CE-connector aan de achterzijde in de weg zit; daarom zijn de doorvoergaatjes uit v2.6 en de male headers noodzakelijk.

Onderdelenlijst

  • Pimoroni Pico Plus 2 (met gesoldeerde male headers).
  • Adafruit DVI Breakout Board.
  • Adafruit Micro SD SPI of SDIO Card Breakout Board (alleen 3V!).
  • Eén of twee NES-controllerpoorten en bijbehorende controllers (SNES-controllers werken met een adapterkabel).
  • USB-C OTG Y-kabel (voor stroomvoorziening en USB-gamepad).
  • USB-C voeding.
  • Optioneel: een aan/uit-schakelaar.

Installatie

  1. Download het juiste .uf2 bestand voor jouw board vanuit de releases-pagina.
  2. Houd de BOOT-knop op het board ingedrukt terwijl je het met een computer verbindt. Het board verschijnt als een USB-schijf.
  3. Kopieer het gedownloade bestand naar deze schijf. Het board start automatisch opnieuw op in het spel.
  4. Kopieer DUKE3D.GRP naar de SD-kaart in een map genaamd roms/duke3d en plaats de kaart in het board.
  5. Sluit de HDMI-kabel en een controller aan.

Bestandsstructuur op de SD-kaart:

  • roms/duke3d/DUKE3D.GRP (game data)
  • roms/duke3d/game0.sav (savegames)
  • roms/duke3d/duke3d.cfg (instellingen en toetsenbezetting)
  • screenshots/duke0000.png (screenshots)

Besturing

Zowel een gamepad als een toetsenbord kunnen gelijktijdig worden gebruikt; alle aangesloten controllers besturen dezelfde speler. In menu's bevestigt A de keuze en gaat B (of START) terug.

Gamepad (Retro-Go layout)

KnopIn gameIn menu's
D-pad / Left stickBewegen en draaienNavigeren
AVurenSelecteren / Bevestigen
BSpringenTerug
XBukken—
YJetpack—
L / RStrafe links / rechts—
SELECTVolgende wapen—
STARTOpenen / Gebruiken / Schakelaar omzettenTerug
L+RMenu openen—
SELECT+STARTMenu openen (voor pads zonder shoulder buttons)—

Opmerking: Er is geen aparte Run-knop; de speler rent altijd. Caps Lock kan dit uitschakelen.

Shift-modus (Inventaris)

Door START een halve seconde ingedrukt te houden, verandert de D-pad in de inventarisbesturing:

  • D-pad ↑: Geselecteerd item gebruiken (medkit, steroids, etc.).
  • D-pad ↓: Jetpack.
  • D-pad ←→: Vorige / volgende item.
  • B: Omlaag kijken.
  • X: Omhoog kijken.

Toetsenbord

De standaardbezetting kan worden aangepast via Options → Setup Keyboard. (Kpad = numeriek toetsenbord).

Beweging:

  • Vooruit / Achteruit: ↑ / ↓ of Kpad8 / Kpad2
  • Links / Rechts draaien: ← / → of Kpad4 / Kpad6
  • Strafe links / rechts: , / .
  • Strafe (vasthouden): Alt
  • Rennen (vasthouden): Shift
  • AutoRun aan/uit: Caps Lock
  • Springen: A of /
  • Bukken: Z
  • Kijken omhoog / omlaag: Kpad9 / Kpad3
  • Kijken links / rechts: Kpad0 / Kpad.
  • Richten omhoog / omlaag: Kpad7 / Kpad1
  • Zicht centreren: Kpad5

Gevechten & Interactie:

  • Vuren: Ctrl
  • Openen / Gebruiken: Spatie
  • Quick kick: C
  • Volgende / vorige wapen: ' / ;
  • Wapen selecteren (1-0): 1…0
  • Omdraaien: Backspace
  • Wapen wegsteken: Scroll Lock
  • Wapen-icoon verbergen: S
  • Auto-aim aan/uit: V
  • Crosshair aan/uit: I

Inventaris:

  • Item gebruiken: Enter of Kpad Enter
  • Vorige / volgende item: [ / ]
  • Medkit: M
  • Steroids: R
  • Jetpack: J
  • Night vision: N
  • Holo Duke: H

Systeem:

  • Menu openen: Escape
  • Pause: Pause
  • Overhead map: Tab
  • Map follow mode: F
  • Zoom in / uit: - / = of Kpad- / Kpad+

Functietoetsen:

  • F1: Help scherm
  • F2 / F3: Game opslaan / laden
  • F4: Geluidsinstellingen
  • F5: Naam van muziektrack tonen
  • F6: Quicksave (na eerste normale save)
  • F7: Third-person view aan/uit
  • F8: Berichten aan/uit
  • F9: Quickload
  • F10: Afsluiten
  • F11: Helderheid omhoog / omlaag (Shift+F11)
  • F12: Screenshot

Geavanceerde Functies

Opslaan en Laden

Dit kan ook zonder toetsenbord via de gamepad: L+R (of SELECT+START) → Menu → Save Game → Slot selecteren → A om te bevestigen.

Screenshots

Met F12 wordt het huidige frame opgeslagen als een PNG in de map /screenshots/. De beelden zijn in de oorspronkelijke resolutie van 320×200. Let op: omdat de pixels niet vierkant zijn, kunnen de beelden in een moderne viewer iets "uitgerekt" lijken.

Bootsel-modus

Via OPTIONS → BOOTSEL MODE kan het board worden herstart als USB-schijf voor het flashen van firmware, zonder dat de fysieke BOOT-knop ingedrukt hoeft te worden. Dit is zeer handig wanneer het board in een behuizing is geplaatst.

Probleemoplossing

Fouten worden direct op het scherm getoond via een tekstconsole.

BerichtOorzaak
No SD cardKaart niet geplaatst of niet geformatteerd in FAT/exFAT.
/roms/duke3d or DUKE3D.GRP missingVerkeerde mapnaam of bestand ontbreekt.
Memory errorVerkeerde module gebruikt (zie hardware-sectie).
Corrupt or unrecognised game dataDUKE3D.GRP is beschadigd; opnieuw kopiëren.

Hardware checks:

  • LED: De onboard LED knippert ongeveer één keer per seconde tijdens het tekenen van frames. Stopt de LED terwijl er een beeld staat? Dan is het spel gecrasht. Brandt de LED nooit? Dan is het spel niet gestart.
  • Geluid (Fruit Jam): Als er geen geluid is bij een Wii-pad, kan dit komen door een gedeelde verbinding. Koppel de pad los en reset het board.
  • SNES-pad quirk: Bij een SNES-pad in een NES/SNES-poort kan de eerste druk na het opstarten onjuist worden geïnterpreteerd (bijv. vuren in plaats van springen). Druk één keer op A, X, L of R om de modus te corrigeren.

Credits

  • Port: Frank Hoedemakers, met code geschreven door Claude Code.
  • Testing: Gavin Knight (DynaMight1124).
  • Basis: Gebouwd op Chocolate Duke3D en de BUILD-engine van Ken Silverman.
  • Copyright: Duke Nukem 3D is © 3D Realms. Game-data is niet inbegrepen bij deze poort.