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:
- Download de originele 6809-broncode.
- Voer de onderstaande modificaties uit.
- 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)...
Groetjes,