Jump to content
IGNORED

Chief Chef - Odyssey 2


atari2600land

Recommended Posts

The head chef at the Chew 'n' Spew Diner has gone crazy! He climbed to the ceiling and started throwing stuff at you! He insists that you catch the items he throws in sets. Once you get all four items, then you move on to the next set. But don't get two like things, else the game ends.

This game started as a Kaboom! clone but quickly grew into something else. It also has elements of Pressure Cooker. Try it out and let me know your thoughts on it. I have about 500 bytes left to make changes.

 

post-9475-0-81681300-1411416262_thumb.png

cc5.bin

  • Like 5
Link to comment
Share on other sites

  • 1 month later...
  • 3 weeks later...

Chris: As for suggestions - The speed of the items dropping changed once on level 3. Can you change it so the speed increase is not so dramatic... maybe just a little faster on a gradual increase?

 

Triverse: this is not the final release candidate. Chris (atari2600land) and I have been releasing his games on cartridge format with a box, manual, and label. This one will sell for $25 and will be released in 2015.

 

More to come!

 

thank you,

 

Tim

Edited by timdu
Link to comment
Share on other sites

Chris: As for suggestions - The speed of the items dropping changed once on level 3. Can you change it so the speed increase is not so dramatic... maybe just a little faster on a gradual increase?

 

Triverse: this is not the final release candidate. Chris (atari2600land) and I have been releasing his games on cartridge format with a box, manual, and label. This one will sell for $25 and will be released in 2015.

 

More to come!

 

thank you,

 

Tim

Thanks for the update on the release of Chief Chef. Once it is available for purchase, I will make a new article available detailing its release. Any coverage I do till then will denote the fact that this is a public beta of the game and reference the future purchase availability.

Edited by triverse
Link to comment
Share on other sites

  • 2 months later...

Great timing! I've got an O2 multi-cart on the way, so once it arrives I will see how this plays on real hardware.

 

Do you test that way, or do you develop/test through emulation?

 

By the way, I do a monthly Intellivision Podcast (The Intellivisionaries), but we frequently discuss Odyssey 2 related news items, as I'm a big fan (I have my sarcastic and condescending O2 make comments in most of the episodes - via "Type And Tell"), so we'll mention your game in an upcoming episode.

Link to comment
Share on other sites

  • 1 month later...

Atari2600land and I are planning to release CHIEF CHEF on cartridge for the Odyssey2 very soon. We are currently looking for some play testers to give us some feedback and look for any bugs in the game.

Attached below is the current binary ROM file. (CC8.bin) Please let us know what you think. An Odyssey2 emulator is available for most O.S.'s... if you have questions please let me know.

THE GAME:


In the game, you are the apprentice chef at the Chew 'n' Spew Restaurant. (Kristen appears at the bottom of the screen.)

The Chief Chef ( Chuck Chesterfield ) has gone crazy and has climbed up to the ceiling and has started to throw food at you! The only catch is he demands that you get all four items he throws and avoid the duplicates! Once you have caught a complete set of four items, you start again at a faster level. But how are your food catching skills? Are they enough to impress the Chief Chef?

SCORING:

1 point for every successful item caught:

1 for the onion
1 for the slice of cheese
1 for the tomato
1 for the lettuce head

and then when the fourth item is completed, a little sound plays , 10 points are awarded ( for getting all 4 items)
and the player then begins the next level where it is a tad faster.

 

post-291-0-22741900-1427405062_thumb.png

 

 

please let me know if you have questions,

thanks


Tim D.

Edited by timdu
  • Like 1
Link to comment
Share on other sites

I just spent 20 minutes playing this cc8 version, and have posted these comments over on videopac.nl:

 

- The graphics look pretty good. No complaints there. I like the characters.

- The game needs more sound. Most of the time, as you are moving left and right, the veggies are dropping but you have to let most of them hit the floor as they're duplicates. How about adding a 'SPLAT' sound when you deliberately miss catching the food?

- The first couple of salads or whatever are slow-paced. That's good. However, there seems to be quite a jump in speed after the first couple of sets are completed. Is there a way to pace it out smoother?

Edited by ls650
Link to comment
Share on other sites

OK - a sound has been added when an unwanted food item is avoided ... a good suggestion!

The latest binary ROM file is below. ( CC9.BIN )

As for the speed increase between levels, we need some help.

Can you fellow programmers please take a look at the code for the game (below) and see if there is a better
way to gradually increase the speed of the game on each new level?

	cpu	8048

