Please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Fighting Soccer (Amstrad CPC)

From The Cutting Room Floor
Jump to: navigation, search

Title Screen

Fighting Soccer

Developer: Activision
Publisher: Activision
Platform: Amstrad CPC
Released in EU: 1989


SourceIcon.png This game has uncompiled source code.


Source Code Fragments

Some source code fragments were strewn throughout, particularly for the cheerleaders' animations. They can be seen at the hex addresses seen below in the .dsk dump of the game.

1818D:

        ld	e,a
	ret	nc
	inc	d
	ret

$Move_Up_2	call	$Move_Up_1
$Move_Up_1	push	bc
	ld	bc,-8
	call	$Move_Pos
	pop	bc
	ld	a,d
	sub	8
	ld	d,a
	cp	0c0h
	ret	nc
	add	a,64
	ld	d,a
	ld	a,e
	sub	050h
	ld	e,a
	ret	nc
	dec	d
	ret

$Move_Pos	push	hl
	ld	l,(iy+Girl_Buffer+Lb)
	ld	h,(iy+Girl_Buffer+Hb)
	add	hl,bc
	ld	(iy+Girl_Buffer+Lb),l
	ld	(iy+Girl_Buffer+Hb),h
	pop	hl
	ret

; Show all the sprites on the screen.

$Show_Girls	FlyB
	push	hl
	ld	b,No_of_Girls
	ld	iy,Girl_Base	; base of data
$Show_Loop_0	push	bc
	call	Disp_Sprite	; display sprite
	ld	bc,6
	add	iy,bc
	pop	bc
	djnz	$Show_Loop_0	; loop for all girls!
	pop	hl
	ret

; grab background into buffer

Grab_Back	ld	hl,0d104h-2*050h+0800h
	ld	de,Back_Buff1
	call	$Grab_Screen
	ld	hl,0d114h-2*050h+0800h
	ld	de,Back_Buff2
	call	$Grab_Screen
	ld	hl,0d124h-2*050h+0800h
	ld	de,Back_Buff3
$Grab_Screen	ld	b,86 ;56+3*Girl_Speed
$Grab_Loop	push	hl
	ld	c,8+1
	repeat 8
	ldi
	pop	hl
	call	Pix_Down_B
	djnz	$Grab_Loop
	ret

; Display a 32x56 masked sprite on the screen.

Disp_Sprite	ld	l,(iy+Girl_Sprite+Lb)
	ld	h,(iy+Girl_Sprite+Hb)
	push	ix,hl
	pop	ix
	exx
	ld	l,(iy+Girl_Buffer+Lb)
	ld	h,(iy+Girl_Buffer+Hb) ; orig data
	exx
	ld	l,(iy+Girl_ScrPos+Lb)
	ld	h,(iy+Girl_ScrPos+Hb)	; screen pos
	ld	b,56		; number of lines
	ld	d,<Mask_Table_J
$Line_Loop	push	hl
	ld	c,8
$James	ld	e,(ix+0)
	ld	a,(de)
	ld	e,a
	exx
	ld	a,(hl)
	inc	hl
	exx
	and	e
	or	(ix+0)
	ld	(hl),a
	inc	hl
	inc	ix
	dec	c
	jp	nz,$James
	pop	hl
	M_Pix_Down1 h,l
	djnz	$Line_Loop	; loop for all 56 lines.
	pop	ix
	ret

; Base table for each sprite.

Girl_ScrPos	equ	0
Girl_Buffer	equ	Word
Girl_Sprite	equ	2*Word
Girl_BufPos	equ	30*8 ;4*(Girl_Speed*3)

Girl_Base	dw	0c9b4h-16,Back_Buff1+Girl_BufPos,Girl_Jump_0
	dw	0c9b4h+0,Back_Buff2+Girl_BufPos,Girl_Jump_0
	dw	0c9b4h+16,Back_Buff3+Girl_BufPos,Girl_Jump_0

; Background buffers for sprites.

Back_Buff1	ds	86*8,0 ;4*(56+Girl_Speed*3),0
Back_Buff2	ds	86*8,0 ;4*(56+Girl_Speed*3),0
Back_Buff3	ds	86*8,0 ;4*(56+Girl_Speed*3),0	; background buffers

; 'FIGHT FIGHT' Seq data.

Girl_SEQ_Rep	equ	0
Girl_SEQ_List	equ	Byte

