Dungeons of Doom

Over het spel

Dungeons of Daggorath was een zeer populaire first-person RPG uit het begin van de jaren 80, compatibel met de Tandy TRS-80 Color Computer 1, 2 en 3. Het was een van de vroege driedimensionale games waarin de speler kerkers kon verkennen en monsters kon bestrijden via een tekstgebaseerde interface. Deze interface werd gebruikt om te bewegen, te vechten, items op te pakken of te gebruiken, en meer.

Omdat de meeste acties bestaan uit bewegen en aanvallen, kan de tekstinterface traag en onhandig aanvoelen. Daarom is de broncode aangepast om de rechter joystick te ondersteunen. Het bewegen van de joystick verplaatst de speler door de kerker en de knop activeert het commando ATTACK RIGHT.

Daarnaast zijn er enkele personages uit Doom toegevoegd ter vervanging van de originele vijanden. Hoewel de CoCo geen volledige versie van Doom kan draaien, boot deze hack de sfeer ervan na. Voor wie dat wil, is er ook een optie om de speler onbeperkte kracht en gezondheid te geven, wat ideaal is voor het verkennen en testen van de game.

Technische details en distributie

Na het assembleren kan het binaire bestand worden gebrand op een ROM-chip die in de cartridgepoort wordt geplaatst, of worden uitgevoerd in een geschikte emulator. De broncode is geassembleerd met LWASM.

De voormalige CEO van DynaMicro, Inc. heeft de originele broncode vriendelijk vrijgegeven voor publieke distributie. Echter, omdat deze versie is aangepast, kan de gewijzigde code niet direct worden verspreid. Men kan Dungeons of Doom zelf recreëren door de volgende stappen te volgen:

  1. Download de originele 6809-broncode.
  2. Voer de onderstaande modificaties uit.
  3. Assembleer de code.

Aanpassingen aan de originele broncode

In CD.ASM

Voeg na regel 623 het volgende toe:

TEMP1   RMB     1                ; NAB
BAGP    RMB     2                ; NAB

In HUMAN.ASM

Vervang regel 13 door:

LBNE    PLAY20          ;   yes ; NAB: BNE to LBNE

Voeg op regel 17, na het label PLAY10, de volgende code toe voor de joystick-input:

; NAB - check for joystick input.
; Joystick button.
        LDA     65280
        ANDA    #1
        CMPA    #0
        BNE     NOBUTTONPRESS
                ; Attack right.
        LDU     #PRHAND
        JSR     ATTACKRIGHT
        JMP     NOMOVE
NOBUTTONPRESS
        JSR     [$A00A]         ; BASIC joystick reading routine.
        LDA     $015B           ; Right joystick y-axis
        CMPA    #10
        BHI     NOMOVEFORWARD
                ; Move forward
        JSR     PMOVEFORWARD
        JMP     NOMOVE
NOMOVEFORWARD
        CMPA    #50
        BLO     NOMOVEBACKWARD
                ; Move backward
        JSR     PMOVEBACKWARD
        JMP     NOMOVE
NOMOVEBACKWARD
        LDA     $015A           ; Right joystick x-axis
        CMPA    #10
        BHI     NOMOVELEFT
                ; Move left
        LDB     PDIR
        JSR     PMOVELEFT
        JMP     NOMOVE
NOMOVELEFT
        CMPA    #50
        BLO     NOMOVE
                ; Move right
        LDB     PDIR
        JSR     PMOVERIGHT
NOMOVE        ; NAB - END check for joystick input.

Vervang regel 47 door:

LBRA    PLAY10         ;loop ; NAB - BRA to LBRA

In HUPDAT.ASM

(Optioneel) Voor oneindige gezondheid: voeg na regel 40 het volgende toe:

CLRA                    ; NAB - IDDQD
        CLRB
        STD PDAM

In ONCE.ASM

Voeg na regel 284 toe:

CLR     TEMP1

(Optioneel) Voor oneindige kracht: voeg na regel 288 toe:

LDA     #$7F            ; NAB - Max power.
        STA     PPOW

In PATTK.ASM

Voeg na regel 11 het volgende label toe:

ATTACKRIGHT

In PTURN.ASM

Voeg de volgende labels toe op de aangegeven posities:

  • Na regel 20: PMOVELEFT
  • Na regel 29: PMOVERIGHT
  • Na regel 153: PMOVEFORWARD
  • Na regel 166: PMOVEBACKWARD

In SOUNDS.ASM

Voeg op regel 16, na het label SOUNDI, het volgende in:

; NAB - sound back on (reading joystick turns it off)
        STA     TEMP1
        LDA     $FF23
        ORA     #8
        STA     $FF23
        LDA     TEMP1

Vervang de volgende regels:

  • Regel 198: SNRAT1 LBSR SNOISE ;get a random noise value ; NAB - L
  • Regel 279: SNWSH2 LBSR SNZNVA ;get some noise ; NAB - L
  • Regel 285: SNWSH1 LBSR SNENVN ;decompression subroutine ; NAB - L

Voeg op regel 309, na het label SNOUT, het volgende toe:

; NAB - sound back on (reading joystick turns it off)...