Difference between revisions of "Tennis Cup 2 (cartridge)"
(→Analog Joystick) |
m (→Analog Joystick Support: typo) |
||
(10 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 | + | 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 | ||
Line 50: | Line 73: | ||
push bc | push bc | ||
set 6,c | set 6,c | ||
− | ld a,09h ;; | + | 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 | + | ld (8082h),a ;store joy 1 ;/ |
− | push af | + | push af ;push joy 1 |
− | ld a,06h ;; | + | 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 | + | 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 | + | ld (8084h),a ;store pause ;/ |
pop bc | pop bc | ||
ld a,82h | ld a,82h | ||
Line 85: | Line 108: | ||
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) | + | ld a,(6808h) ;ADC0 ;+00h..+3Fh ;\ |
− | sub 1fh | + | sub 1fh ;-1Fh..+20h ; |
− | cp 14h | + | cp 14h ; |
− | jp p, | + | jp p,261fh_RIGHT ;+14h..+20h ; |
− | cp 0ech | + | cp 0ech ;-14h ; read analog joystick 1, |
− | jp m, | + | jp m,2623h_LEFT ;-1Fh..-15h ; X-axis (ADC0) |
− | jr | + | jr 2625h_X_DONE ;-14h..+13h ; |
− | + | 261f_RIGHT: ; | |
− | set 3,c | + | set 3,c ;bit3=right (as on digital joy) ; convert to digital left/right |
− | jr | + | jr 2625h_X_DONE ; |
− | + | 2623_LEFT: ; | |
− | set 2,c | + | set 2,c ;bit2=left (as on digital joy) ; |
− | + | 2625_X_DONE: ;/ | |
− | ld a,(6809h) | + | ld a,(6809h) ;ADC0 ;+00h..+3Fh ;\ |
− | sub 1fh | + | sub 1fh ;-1Fh..+20h ; |
− | cp 14h | + | cp 14h ; |
− | jp p, | + | jp p,2639h_DOWN ;+14h..+20h ; |
− | cp 0ech | + | cp 0ech ;-14h ; read analog joystick 1, |
− | jp p, | + | jp p,263bh_Y_DONE ;-14h..+13h ; Y-axis (ADC1) |
− | + | 2634h_UP: ;-1Fh..-15h ; | |
− | set 0,c | + | set 0,c ;bit0=up (as on digital joy) ; convert to digital up/down |
− | jp | + | jp 263bh_Y_DONE ; |
− | + | 2639h_DOWN: ; | |
− | set 1,c | + | set 1,c ;bit1=down (as on digital joy) ; |
− | + | 263bh_Y_DONE: ;/ | |
− | ld a,(8082h) | + | ld a,(8082h) ;joy1 ;\ |
− | and 10h | + | and 10h ;joy1 fire ; use digital joystick 1 fire |
− | or c | + | or c ; as analog joystick 1 fire |
− | ld (8085h),a | + | 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 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
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
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 )