If you've blocked our ad, please consider unblocking it.
We promise it isn't annoying. No flash, no sound, ever.

Ads by Project Wonderful! Your ad here, right now: $0

Booty (ZX Spectrum, Firebird Software)

From The Cutting Room Floor
Jump to: navigation, 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