eggcaught		equ 037h
lettucecaught	equ 038h
cheesecaught	equ 03ah
drop_speed		equ 026h	
bomb1x			equ 030h	
dropfirstbomb	equ 031h	
newx			equ 032h
itemtype		equ 033h
animtimer		equ 034h
tomatocaught	equ 036h

score_l		equ 023h
score_h		equ 024h
highscore_l	equ 022h	
highscore_h equ 027h



quad0	equ 040h
quad1	equ 050h
quad2	equ 060h
quad3	equ 070h



	org	400h
	
	include	"g7000.h"
    include	"bitfuncs.inc"	


	jmp	myinit	; RESET
	jmp	irq		; interrupt
	jmp	timer		; timer
	jmp	vsyncirq	; VSYNC-interrupt
	jmp	start		; after selectgame
	jmp	soundirq	; sound-interrupt

timer
	;retr

myinit
	mov r0,#03fh
	mov @r0,#000h	
	sel rb1
	clr a
	call 00feh
	
start
	
	

 
	call gfxoff
	




start_2	

	call check_score

	call init_score

 	mov r0,#dropfirstbomb
	mov @r0,#000h		
	
 	mov r0,#drop_speed
	mov @r0,#001h		
	
	mov r1,#animtimer
	mov @r1,#000h	
	
   strt t	
	


	mov r0,#000h	; set sprite 2 Y pos
	mov a,#036h
	movx @r0,a
	;inc r0		; set sprite 2 X pos
	mov r0,#001h
	mov a,#040h
	movx @r0,a
	inc r0
	mov	a,#col_spr_yellow 
	movx	@r0,a	

	mov r0,#008h	; set sprite 2 Y pos
	mov a,#0b8h
	movx @r0,a
	;inc r0		; set sprite 2 X pos
	mov r0,#009h
	mov a,#040h
	movx @r0,a
	inc r0
	mov	a,#col_spr_yellow  | spr_double
	movx	@r0,a	

	mov r0,#00ch	; set sprite 2 Y pos
	mov a,#0b0h
	movx @r0,a
	;inc r0		; set sprite 2 X pos
	mov r0,#00dh
	mov a,#042h
	movx @r0,a
	inc r0
	mov	a,#col_spr_white  | spr_double
	movx	@r0,a	


	call setupgrid



	mov	r0,#vdc_spr0_shape
	mov	r1,#madbomber & 0ffh
	call	setshape


	mov	r0,#vdc_spr1_shape
	mov	r1,#chefhat & 0ffh
	call	setshape

	mov	r0,#vdc_spr2_shape
	mov	r1,#you1 & 0ffh
	call	setshape

	mov	r0,#vdc_spr3_shape
	mov	r1,#you_shirt & 0ffh
	call	setshape


	call madbombershands

	mov	r0,#vdc_color
	mov	a,#col_grd_green
	movx	@r0,a
	
	mov	r0,#0a1h
	mov	a,#002h
	movx	@r0,a	
	

	mov r0,#004h	; set sprite 2 Y pos
	mov a,#02ah
	movx @r0,a

	mov r0,#005h
	mov a,#040h
	movx @r0,a
	inc r0
	mov	a,#col_spr_white
	movx	@r0,a	




	jmp game_loop

	align 256


	

new_place

	mov r1,#newx
	mov a,t
	anl a,#07fh  ; you will only get values from 00 to 7F
	add a,#010h ; ant's y position
	movx @r1,a

	mov r0,#itemtype
	mov a,t
	anl a,#003h  ; you will only get values from 00 to 7F
	add a,#001h ; ant's y position
	mov @r0,a
	


		jmp game_loop_2


	
	

	;jmp game_loop_2

game_loop


	call show_score


	call drawscreen
	mov     r1,#001h        ; joystick 0
    call    getjoystick     ; get offsets	
	jf0 new_place
	

	
	
	jmp game_loop
	
item_caught_2
	jmp item_caught

		
game_loop_2

	call drawscreen



	mov     r0,#vdc_collision
    mov     a,#vdc_coll_char
    movx    @r0,a           ; activate collision checks

	mov r0,#03dh	; check collisions
	mov a,@r0
	anl a,#003h	; check for s0	
	
	mov a,@r0
	anl a,#008h
	jnz item_caught_2

	mov a,@r0
	anl a,#004h
	jnz item_caught_2

	mov r1,#dropfirstbomb
	mov a,@r1
	xrl a,#1
	jz move_bomb_down

		

	
	
	
