Difference between revisions of "Tennis Cup 2 (cartridge)"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
(Analog Joystick)
m (Analog Joystick Support: typo)
 
(12 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
[[File:Tennis cup 2 intro.png|384px|thumb|right]]
 +
 +
'''Tennis Cup 2''' is the Cartridge version of '''Tennis Cup''', a tennis game on CPC (old), both games produced by [[Loriciel]].
 +
 +
 +
Certainly the best looking Tennis game on Amstrad (in cartridge version).
 +
 +
 
== Cover ==
 
== Cover ==
  
Line 27: Line 35:
 
You can download in CPR for use in emulators and BIN from CPCmania ( See the links ).
 
You can download in CPR for use in emulators and BIN from CPCmania ( See the links ).
  
 +
== Videos ==
 +
Quick look by Novabug
 +
{{#ev:youtube|VQgmT-HRt2Y|340}}
 +
 +
==Comparison==
 +
 +
[[File:Tennis cup cpc intro.png]][[File:Tennis cup cpc game.png]]
 +
 +
CPC version in mode1.
 +
 +
[[File:Tennis cup 2 cartridge game 1.png]][[File:Tennis cup 2 cartridge game 2.png]]
 +
 +
Cartridge version in Mode0 + Hardwired sprites.
 
 
==Analog Joystick==
+
== Analog Joystick Support ==
 
 
 
 
This games is pehaps the only one on Amstrad GX4000/Plus range to enable the use of an [[Analog Joysticks| Analog Joystick]], for the 2nd player.
+
This game is perhaps the only one on Amstrad GX4000/Plus range that supports an [[Analog Joysticks|Analog Joystick]], however, it converts the analog signals to digital signals by software. In two-player mode, the game can be controlled by:
 +
* Digital Joystick #1 and Digital Joystick #2
 +
or alternately (selectable in Options),
 +
* Analog Joystick #1 and Digital Joystick #2
 +
That feature is intended for people who own one digital stick, and one analogue stick (rather than two digital ones). In the "analog" mode, Digital Joystick #1 is not used (because its button inputs would conflict with Analog Joystick #1).
 +
 
 +
Disassembly of the joystick code in Tennis Cup 2:
  
ld      bc,0f40eh
+
  ld      bc,0f40eh
out    (c),c
+
  out    (c),c
ld      b,0f6h
+
  ld      b,0f6h
in      a,(c)
+
  in      a,(c)
and    30h
+
  and    30h
ld      c,a
+
  ld      c,a
or      0c0h
+
  or      0c0h
out    (c),a
+
  out    (c),a
out    (c),c
+
  out    (c),c
inc    b
+
  inc    b
ld      a,92h
+
  ld      a,92h
out    (c),a
+
  out    (c),a
push    bc
+
  push    bc
set    6,c
+
  set    6,c
ld      a,09h ;; keyboard line for joy 0
+
  ld      a,09h       ;keyb.row 9              ;\
or      c
+
  or      c                                     ;
ld      b,0f6h
+
  ld      b,0f6h                               ;
out    (c),a
+
  out    (c),a                                 ; read digital joystick 1
ld      b,0f4h
+
  ld      b,0f4h                               ;
in      a,(c)
+
  in      a,(c)                                 ;
cpl    
+
  cpl                                           ;
ld      (8082h),a ;; joy 0
+
  ld      (8082h),a   ;store joy 1              ;/
push    af
+
  push    af       ;push joy 1
ld      a,06h ;; keyboard line for joy 1
+
  ld      a,06h       ;keyb.row6                ;\
or      c
+
  or      c                                     ;
ld      b,0f6h
+
  ld      b,0f6h                               ;
out    (c),a
+
  out    (c),a                                 ; read digital joystick 2
ld      b,0f4h
+
  ld      b,0f4h                               ;
in      a,(c)
+
  in      a,(c)                                 ;
cpl    
+
  cpl                                           ;
ld      (8083h),a ;; joy 1
+
  ld      (8083h),a   ;store joy 2              ;/
pop    de
+
  pop    de       ;pop joy 1                  ;\
or      d
+
  or      d       ;merge joy 2                ; merge digital joystick 1+2
ld      (8086h),a
+
  ld      (8086h),a   ;store both              ;/
ld      a,03h
+
  ld      a,03h       ;keyb.row3                ;\
or      c
+
  or      c                                     ; read pause button
ld      b,0f6h
+
  ld      b,0f6h                               ; (aka "P" key)
out    (c),a
+
  out    (c),a                                 ; (row3.bit3)
ld      b,0f4h
+
  ld      b,0f4h                               ; (bit3 still needs to be
in      a,(c)
+
  in      a,(c)                                ; isolated elsewhere)
cpl    
+
  cpl                                           ;
ld      (8084h),a ;; pause?
+
  ld      (8084h),a   ;store pause             ;/
pop    bc
+
  pop    bc
ld      a,82h
+
  ld      a,82h
out    (c),a
+
  out    (c),a
dec    b
+
  dec    b
out    (c),c
+
  out    (c),c
ld      bc,7fb8h
+
  ld      bc,7fb8h
out    (c),c
+
  out    (c),c
ld      c,00h
+
  ld      c,00h   ;digital-joystick-style bits
ld      a,(6808h) ;; analogue input channel 0
+
  ld      a,(6808h)   ;ADC0 ;+00h..+3Fh        ;\
sub    1fh
+
  sub    1fh               ;-1Fh..+20h        ;
cp      14h
+
  cp      14h                                   ;
jp      p,261fh
+
  jp      p,261fh_RIGHT    ;+14h..+20h        ;
cp      0ech
+
  cp      0ech             ;-14h              ; read analog joystick 1,
jp      m,2623h
+
  jp      m,2623h_LEFT      ;-1Fh..-15h        ; X-axis (ADC0)
jr      2625h
+
  jr      2625h_X_DONE      ;-14h..+13h        ;
  261f set    3,c ;; right
+
  261f_RIGHT:                                    ;
jr      2625h
+
  set    3,c   ;bit3=right (as on digital joy) ; convert to digital left/right
  2623 set    2,c ;; left
+
  jr      2625h_X_DONE                          ;
  2625 ld      a,(6809h) ;; analogue input channel 1
+
  2623_LEFT:                                    ;
sub    1fh
+
  set    2,c   ;bit2=left (as on digital joy)  ;
cp      14h
+
  2625_X_DONE:                                  ;/
jp      p,2639h
+
  ld      a,(6809h)   ;ADC0 ;+00h..+3Fh        ;\
cp      0ech
+
  sub    1fh               ;-1Fh..+20h        ;
jp      p,263bh
+
  cp      14h                                   ;
  2634 set    0,c ;; up
+
  jp      p,2639h_DOWN      ;+14h..+20h        ;
jp      263bh
+
  cp      0ech             ;-14h              ; read analog joystick 1,
  2639 set    1,c ;; down
+
  jp      p,263bh_Y_DONE    ;-14h..+13h        ; Y-axis (ADC1)
  263b ld      a,(8082h) ;; joy 0 fire.
+
  2634h_UP:                  ;-1Fh..-15h        ;
and    10h
+
  set    0,c   ;bit0=up (as on digital joy)    ; convert to digital up/down
or      c
+
  jp      263bh_Y_DONE                          ;
ld      (8085h),a
+
  2639h_DOWN:                                    ;
 +
  set    1,c   ;bit1=down (as on digital joy)  ;
 +
  263bh_Y_DONE:                                  ;/
 +
  ld      a,(8082h) ;joy1                      ;\
 +
  and    10h       ;joy1 fire                  ; use digital joystick 1 fire
 +
  or      c                                     ; as analog joystick 1 fire
 +
  ld      (8085h),a ;store A/D converted analog ;/
  
 
The keyboard is read to determine the state of the digital joysticks and the P button (pause button on gx4000 console).
 
The keyboard is read to determine the state of the digital joysticks and the P button (pause button on gx4000 console).

Latest revision as of 19:07, 6 June 2023

Tennis cup 2 intro.png

Tennis Cup 2 is the Cartridge version of Tennis Cup, a tennis game on CPC (old), both games produced by Loriciel.


Certainly the best looking Tennis game on Amstrad (in cartridge version).


Cover

Covers from CPCmania

Cartridge

Manual

You can download in PDF from CPCmania ( See the links ).

Game

You can download in CPR for use in emulators and BIN from CPCmania ( See the links ).

Videos

Quick look by Novabug {{#ev:youtube|VQgmT-HRt2Y|340}}

Comparison

Tennis cup cpc intro.pngTennis cup cpc game.png

CPC version in mode1.

Tennis cup 2 cartridge game 1.pngTennis cup 2 cartridge game 2.png

Cartridge version in Mode0 + Hardwired sprites.

Analog Joystick Support

This game is perhaps the only one on Amstrad GX4000/Plus range that supports an Analog Joystick, however, it converts the analog signals to digital signals by software. In two-player mode, the game can be controlled by:

  • Digital Joystick #1 and Digital Joystick #2

or alternately (selectable in Options),

  • Analog Joystick #1 and Digital Joystick #2

That feature is intended for people who own one digital stick, and one analogue stick (rather than two digital ones). In the "analog" mode, Digital Joystick #1 is not used (because its button inputs would conflict with Analog Joystick #1).

Disassembly of the joystick code in Tennis Cup 2:

 ld      bc,0f40eh
 out     (c),c
 ld      b,0f6h
 in      a,(c)
 and     30h
 ld      c,a
 or      0c0h
 out     (c),a
 out     (c),c
 inc     b
 ld      a,92h
 out     (c),a
 push    bc
 set     6,c
 ld      a,09h       ;keyb.row 9               ;\
 or      c                                     ;
 ld      b,0f6h                                ;
 out     (c),a                                 ; read digital joystick 1
 ld      b,0f4h                                ;
 in      a,(c)                                 ;
 cpl                                           ;
 ld      (8082h),a   ;store joy 1              ;/
 push    af       ;push joy 1
 ld      a,06h       ;keyb.row6                ;\
 or      c                                     ;
 ld      b,0f6h                                ;
 out     (c),a                                 ; read digital joystick 2
 ld      b,0f4h                                ;
 in      a,(c)                                 ;
 cpl                                           ;
 ld      (8083h),a   ;store joy 2              ;/
 pop     de       ;pop joy 1                   ;\
 or      d        ;merge joy 2                 ; merge digital joystick 1+2
 ld      (8086h),a   ;store both               ;/
 ld      a,03h       ;keyb.row3                ;\
 or      c                                     ; read pause button
 ld      b,0f6h                                ; (aka "P" key)
 out     (c),a                                 ; (row3.bit3)
 ld      b,0f4h                                ; (bit3 still needs to be
 in      a,(c)                                 ; isolated elsewhere)
 cpl                                           ;
 ld      (8084h),a   ;store pause              ;/
 pop     bc
 ld      a,82h
 out     (c),a
 dec     b
 out     (c),c
 ld      bc,7fb8h
 out     (c),c
 ld      c,00h   ;digital-joystick-style bits
 ld      a,(6808h)   ;ADC0 ;+00h..+3Fh         ;\
 sub     1fh               ;-1Fh..+20h         ;
 cp      14h                                   ;
 jp      p,261fh_RIGHT     ;+14h..+20h         ;
 cp      0ech              ;-14h               ; read analog joystick 1,
 jp      m,2623h_LEFT      ;-1Fh..-15h         ; X-axis (ADC0)
 jr      2625h_X_DONE      ;-14h..+13h         ;
261f_RIGHT:                                    ;
 set     3,c   ;bit3=right (as on digital joy) ; convert to digital left/right
 jr      2625h_X_DONE                          ;
2623_LEFT:                                     ;
 set     2,c   ;bit2=left (as on digital joy)  ;
2625_X_DONE:                                   ;/
 ld      a,(6809h)   ;ADC0 ;+00h..+3Fh         ;\
 sub     1fh               ;-1Fh..+20h         ;
 cp      14h                                   ;
 jp      p,2639h_DOWN      ;+14h..+20h         ;
 cp      0ech              ;-14h               ; read analog joystick 1,
 jp      p,263bh_Y_DONE    ;-14h..+13h         ; Y-axis (ADC1)
2634h_UP:                  ;-1Fh..-15h         ;
 set     0,c   ;bit0=up (as on digital joy)    ; convert to digital up/down
 jp      263bh_Y_DONE                          ;
2639h_DOWN:                                    ;
 set     1,c   ;bit1=down (as on digital joy)  ;
263bh_Y_DONE:                                  ;/
 ld      a,(8082h) ;joy1                       ;\
 and     10h       ;joy1 fire                  ; use digital joystick 1 fire
 or      c                                     ; as analog joystick 1 fire
 ld      (8085h),a ;store A/D converted analog ;/

The keyboard is read to determine the state of the digital joysticks and the P button (pause button on gx4000 console).

The routine reads analogue input channel 0 and 1 for the analogue joystick and performs some checking to see the range of the numbers. Based on this it sets the direction pressed.

Links

http://www.cpcmania.com/ ( on the games section : GX4000/CPC+ GAMES )