Girl_SEQ_0	Girl_S	1,Stop
	Girl_S	6,Pon_Pon
	Girl_S	2,Shake
	Girl_S	2,Foot_UP
	Girl_S	1,Jump
	Girl_S	2,Foot_UP
	Girl_S	1,Jump
	Girl_S	2,Shake
	Girl_S	2,Leg_UP
	Girl_S	1,Jump
	Girl_S	4,Pon_Pon
	Girl_S	3,Stop
	Girl_S	End

Girl_SEQ_1	Girl_S	1,Stop
	Girl_S	1,Jump
	Girl_S	3,Foot_UP
	Girl_S	2,Shake
	Girl_S	2,Jump
	Girl_S	2,Shake
	Girl_S	3,Stop
	Girl_S	End

Girl_DATA_OX	equ	0
Girl_DATA_OY	equ	Byte
Girl_DATA_Spr	equ	2*Byte

Girl_Stop	Girl_D	0,0,Stand_1
	Girl_D	End

Girl_Pon_Pon	Girl_D	0,0,Stand_1
	Girl_D	0,0,Stand_2
	Girl_D	0,0,Stand_1
	Girl_D	0,0,Stand_3
	Girl_D	End

Girl_Leg_UP	Girl_D	0,0,Stand_1
	Girl_D	0,0,Leg_LD
	Girl_D	0,0,Stand_1
	Girl_D	0,0,Leg_LU
	Girl_D	0,0,Stand_1
	Girl_D	0,0,Leg_RD
	Girl_D	0,0,Stand_1
	Girl_D	0,0,Leg_RU
	Girl_D	End

Girl_Foot_UP	Girl_D	0,0,Stand_1
	Girl_D	0,0,Leg_LM
	Girl_D	0,0,Stand_1
	Girl_D	0,0,Leg_RM
	Girl_D	End

Girl_Shake	Girl_D	0,0,Stand_1
	Girl_D	0,0,Sit_l
	Girl_D	0,0,Stand_1
	Girl_D	0,0,Sit_R
	Girl_D	End

Girl_Jump	Girl_D	0,0,Stand_1
	Girl_D	0,0,Floor
	Girl_D	0,4,Jump_0
	Girl_D	0,3,Jump_1
	Girl_D	0,2,Jump_1
	Girl_D	0,1,Jump_0
	Girl_D	0,0,Floor
	Girl_D	0,0,Stand_1
	Girl_D	End

Girl_Sprites

Girl_LEG_RD	HEX 0000000000000000
	HEX 0000000000000000
	HEX 0000000000000000
	HEX 0000000000000000
	HEX 0000000000000000
	HEX 0000000204000000
	HEX 000000254A000000
	HEX 0000003469000000
	HEX 0000005AA5000000
	HEX 000001871E080000
	HEX 0000013FCF000000
	HEX 0000125FAF000000
	HEX 000003B76F000000
	HEX 0000343FCE000000
	HEX 000025A74F080000
	HEX 0000031F8F840000
	HEX 0000344F2FC20000
	HEX 000078A75EE10000
	HEX 0001F0D3BC960E00
	HEX 000178E1782DA500
	HEX 0001ADF0F05A0E00
	HEX 00011EF0F02DA500
	HEX 00030FE1781E0E00
	HEX 0012691E87258600
	HEX 003469B4C2344A00
	HEX 0012873CC2038400
	HEX 00014B870E000800
	HEX 001269A52D000000
	HEX 00015A5A3C080000
	HEX 0000075A5A840000
	HEX 000003D22D860000
	HEX 000027B45A6F0000
	HEX 0000370F0FFF0800
	HEX 000037DEB7FF8C00
	HEX 000037EF1BFFCE00
	HEX 000013EF01FFCE00
	HEX 000013EF003FEF00
	HEX 000013EF0013EF00
	HEX 000001EF00016F00
	HEX 000001EF0001EF00
	HEX 000001EF0001CE00
	HEX 0000006F0013CE00
	HEX 0000006F00138C00
	HEX 0000006F00370800
	HEX 0000006F00370800
	HEX 0000006F002F0000
	HEX 0000006F01860000
	HEX 0000002701840000
	HEX 0000002701840000
	HEX 0000002700080000
	HEX 0000000700000000
	HEX 0000006900000000
	HEX 000001C200000000
	HEX 0000000C00000000
	HEX 0000000000000000
	HEX 0000000000000000