game_loop_3

	
	mov r1,#newx
	movx a,@r1

	;cpl a

	mov	r7,a	
	mov a,r7	
	
	mov r1,#001h
	movx a,@r1
	xrl a,r7
	jz new_bomb	
	
	mov r1,#newx
	movx a,@r1

	cpl a

	mov	r7,a	
	mov a,r7

	mov r1,#001h
	movx a,@r1
	add a,r7
	jc movebomberleft
	

	jnc movebomberright_7
	

	
	jmp game_loop_3
	
movebomberright_7
		jmp movebomberright
	
new_bomb
	
	mov r0,#dropfirstbomb
	mov @r0,#001h


	mov r1,#newx
	movx a,@r1		; get blue car speed
	mov r7,a		; store in R7

	mov r1,#bomb1x	
	movx a,@r1
	mov a,r7	; adjust x pos
	movx @r1,a		
	


	mov	r0,#vdc_char2

	mov r3,#bomb1x		; store in R7	
	mov	r4,#051h	; y position
	mov	r5,#00ch	; ship1

	
	call	printchar		
	
	jmp game_loop_2
	
move_bomb_down

	mov r1,#bomb1x
	movx a,@r1		; get red car speed
	mov r3,a		; store in R3

	;mov a,r4
	;xrl a,#0d5h
	;jz new_place_3
	mov r0,#itemtype
	mov a,@r0
	xrl a,#1
	jz egg

	mov r0,#itemtype
	mov a,@r0
	xrl a,#2
	jz lettuce

	mov r0,#itemtype
	mov a,@r0
	xrl a,#3
	jz tomato

	;mov	r0,#vdc_char2
	mov r5,#02fh
	mov	r6,#col_chr_yellow

	jmp move_bomb_down_2
	
	
egg
	;mov	r0,#vdc_char2
	mov r5,#031h	
	mov	r6,#col_chr_white		
	
	jmp move_bomb_down_2
	
lettuce
	;mov	r0,#vdc_char2
	mov r5,#031h	
	mov	r6,#col_chr_green		
	
	jmp move_bomb_down_2
	
tomato
	;mov	r0,#vdc_char2
	mov r5,#031h
	mov	r6,#col_chr_red	
	
move_bomb_down_2





	


	mov	r0,#vdc_char2

	mov r1,#drop_speed
	mov a,@r1		; get blue car speed
	mov r7,a		; store in R7

	mov a,r4
	add a,r7
	mov r4,a	
	
	;mov	r5,#031h	; ship1


	call	printchar
	
	
	
	
	;mov	r0,#vdc_char2
	mov a,r4
	add a,#035h
	jc new_place_3	
	
	jmp game_loop_2

new_place_3

	mov		a,#tune_buzz
	call 	playsound


new_place_5
	mov	r0,#vdc_char2

	mov	r5,#00ch	; ship1

	call printchar

 	mov r0,#dropfirstbomb
	mov @r0,#000h	

	jmp new_place

	
movebomberleft
	mov r0,#001h
	movx a,@r0
	add a,#0ffh	; adjust x pos
	movx @r0,a
	
	mov r0,#005h
	movx a,@r0
	add a,#0ffh	; adjust x pos
	movx @r0,a	

	mov r0,#011h
	movx a,@r0
	add a,#0ffh	; adjust x pos
	movx @r0,a
	
	mov r0,#015h
	movx a,@r0
	add a,#0ffh	; adjust x pos
	movx @r0,a	

	jmp game_loop_2
	
movebomberright
	mov r0,#001h
	movx a,@r0
	add a,#001h	; adjust x pos
	movx @r0,a

	mov r0,#005h
	movx a,@r0
	add a,#001h	; adjust x pos
	movx @r0,a

	mov r0,#011h
	movx a,@r0
	add a,#001h	; adjust x pos
	movx @r0,a
	
	mov r0,#015h
	movx a,@r0
	add a,#001h	; adjust x pos
	movx @r0,a	

	jmp game_loop_2
	
		
	
new_place_2
	;call drawscreen	

	jmp new_place
	
	align 256
	
level_data:
	db	004h,007h,004h,007h,004h,007h,004h,007h,004h
	db	001h,001h,001h,001h,001h,001h,001h,001h,001h
	db	0FCh,001h,001h,001h,001h,001h,001h,001h,001h,0FCh	



madbomber
	db	00011100b
	db	00111110b
	db	00101010b
	db	00111110b
	db	00101010b
	db	00100010b
	db	00011100b
	db	00011100b

chefhat
	db	01100011b
	db	01110111b
	db	01111111b
	db	00111110b
	db	00111110b
	db	00111110b
	db	00100010b
	db	00000000b	
	
you1
	db	00110000b
	db  00110000b
	db  10110100b
	db  10010100b
	db  01000100b
	db	00000000b
	db  00100100b
	db  01101100b
	
