Difference between revisions of "Tennis Cup 2 (cartridge)"
|  (→Analog Joystick) | m (→Analog Joystick Support:  typo) | ||
| (18 intermediate revisions by 5 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 Support == | |
| − | + | ||
| − | + | 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 | |
| − | + |   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 keyboard is read to determine the state of the digital joysticks and the P button (pause button on gx4000 console). | ||
Latest revision as of 20:07, 6 June 2023
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).
Contents
Cover
Covers from CPCmania
- Tennis Cup 2
Cartridge
- Tennis Cup 2
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
CPC version in mode1.
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 )









