If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Codename MAT (ZX Spectrum)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Codename MAT

Developer: Micromega
Publisher: Micromega
Platform: ZX Spectrum
Released in EU: 1984


SourceIcon.png This game has uncompiled source code.


Source Code Fragment

A decent chunk of the code was included in this game. The code seen below can be seen with a hex editor at the addresses listed below in the .tap dump of the game.

3599:

ALL PRINT
LD A,+150
LD (COCH),A
CALL PRINT
LD A,(IX+4)
LD (COX),A

4526:

BIT 7,(IX+31)
JR NZ BACK
LD (IX+46),+50
BIT 7

572C:

ORG -16535

‚ENDD=EA90
‚SHEL=+23387
‚NOALI=+23442
‚NAL=+23402
‚SFLAG=+23408
‚DEATH=+23397
‚KILLS=+23404
‚SCORE=+23395
‚TIME=+23673
‚PIOS=-29497
‚PRINT=+24994
‚RND=-29518
‚LARGE=-13821
‚START=-15533
‚PLX=+23444
‚PLSY=+23443
‚VELP=+23381
‚KEYS=+23477
‚INPUT=+23382
‚VELO=+23380
‚PLAN=+23414
‚LEVEL=+23399
‚CODE=-18036
JP TSTEDD
JP KEYCO
LD A,+13
LD (+23439),A
PUSH HL
LD DE,+1000
SBC HL,DE
CALL C FLSEN
POP HL
RET
‚FLSEN 
LD A,+150
LD (+23439),A
RET
‚KEYCO 
LD A,(KEYS)
CP 1
JR Z KEMPS
CP 2
JR Z PROTK
SUB A
LD BC,-4098
IN D,(C)
BIT 4,D
JR NZ ST1
SET 1,A
‚ST1   
BIT 3,D
JR NZ ST2
SET 0,A
‚ST2   
BIT 2,D
JR NZ ST3
SET 2,A
‚ST3   
BIT 1,D
JR NZ ST4
SET 3,A
‚ST4   
BIT 0,D
JR NZ ST5
SET 4,A
‚ST5   
LD (INPUT),A
RET
‚KEMPS 
IN A,+31
LD (INPUT),A
RET
‚PROTK 
SUB A
LD BC,-4098
IN D,(C)
BIT 0,D
JR NZ ST6
SET 4,A
‚ST6   
BIT 2,D
JR NZ ST7
SET 0,A
‚ST7   
BIT 3,D
JR NZ ST8
SET 3,A
‚ST8   
BIT 4,D
JR NZ ST9
SET 2,A
‚ST9   
LD BC,-2050
IN D,(C)
BIT 4,D
JR NZ ST10
SET 1,A
‚ST10  
LD (INPUT),A
RET
‚TSTEDD
LD A,(NOALI)
AND A
JR NZ TSDEL
LD (VELP-1),A
LD A,4
LD (DEATH),A
‚TSDEL 
LD A,(DEATH)
AND A
RET Z
LD A,(SFLAG)
AND +254
JR Z NOCHN
LD A,+128
LD (SFLAG),A
CALL +27000
‚NOCHN 
LD A,(DEATH)
BIT 2,A
JP NZ AMYDS
BIT 0,A
JP NZ OTOFU
BIT 1,A
JP NZ PLDES
BIT 3,A
JR NZ ETHDS
JR CRASH
‚PLDES 
CALL EXPLO
LD HL,-15593
CALL LARGE
LD HL,-15564
CALL PIOS
CALL SCOREX
JP START
‚CRASH 
LD HL,+16384
LD DE,+16385
LD BC,+4095
LD (HL),0
LDIR
CALL +25000
CALL EXPLO
LD HL,-15593
CALL LARGE
LD HL,-15751
CALL PIOS
LD B,1
LD A,(PLX)
CP B
JR Z PLAT
INC B
CP 5
JR Z PLAT
INC B
‚PLAT   
LD A,(PLSY)
DEC A
LD C,A
ADD A,A
ADD A,C
ADD A,B
LD B,A
LD HL,-29883
LD DE,9
‚XNM   
ADD HL,DE
DJNZ XNM
CALL PIOS
CALL SCOREX
JP START
‚OTOFU 
LD HL,SHEL
RES 7,(HL)
LD A,(VELP)
AND A
RET NZ
LD HL,-15642
CALL LARGE
LD HL,-15785
CALL PIOS
CALL SCOREX
JP START
‚ETHDS 
SUB A
LD (VELO),A
CALL TSTON
LD A,(VELP)
AND A
RET NZ
LD HL,-15642
CALL LARGE
LD HL,-15622
CALL PIOS
CALL SCOREX
JP START
‚AMYDS 
CALL TSTON
LD A,(VELP)
AND A
RET NZ
LD HL,-15663
CALL LARGE
LD HL,-15713
CALL PIOS
CALL SCOREX
JP START
‚TSTON 
LD A,(NAL)
CP +32
JR NZ TSSHE
LD A,(+23822)
CP 2
JR C SETVL
‚TSSHE 
LD A,(SHEL)
BIT 7,A
JR Z SETVL
BIT 1,A
RET Z
‚SETVL 
SUB A
LD (VELP),A
RET
‚SCOREX
LD HL,-15575
CALL PIOS
CALL SCCAL
LD A,+26
LD (+23426),A
LD HL,(SCORE)
CALL SCORS
SUB A
LD (+23426),A
CALL CODE
RET
JP ENDD
‚SCORS 
LD IX,+23420
SUB A
LD DE,+1000
‚SU2   
SBC HL,DE
JR C ADX2
INC A
JR SU2
‚ADX2  
ADD HL,DE
LD (IX+0),A
SUB A
LD DE,+100
‚SU3   
SBC HL,DE
JR C ADX3
INC A
JR SU3
‚ADX3  
ADD HL,DE
LD (IX+1),A
SUB A
LD DE,+10
‚SU4   
SBC HL,DE
JR C ADX4
INC A
JR SU4
‚ADX4  
ADD HL,DE
LD (IX+2),A
LD (IX+3),L
LD B,4
LD HL,+23420
‚PRI   
LD A,(HL)
ADD A,+48
LD (+23681),A
CALL PRINT
INC HL
DJNZ PRI
RET