you2
	db	00110000b
	db  00110000b
	db  10110100b
	db  10010100b
	db  01000100b
	db	00000000b
	db  00001000b
	db  00011000b
	
you_shirt
	db	00011000b	
	db	00011100b		
	db	00000000b	
	db	00000000b	
	db	00000000b	
	db	00000000b		
	db  00011100b
	db  00001100b


	
setshape
; r0=spritepointer, r1=pointer to image in rom
	mov	r7,#8		; 8 bytes

copyspriteloop:
	mov	a,r1
	movp	a,@a		; get byte
	movx	@r0,a
	inc	r0
	inc	r1
	djnz	r7,copyspriteloop
	ret
	
setupgrid
	mov 	r1,#level_data & 0ffh 
    mov     r7,#09         ; length
    mov     r0,#0c0h	

	call copyspriteloop
	
	mov 	r1,#level_data & 0ffh + 9
    mov     r7,#9         ; length
    mov     r0,#0d0h	

	call copyspriteloop	

	mov 	r1,#level_data & 0ffh + 18
    mov     r7,#10         ; length
    mov     r0,#0e0h	

	call copyspriteloop	

	ret
	

	

	
madbombershands
	mov	r0,#vdc_char0
	mov	r3,#040h	; x position
	mov	r4,#043h	; y position
	mov a,r4
	movx @r0,a
	inc r0
	mov a,r3
	movx @r0,a
	inc r0
	
	mov     r5,#017h            ; O
        mov     r6,#col_chr_blue
        call    calcchar23          ; calculate byte 2/3
        mov     a,r5                ; get char-pointer
        add 	a,#4	
        movx    @r0,a               ; ...to cut off first line of T
		inc 	r0		
        mov     a,r6                ; get byte 3
        movx    @r0,a               ; store it
        inc     r0
		
	mov	r0,#vdc_char1
	mov	r3,#040h	; x position
	mov	r4,#049h	; y position
	mov a,r4
	movx @r0,a
	inc r0
	mov a,r3
	movx @r0,a
	inc r0
	
	mov     r5,#01dh            ; H
        mov     r6,#col_chr_yellow
        call    calcchar23          ; calculate byte 2/3
        mov     a,r5                ; get char-pointer
        add 	a,#4	
        movx    @r0,a               ; ...to cut off first line of T
		inc 	r0		
        mov     a,r6                ; get byte 3
        movx    @r0,a               ; store it
        inc     r0	
		ret


you_pos_2
	mov		a,#tune_keyclick
	call 	playsound

	mov	r0,#vdc_spr2_shape
	mov	r1,#you2 & 0ffh
	call	setshape

	ret

you_pos_3
  mov r1,#animtimer
  mov @r1,#0	

you_pos_1
	mov		a,#tune_keyclick
	call 	playsound

	mov	r0,#vdc_spr2_shape
	mov	r1,#you1 & 0ffh
	call	setshape
	
	ret
	
move_you_right

	
	mov r1,#009h
	movx a,@r1
	add a,#078h
	jc game_loop_7
	
	mov r1,#009h	; get sprite 2 X pos
	movx a,@r1
	add a,#002h	; adjust X pos
	movx @r1,a	
	
	mov r1,#00dh	; get sprite 2 X pos
	movx a,@r1
	add a,#002h	; adjust X pos
	movx @r1,a		
	
	jmp thisisdumb
	
	
move_you_left

	
	mov r1,#009h
	movx a,@r1
	add a,#0f9h
	jnc game_loop_7
	
	mov r1,#009h	; get sprite 2 X pos
	movx a,@r1
	add a,#0feh	; adjust X pos
	movx @r1,a	

	mov r1,#00dh	; get sprite 2 X pos
	movx a,@r1
	add a,#0feh	; adjust X pos
	movx @r1,a	


thisisdumb
	mov r0,#animtimer
	mov a,@r0
	add a,#1
	mov @r0,a
	
	mov r0,#animtimer	
	mov a,@r0
	xrl a,#05
	jz you_pos_1
	
	mov r0,#animtimer	
	mov a,@r0
	xrl a,#10 
	jz you_pos_2	

	mov r0,#animtimer	
	mov a,@r0
	xrl a,#15 
	jz you_pos_3	
	
game_loop_7	
	ret


egg_caught_2
		jmp egg_caught
		
lettuce_caught_2
		jmp lettuce_caught
		
tomato_caught_2
			jmp tomato_caught
	
