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

Booty (ZX Spectrum, Firebird Software)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Booty

Developer: Firebird Software
Publisher: Firebird Software
Platform: ZX Spectrum
Released in EU: 1984


SourceIcon.png This game has uncompiled source code.


Source Code Fragment

A large chunk of the code was included in this game. While not as big as the code fragments seen in Exodus, it still takes up 7.8% of the game's space. The following addresses seen below are for the .tzx dump of the game.

72CE:

C HL
CP C
JR Z,POSS2
INC HL
JR L6
POSS2:
LD A,(HL)
INC HL
DEC A
DEC A
CP B
JR NZ,L6
LD (IX+19),A
ADD A,5
LD (IX+18),A
INC HL
OK12:
LD A,(IX+17)
CP 3
JR Z,OK9
DB 221,54,6,152
DB 221,54,17,3
OK9:
LD A,(IX+6)
SUB 6
LD (IX+6),A
CP 128-6
JR NZ,OK8
DB 221,54,6,146
OK8:
DB 221,54,5,1;MOVEUP
DB 221,54,2,3;CENT
RET
FIRE:
;TEST FOR EODOOR
LD IX,(23510);EODAT
LD BC,(MANST)
H2:
LD A,(IX+0)
CP 255
RET Z;END OF DOORS
SUB C
CP 2
JR NC,N8
LD A,(IX+1)
DEC A
CP B
JR Z,DR
N8:
LD DE,4
ADD IX,DE
JR H2
DR:
LD A,(IX+3)
CP 21
CALL Z,SEA;JOHN
CH:;CHANGE SCREEN
DB 50
DW 23507;SCNO
LD A,0
DB 50
DW MANST+16;KEY CARRIED
DB 50
DW EST;ZERO EXP
DB 50
DW BMST+10;ZERO BMB
DB 50
DW RS;ZERO RAT
LD A,1
DB 50
DW MANST+17
LD A,152
DB 50
DW MANST+6
CALL SC
CALL IF
RET
MIX:
;CALCS MOVE AND RETS WITH
;BC LOADED 
;DE HAVE BPIX AND CPIX
LD C,(IX+0)
LD B,(IX+1)
LD E,(IX+2)
LD D,(IX+3)
LD A,(IX+4)
ADD A,E
CP 128
JR NC,DC
CP  4
JR C,NOC
INC C
INC C
DC:
DEC C
AND 3
NOC:
LD E,A
;
LD A,(IX+5)
ADD A,D
CP 128
JR NC,DEB
CP 4
JR C,NOB
INC B
INC B
DEB:
DEC B
AND 3
NOB:
LD D,A
RET
OPSQ:
;DI JOHN
;
;CREATE ACS
LD DE,ACS
LD HL,O128
LD BC,128
LDIR
;
LD A,16
RST 16
LD A,(IX+9)
RST 16
;
;
;
;NOW DO DUMP
LD HL,(23606)
PUSH HL
PUSH IY
PUSH IX
;ADD HL (8*CHAR)
LD E,(IX+6)
LD D,0
SLA E
RL D
SLA E
RL D
SLA E
RL D
ADD HL,DE
;HL POINTS TO FIRST CHAR
;
LD B,(IX+2)
INC B
LD C,0
LD (Q),BC
;
LD E,(IX+7)
LD D,(IX+8)
;CALC 8*D
LD A,D
INC A;JOHN
SLA A
SLA A
SLA A
LD C,A
LD B,0
;DI JOHN
LD IY,ACS+8
ADD IY,BC
;
;
;CALC E*8
LD C,E
SLA C
SLA C
SLA C
LD B,0
LD (Q+10),BC
;
LD IX,ACS+8
OL:
PUSH HL
PUSH DE
IL:
PUSH HL
LD B,8
ROT:
PUSH BC
LD A,(HL)
LD BC,(Q)
IACS:
SLA A
RL C
SLA A
RL C
DJNZ IACS
LD (IY+0),A
LD A,C
OR (IX+0)
LD (IX+0),A
INC HL
INC IX
INC IY
POP BC
DJNZ ROT
POP HL
LD BC,(Q+10)
ADD HL,BC
DEC D
JR NZ,IL
POP DE
LD BC,8
ADD IX,BC
ADD IY,BC
POP HL
ADD HL,BC
DEC E
JR NZ,OL
;
;CALC CHAR SET
LD HL,ACS-256
POP IX
LD A,(IX+3)
INC A
SLA A
LD E,A
LD D,0
ADD HL,DE
LD (23606),HL
LD D,(IX+8)
LD E,(IX+7)
LD A,(IX+2)
CP 3
JR Z,NIE
INC E
NIE:
INC D
LD A,D
DB 50
DW Q+12
LD A,3
CP (IX+3)
JR NZ,L3
DEC D
L3:
LD B,(IX+1)
LD C,(IX+0)
LD A,D
LD A,32
POP IY
;EI JOHN
;PRINT ROUTINE
LD A,32
P1:
PUSH AF
PUSH DE
PUSH BC
LD D,A
LD A,C
CP 34
JR NC,NFG
NG3:
PUSH DE
CALL 0DD9H
POP DE
POP BC
PUSH BC
LD A,D
IPL:
CALL RST
LD A,C
CP 2
CALL Z,RNG
DEC C
LD A,(Q+12)
ADD A,D
LD D,A
DEC E
JR NZ,IPL
POP BC
POP DE
POP AF
DEC B
INC A
DEC D
JR NZ,P1
NG2:
POP HL
LD (23606),HL
;EI JOHN
RET
RNG:
DEC E
PUSH AF
INC E
POP AF
RET Z
DEC E
LD A,(Q+12)
ADD A,D
LD D,A
JR RNG
NFG:
LD A,(Q+12)
ADD A,D
LD D,A
DEC E
JP Z,NG4
DEC C
LD A,C
CP 34
JR NC,NFG
JP NG3
NG4:
POP BC
POP BC
POP BC
JP NG2
MOP:
LD A,(Q+2)
CP 0
RET Z
LD HL,NSG+2736-256;OPGRA
LD (23606),HL
LD IX,(23518);OPST
OPL:
LD A,(IX+0)
CP 255
RET Z
LD A,16
RST 16
LD A,(IX+9)
RST 16
;MOVE OPPONENT
LD A,(IX+6)
ADD A,6
LD (IX+6),A
CP 74
JR NZ,N1
DB 221,54,6,32
N1:
CP 128
JR NZ,N2
DB 221,54,6,80
N2:
CALL MIX
LD A,C
CP 34
JP Z,CTR
CP 3
JP Z,CTL
PUSH DE
PUSH BC
LD A,(IX+4)
CP 255
JR NZ,NDB5
DEC C
DEC C
NDB5:
CALL HITD;OOR
POP BC
POP DE
;A=255 IF NO HIT
CP 255
JP NZ,CD
;CHECK FOR FLOOR
PUSH BC
PUSH DE
DEC B
DEC B
DEC B
LD A,(IX+4)
CP 255
JR NZ,JFH
DEC C
DEC C
JFH:
CALL CA
LD HL,41412;ARTSC
LD DE,(ADR)
ADD HL,DE
POP DE
POP BC
LD A,(HL)
CP 33
JP C,CD
FOK:
;THIS DIR OK
LD (IX+0),C
LD (IX+1),B
LD (IX+2),E
LD (IX+3),D
CALL DIX
POPP:
CALL OPSQ
LD A,(IX+0)
LD (IX+13),A
LD A,(IX+1)
LD (IX+14),A
LD A,(IX+2)
LD (IX+11),A
LD A,(IX+3)
LD (IX+15),A
;TEST FOR HIT ROG
LD C,(IX+0)
DEC C
SLA C
SLA C
LD A,(IX+2)
ADD A,C
LD C,A
LD A,(MANST+2)
LD B,A
LD A,(MANST)
DEC A
SLA A
SLA A
ADD A,B
ADD A,7
SUB C
CP 16
JR NC,MI
LD