#include ti83plus.inc
#include ion.inc
.org progstart-2
	.db $BB,$6D
	xor a
	jr nc,Start
 .db "fastmap",0
player_xc:
.db 0
player_yc:
.db 32
player_flip_ctr:
.db 7
player_current_image:
.db 0
gen_state:
.db 0
jumping:
.db 0
start:
	

loop:
	bcall(_grbufclr)
	call draw

	ld 	b,4
_	halt
	djnz	-_


	ld a,$ff
	out (1),a
	ld a,$fe
	out (1),a
	in a,(1)
	bit 1,a
	call z,left
	in a,(1)
	bit 2,a
	call z,right
	in a,(1)
	inc a
	jr nz,_

	ld a,2
	ld (player_flip_ctr),a
	xor a
	ld (player_current_image),a

_


	ld a,$ff
	out (1),a
	ld a,$bf
	out (1),a
	nop \ nop
	in a,(1)
	bit 5,a
	call z,jump
	in a,(1)
	inc a
	jr nz,not_pressed

	ld a,(jumping)
	or a
	jr z,not_pressed
	
	dec a
	ld (jumping),a

	ld hl,player_yc
	inc (hl)

not_pressed:

	ld a,$ff
	out (1),a
	ld a,$fd
	out (1),a
	nop
	nop
	in a,(1)
	bit 6,a
	jp nz,loop


	ret

left:
	ld	a,1
	ld	(gen_state),a
	ld	hl,player_xc
	dec	(hl)
	ret
right:
	xor 	a
	ld 	(gen_state),a
	ld	hl,player_xc
	inc	(hl)
	ret
jump:
	ld	hl,jumping
	inc	(hl)
	ld	hl,player_yc
	dec	(hl)
	ret

draw:
	ld	b,12
	ld	hl,plotsscreen + ((12+32)*12)
_	ld	(hl),$FF
	inc	hl
	djnz	-_
	

	ld	hl,player_flip_ctr
	ld	a,(hl)
	dec	a
	jr	nz,+_
	ld	a,(player_current_image)
	cpl
	ld	(player_current_image),a
	ld	a,7
_	ld	(hl),a
	

	ld	a,(player_current_image)
	or	a
	jr	nz,+_
	ld	ix,mario_image
	jr	++_
_	ld	ix,mario_image+(12*2)
_	
	ld	a,(jumping)
	or	a
	jr	z,_
	ld	ix,mario_image+(12*4)
_

	ld	a,(gen_state)
	or	a
	jr	nz,_
	ld	de,0
	jr	++_
_	ld	de,12*2*3
_	add	ix,de




	ld	a,(player_yc)
	ld	l,a
	ld	a,(player_xc)
	ld	b,12
	call	ionputsprite

	jp	ionfastcopy


mario_image:
#include "mario.bmp"



