item_caught

	mov		a,#tune_select2
	call 	playsound



	mov r0,#itemtype
	mov a,@r0
	xrl a,#1
	jz egg_caught
	
	mov r0,#itemtype
	mov a,@r0
	xrl a,#2
	jz lettuce_caught

	mov r0,#itemtype
	mov a,@r0
	xrl a,#3
	jz tomato_caught
	
	jmp cheese_caught
	
game_over

	mov		a,#tune_beep_error
	call 	playsound

	mov r1,#animtimer
	mov @r1,#0ffh
	
	
game_over12	
	call clear_chart
	call check_highscore

	call drawscreen

	mov     r1,#001h        ; joystick 0
    call    getjoystick     ; get offsets	
	jf0 return_to_start

	jmp game_over12


	
return_to_start
		call bad_score
		call drawscreen
		jmp start_2
	
	
egg_caught
	mov r0,#eggcaught
	mov a,@r0
	xrl a,#1
	jz game_over

	call add_score

	mov	r0,#vdc_char6
	mov	r3,#029	    ; x position
	mov	r4,#028 	; y position
	mov	r5,#031h	; circle
	mov	r6,#col_chr_white
	call	printchar

	mov r1,#eggcaught
	mov @r1,#1

	jmp new_place_4
			
cheese_caught
	mov r0,#cheesecaught
	mov a,@r0
	xrl a,#1
	jz game_over

	call add_score

	mov	r0,#vdc_char3
	mov	r3,#61	; x position
	mov	r4,#30	; y position
	mov	r5,#02fh	; ship1
	mov	r6,#col_chr_yellow
	call	printchar

	mov r1,#cheesecaught
	mov @r1,#1

	jmp new_place_4
		
tomato_caught

	mov r0,#tomatocaught
	mov a,@r0
	xrl a,#1
	jz game_over

	call add_score

	mov	r0,#vdc_char4
	mov	r3,#93	; x position
	mov	r4,#28 ; y position
	mov	r5,#031h	; circle
	mov	r6,#col_chr_red
	call	printchar

	mov r1,#tomatocaught
	mov @r1,#1

	jmp new_place_4
			
lettuce_caught

	mov r0,#lettucecaught
	mov a,@r0
	xrl a,#1
	jz game_over

	call add_score

	mov	r0,#vdc_char5
	mov	r3,#125 ; x position
	mov	r4,#28	; y position
	mov	r5,#031h	; ship1
	mov	r6,#col_chr_green
	call	printchar

	mov r1,#lettucecaught
	mov @r1,#1

	jmp new_place_4
	
	
	
	
new_place_4
	mov r0,#lettucecaught
	mov a,@r0
	xrl a,#1
	jnz new_place_33
	
	mov r0,#tomatocaught
	mov a,@r0
	xrl a,#1
	jnz new_place_33
	
	mov r0,#eggcaught
	mov a,@r0
	xrl a,#1
	jnz new_place_33	
	
	mov r0,#cheesecaught
	mov a,@r0
	xrl a,#1
	jnz new_place_33
	
	

	mov	r5,#006h		; add 25 to score when something happens.
	call add_score2



	call clear_chart
	
	mov		a,#tune_select
	call 	playsound			
	

	call drawscreen
	
	jmp new_place_33
	
new_place_33


		jmp new_place_5
	
	; bank 1
	align 256
	
clear_chart

	mov	r0,#vdc_char5
	mov r4,#0f8h
	call printchar

	mov	r0,#vdc_char4
	mov r4,#0f8h
	call printchar

	mov	r0,#vdc_char3
	mov r4,#0f8h
	call printchar
	
	mov	r0,#vdc_char6
	mov r4,#0f8h
	call printchar	

	mov	r0,#vdc_char2
	mov r4,#0f8h
	call printchar

	mov r1,#lettucecaught
	mov @r1,#0
	
	mov r1,#cheesecaught
	mov @r1,#0
	
	mov r1,#tomatocaught
	mov @r1,#0
	
	mov r1,#eggcaught
	mov @r1,#0	
	
		ret
	


add_score

	

	mov	r5,#001h		; add 25 to score when something happens.
	
add_score2	
	mov	r0,#score_l	; point to score low byte
	mov	a,@r0		; get current value
	add	a,r5		; add r2
	da	a		; decimal adjust
	mov	@r0,a		; store back
	inc	r0		; point to high byte
	mov	a,@r0		; get current value
	addc	a,#0		; add zero (and a possible carry)
	da	a		; decimal adjust a 
	mov	@r0,a		; store back

	mov		a,#tune_select2
	call 	playsound		

	mov r0,#score_l
	mov a,@r0
	xrl a,#20
	jnz show_score_2	
	
	mov r0,#drop_speed
	mov a,@r0
	add a,#001h	; adjust x pos
	mov @r0,a		
	