‚SCCAL 
LD HL,0
LD (SCORE),HL
LD A,(DEATH)
AND +251
JR NZ AKILS
LD HL,-30556
LD DE,5
LD C,9
LD B,+20
‚COUNT 
LD A,(HL)
AND A
JR Z NOBOS
INC C
‚NOBOS 
ADD HL,DE
DJNZ COUNT
LD A,C
LD (PLAN),A
PUSH BC
POP HL
ADD HL,BC
PUSH HL
POP DE
ADD HL,HL
ADD HL,HL
ADD HL,DE
LD A,(LEVEL)
CP 3
LD DE,+500
ADD HL,DE
‚AKILS 
LD DE,(KILLS)
EX DE,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,DE
LD A,(DEATH)
AND +130
JR Z LIVE
LD DE,+20
SBC HL,DE
RET C
‚LIVE  
LD DE,(TIME)
LD B,5
‚CONTI 
SRL D
RR E
DJNZ CONTI
AND A
SBC HL,DE
RET C
LD (SCORE),HL
RET
‚EXPLO 
LD B,4
‚REP1  
PUSH BC
LD A,+22
LD (+23624),A
CALL FLASH
CALL SOUND
LD A,+6
LD (+23624),A
CALL FLASH
CALL SOUND
LD A,+48
LD (+23624),A
CALL FLASH
CALL SOUND
LD A,2
LD (+23624),A
CALL FLASH
CALL SOUND
POP BC
DJNZ REP1
RET
‚SOUND 
LD B,3
‚REP2  
PUSH BC
CALL RND
AND +3
ADD A,+10
LD H,A
LD DE,1
CALL +949
CALL RND
AND 3
INC A
LD B,A
‚REP3  
HALT
DJNZ REP3
POP BC
DJNZ REP2
RET

‚FLASH 
LD HL,+22528
LD DE,+22529
LD BC,+511
LD (HL),A
LDIR
RET