Girl_LEG_RU	HEX 0000000000000200
	HEX 0000000000002D00
	HEX 000000000001E100
	HEX 0000000000121E08
	HEX 0000000000012D08
	HEX 000000020401D208
	HEX 000000254A002D00
	HEX 0000003469014B08
	HEX 0000005AA501A508
	HEX 000001871E095A08
	HEX 0000013FCF010F00
	HEX 0000125FAF138C00
	HEX 000003B76F138C00
	HEX 0000343FCE370800
	HEX 000025A74E370800
	HEX 0000071F8F6F0008
	HEX 0000074F2F6F0184
	HEX 000034A75E4E0184
	HEX 000078D3BC840184
	HEX 00003CE17884010C
	HEX 0001CFF0F0080184
	HEX 00012D78E1001308
	HEX 00015A6969003708
	HEX 00120F1E86006F00
	HEX 0003A5B48401EF00
	HEX 00122D3C8413CE00
	HEX 00034BC30C37CE00
	HEX 00012D5A4A7F8C00
	HEX 0001D269A5FF8C00
	HEX 00002D69D3FF0800
	HEX 000003F05BEF0000
	HEX 000027B4B7CE0000
	HEX 0000370F3F8C0000
	HEX 000037DEA7080000
	HEX 000037EF0E000000
	HEX 000013EF00000000
	HEX 000013EF00000000
	HEX 000013EF00000000
	HEX 000001EF00000000
	HEX 000001EF00000000
	HEX 000001EF00000000
	HEX 0000006F00000000
	HEX 0000006F00000000
	HEX 0000006F00000000
	HEX 0000006F00000000
	HEX 0

1A100:

             000006F00000000
	HEX 0000006F00000000
	HEX 0000002700000000
	HEX 0000002700000000
	HEX 0000002700000000
	HEX 0000000700000000
	HEX 0000006900000000
	HEX 000001C200000000
	HEX 0000000C00000000
	HEX 0000000000000000
	HEX 0000000000000000
Girl_LEG_LD	HEX 0000000000000000
	HEX 0000000000000000
	HEX 0000000000000000
	HEX 0000000000000000
	HEX 0000000000000000
	HEX 0000000204000000
	HEX 000000254A000000
	HEX 0000003469000000
	HEX 0000005AA5000000
	HEX 000001871E080000
	HEX 0000013FCF000000
	HEX 0000125FAF000000
	HEX 000003B76F000000
	HEX 0000343FCE000000
	HEX 000025A74F080000
	HEX 0000071F8F840000
	HEX 0000344F2FC20000
	HEX 000078A75EE10000
	HEX 000796D3BCF00800
	HEX 00784BE178E10800
	HEX 000FA5F0F05B0800
	HEX 004B4BF0F0870800
	HEX 000787E1780F0800
	HEX 00164A1E874B8400
	HEX 0025C234D22DC200
	HEX 00120C34C31E8400
	HEX 000100071E2D0800
	HEX 0000004B5A698400
	HEX 000001C3A5A50800
	HEX 000012A5A50E0000
	HEX 0000164BB40C0000
	HEX 00006FA5D24E0000
	HEX 0001FF0F0FCE0000
	HEX 0013FFDEB7CE0000
	HEX 0037FF8D7FCE0000
	HEX 0037FF087F8C0000
	HEX 007FCF007F8C0000
	HEX 007F8C007F8C0000
	HEX 006F08007F080000
	HEX 007F08007F080000
	HEX 003708007F080000
	HEX 00378C006F000000
	HEX 00138C006F000000
	HEX 0001CE006F000000
	HEX 0001CE006F000000
	HEX 00004F006F000000
	HEX 000016086F000000
	HEX 000012084E000000
	HEX 000012084E000000
	HEX 000001004E000000
	HEX 000000000E000000
	HEX 0000000069000000
	HEX 0000000034080000
	HEX 0000000003000000
	HEX 0000000000000000
	HEX 0000000000000000
Girl_LEG_LU	HEX 0007080000000000
	HEX 002D0C0000000000

1A990:

                      2D0E00
	HEX 0001FFADB45A8400
	HEX 00007
	HEX 000037DE78870400
	HEX 000013EFE1A70000
	HEX 000001