show_score_2	
	mov r0,#score_l
	mov a,@r0
	xrl a,#40
	jnz show_score_3		
	
	mov r0,#drop_speed
	mov a,@r0
	add a,#001h	; adjust x pos
	mov @r0,a		
	
show_score_3	
	mov r0,#score_l
	mov a,@r0
	xrl a,#60
	jnz show_score_4		
	
	mov r0,#drop_speed
	mov a,@r0
	add a,#001h	; adjust x pos
	mov @r0,a	
	
show_score_4	
	mov r0,#score_l
	mov a,@r0
	xrl a,#80
	jnz show_score		
	
	mov r0,#drop_speed
	mov a,@r0
	add a,#001h	; adjust x pos
	mov @r0,a	
	
show_score
	;call 011ch		; turn display off	
	mov	r4,#220	; quad 0 and 1 yposition
	mov	r6,#col_chr_blue ; set the color	
	
	; set up quad 0 character 2	(thousands of score)
	mov	r0,#quad0+00ah	; pointer+offset to quad0 space in vdc (used later)
	
	; evaluate score high byte, high nibble
	mov	r1,#score_h	; get high byte
	mov	a,@r1		; in a
	swap	a		; swap nibbles
	anl	a,#00fh		; use only lower 4 bits
	; this conversion is always necessary to put something (quad/character)
	; on screen. On entry R5 contains the character code and R6 contains the color
	mov	r5,a		; store A in R5 so it contains the 'thousands' number

	call	calcchar23	; convert
	mov	a,r5		; get converted character code back in A
	movx	@r0,a		; save it in the quad0 space in vdc
	inc	r0		; point to next address in vdc
	mov	a,r6		; get converted color in A 
	movx	@r0,a		; store it in vdc
	mov	r0,#quad1+00ah	
	mov	r1,#score_h	; get high byte
	mov	a,@r1
	anl	a,#00fh		; use only lower nibble
	mov	r5,a		; 'hundreths' number
	mov	r6,#col_chr_blue		; set the color
	call	calcchar23	; convert
	mov	a,r5		; get code
	movx	@r0,a		; save it
	inc	r0		; next address in vdc
	mov	a,r6		; get color
	movx	@r0,a		; save it
	mov	r0,#quad0+00eh
	mov	r1,#score_l	; point to score_l storage
	mov	a,@r1		; get value in A
	swap	a		; we need the top 4 bits so swap them around
	anl	a,#00fh		; use only the lower 4 bits (now top 4 bits of score_l)
	mov	r5,a		; 'tens' number
	mov	r6,#col_chr_blue	; set the color
	call	calcchar23	; convert
	mov	a,r5		; get code
	movx	@r0,a		; save it
	inc	r0
	mov	a,r6		; get color
	movx	@r0,a		; save it
	mov	r0,#quad1+00eh
	mov	r1,#score_l	; point to score_l storage
	mov	a,@r1		; get value in A
	anl	a,#00fh		; use only lower 4 bits
	mov	r5,a		; 'units' number
	mov	r6,#col_chr_blue	; set the color
	call	calcchar23	; convert
	mov	a,r5		; get code
	movx	@r0,a		; save it
	inc	r0
	mov	a,r6		; get color
	movx	@r0,a		; save it
	



	;highscore
	
	;call 011ch		; turn display off	
	mov	r4,#220	; quad 0 and 1 yposition
	mov	r6,#col_chr_violet ; set the color	
	
	; set up quad 0 character 2	(thousands of score)
	mov	r0,#quad2+00ah	; pointer+offset to quad0 space in vdc (used later)
	
	; evaluate score high byte, high nibble
	mov	r1,#highscore_h	; get high byte
	mov	a,@r1		; in a
	swap	a		; swap nibbles
	anl	a,#00fh		; use only lower 4 bits
	; this conversion is always necessary to put something (quad/character)
	; on screen. On entry R5 contains the character code and R6 contains the color
	mov	r5,a		; store A in R5 so it contains the 'thousands' number
	mov	r0,#quad2+00ah	; pointer+offset to quad0 space in vdc (used later)
	
	; evaluate score high byte, high nibble
	mov	r1,#highscore_h	; get high byte
	mov	a,@r1		; in a
	swap	a		; swap nibbles
	anl	a,#00fh		; use only lower 4 bits
	; this conversion is always necessary to put something (quad/character)
	; on screen. On entry R5 contains the character code and R6 contains the color
	mov	r5,a		; store A in R5 so it contains the 'thousands' number

	call	calcchar23	; convert
	mov	a,r5		; get converted character code back in A
	movx	@r0,a		; save it in the quad0 space in vdc
	inc	r0		; point to next address in vdc
	mov	a,r6		; get converted color in A 
	movx	@r0,a		; store it in vdc
	mov	r0,#quad3+00ah	
	mov	r1,#highscore_h	; get high byte
	mov	a,@r1
	anl	a,#00fh		; use only lower nibble
	mov	r5,a		; 'hundreths' number
	mov	r6,#col_chr_violet	; set the color
	call	calcchar23	; convert
	mov	a,r5		; get code
	movx	@r0,a		; save it
	inc	r0		; next address in vdc
	mov	a,r6		; get color
	movx	@r0,a		; save it
	mov	r0,#quad2+00eh
	mov	r1,#highscore_l	; point to score_l storage
	mov	a,@r1		; get value in A
	swap	a		; we need the top 4 bits so swap them around
	anl	a,#00fh		; use only the lower 4 bits (now top 4 bits of score_l)
	mov	r5,a		; 'tens' number
	mov	r6,#col_chr_violet		; set the color
	call	calcchar23	; convert
	mov	a,r5		; get code
	movx	@r0,a		; save it
	inc	r0
	mov	a,r6		; get color
	movx	@r0,a		; save it
	mov	r0,#quad3+00eh
	mov	r1,#highscore_l	; point to score_l storage
	mov	a,@r1		; get value in A
	anl	a,#00fh		; use only lower 4 bits
	mov	r5,a		; 'units' number
	mov	r6,#col_chr_violet	; set the color
	call	calcchar23	; convert
	mov	a,r5		; get code
	movx	@r0,a		; save it
	inc	r0
	mov	a,r6		; get color
	movx	@r0,a		; save it
	
	;call 0127h	; turn display on
	
	ret
	

	
