the cutting room mirror

Fighting Soccer (Amstrad CPC)

This page contains no introduction.
What makes this game notable or what is it about? Are you a bad enough dude to save this article?

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