init_score:
	; preset x positions (they are fixed in my program)
	mov	r3,#0	; quad 0 xposition
	mov	r4,#220		; quad 0 and 1 yposition
	
	mov r0,#quad0+002h  ; pointer to first character byte of quad0
	mov r5,#00ch ; code for character "space"
	call 0261h ; convert character code and store in VDC
	mov r0,#quad0+006h ; pointer to second character byte of quad0
	mov r5,#00ch
	call 0261h	
	
	mov	r0,#quad0	; pointer to quad0 vdc
	mov	a,r4
	movx	@r0,a		; store it
	inc	r0
	mov	a,r3
	movx	@r0,a
	
	mov r0,#quad1+002h  ; pointer to first character byte of quad0
	mov r5,#00ch ; code for character "space"
	call 0261h ; convert character code and store in VDC
	mov r0,#quad1+006h ; pointer to second character byte of quad0
	mov r5,#00ch
	call 0261h

	mov	r3,#8 ; quad 1 xposition (8 pixels further to interleave)

	mov	r0,#quad1	; pointer to quad1 in vdc
	mov	a,r4
	movx	@r0,a		; store it
	inc	r0
	mov	a,r3
	movx	@r0,a

init_highscore
	;highscore
	
	; preset x positions (they are fixed in my program)
	mov	r3,#69 ; quad 0 xposition
	mov	r4,#220	; quad 0 and 1 yposition
	
	mov r0,#quad2+002h  ; pointer to first character byte of quad0
	mov r5,#00ch ; code for character "space"
	call 0261h ; convert character code and store in VDC
	mov r0,#quad2+006h ; pointer to second character byte of quad0
	mov r5,#00ch
	call 0261h	
	
	mov	r0,#quad2	; pointer to quad0 vdc
	mov	a,r4
	movx	@r0,a		; store it
	inc	r0
	mov	a,r3
	movx	@r0,a
	
	mov r0,#quad3+002h  ; pointer to first character byte of quad0
	mov r5,#00ch ; code for character "space"
	call 0261h ; convert character code and store in VDC
	mov r0,#quad3+006h ; pointer to second character byte of quad0
	mov r5,#00ch
	call 0261h

	mov	r3,#77	; quad 1 xposition (8 pixels further to interleave)

	mov	r0,#quad3	; pointer to quad1 in vdc
	mov	a,r4
	movx	@r0,a		; store it
	inc	r0
	mov	a,r3
	movx	@r0,a	
	
	


	ret		

	align 256

drawscreen



	call  gfxon
	call	waitvsync	; wait for begin of frame
	;anl  p1,#07fh	
	
	call  gfxoff
	
	mov r0,#animtimer
	mov a,@r0
	xrl a,#0ffh
	jz drawscreen_2

	mov r1,#001h	; select joystick 0
	call getjoystick	; call bios
	mov a,r1		; get bit values
	cpl a			; invert all bits	

	mov a,r1		; get joystick value back
	anl a,#002h	; test right bit
	jz move_you_right2	; jump to right routine	

	mov r1,#001h	; select joystick 0
	call getjoystick	; call bios
	mov a,r1		; get bit values
	cpl a			; invert all bits	

	mov a,r1		; get joystick value back
	anl a,#008h	; test right bit
	jz move_you_left2	; jump to right routine		
	
drawscreen_2
	ret

item_caught_22	
		jmp item_caught
	
move_you_left2
		jmp move_you_left

move_you_right2
	jmp move_you_right
	
	
	;align 256
	
check_score
  mov r1,#score_h
  mov a,@r1
  anl a,#00fh
  add a,#0f6h
  jc bad_score
  mov a,@r1
  swap a
  anl a,#00fh
  add a,#0f6h
  jc bad_score
  mov r1,#score_l
  mov a,@r1
  anl a,#00fh
  add a,#0f6h
  jc bad_score
  mov a,@r1
  swap a
  anl a,#00fh
  add a,#0f6h
  jnc good_score
bad_score
  mov r1,#score_h
  mov @r1,#0
  mov r1,#score_l
  mov @r1,#0
good_score

  mov r1,#highscore_h
  mov a,@r1
  anl a,#00fh
  add a,#0f6h
  jc bad_highscore
  mov a,@r1
  swap a
  anl a,#00fh
  add a,#0f6h
  jc bad_highscore
  mov r1,#highscore_l
  mov a,@r1
  anl a,#00fh
  add a,#0f6h
  jc bad_highscore
  mov a,@r1
  swap a
  anl a,#00fh
  add a,#0f6h
  jnc good_highscore
bad_highscore
  mov r1,#highscore_h
  mov @r1,#0
  mov r1,#highscore_l
  mov @r1,#0
good_highscore
	ret
		
	
	


check_highscore
	mov r1,#highscore_l
	mov a,@r1		; get highscore
	cpl a			; make highscore negative
	mov r0,#score_l
	add a,@r0		; subtract highscore from score
	jnc replace_highscore2
	
	mov r1,#highscore_h
	mov a,@r1		; get red car speed
	mov r2,a		; store in R2	

	mov r0,#score_h	 
	mov a,@r0
	xrl a,r2
	jz replace_highscore
	
replace_highscore2	
	mov r1,#highscore_h
	mov a,@r1		; get highscore
	cpl a			; make highscore negative
	mov r0,#score_h
	add a,@r0		; subtract highscore from score
	jnc no_highscore	
	
	
	
	
	
	
replace_highscore
	mov	r0,#score_h
	mov	a,@r0		; get score
	mov	r1,#highscore_h	; point to highscore low byte
	mov	@r1,a		; store new highscore


	mov	r0,#score_l
	mov	a,@r0		; get score
	mov	r1,#highscore_l	; point to highscore low byte
	mov	@r1,a		; store new highscore
no_highscore
	ret
	

	

		

	

		

cc9.bin

Link to comment
Share on other sites

I tried CC9. I like the 'plonk' of the missed veggies.

I'm not so sure I'm keen on the squawking sounds as the chef shuffles left-right though...

 

I'd leave out the shuffling, and instead have a quiet 'ping' as the top chef throws the food down.

Then have a 'plonk' when the veggies is missed, or a happy sound when the correct veggie is caught.

Link to comment
Share on other sites

I personally like the sound of the "shuffling" when you move from left - right etc. Kind of reminds me of the Hanna-Barbara FLINTSTONES cartroons when Fred Flintstone or Barney is scrambling to move.

 

Maybe the volume on the "shuffling" could be a little more quieter though.

Link to comment
Share on other sites

  • 3 weeks later...

OK- the problem with the gradual increase of the speed of the game on each new level has been resolved by Chris.

We would like to get some feedback from some play testers and also look for any bugs in the game.

CC10C.BIN is attached.

 

thanks

 

 

Tim

Link to comment
Share on other sites

OK- the problem with the gradual increase of the speed of the game on each new level has been resolved by Chris.

 

We would like to get some feedback from some play testers and also look for any bugs in the game.

 

CC10C.BIN is attached.

 

 

thanks

 

 

Tim

No, it isn't.

Link to comment
Share on other sites

  • 2 months later...
  • 1 month later...
  • 3 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...