Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ti83pce.inc"
- .assume ADL=1
- .db tExtTok,tAsm84CeCmp
- .org userMem
- ;Paramétrage de l'écran
- call _clrscrnfull ;reglage de l'ecran
- ld hl,$FFFF \ ld (mpLCDPalette),hl
- ld hl,$7C00 \ ld (mpLCDPalette+2),hl
- ld hl,$001F \ ld (mpLCDPalette+4),hl
- ld hl,$0000 \ ld (mpLCDPalette+6),hl
- call _RunIndicoff \ call _boot_ClearVRAM \ di
- ld a,$27
- ld ($E30018),a
- ;.....................................................
- ;Affichage de l'écran de jeu
- ;Début donc n'affecte pas les registres :)
- ld hl,$D40000
- ld bc,76799
- ld (hl),3d
- ex de,hl
- or a,a
- sbc hl,hl
- add hl,de
- inc de
- ldir
- ld hl,$D403C8 ;y1 ;affichage de l'ecran
- ld a,221d
- call RoutineVerticale
- ld hl,$D4064A ;y2
- ld a,217d
- call RoutineVerticale
- ld hl,$D40776 ;y3
- ld a,217d
- call RoutineVerticale
- ld hl,$D404F8 ;y4
- ld a,221d
- call RoutineVerticale
- ld hl,$D403C9 ;x1
- ld bc,302d
- call RoutineHorizontale
- ld hl,$D4064B ;x2
- ld bc,298d
- call RoutineHorizontale
- ld hl,$D5144B ;x3
- ld bc,298d
- call RoutineHorizontale
- ld hl,$D516C9 ;x4
- ld bc,302d
- call RoutineHorizontale
- ld hl,$D4078B
- ld a,215
- RoutineC:
- ld bc,298d
- ld (hl),0d
- ex de,hl
- or a,a
- sbc hl,hl
- add hl,de
- inc de
- ldir
- ld bc,22d
- add hl,bc
- dec a
- jr nz,RoutineC
- ;.....................................................
- ;reglage pour test
- ld a,%00011000
- ld hl,$D034D5 ;hl2
- ld (hl),a
- ld de,$D4AD03 ;de2
- push hl ;hl2
- push de ;de2
- ld hl,$D034BC ;hl1
- ld (hl),a
- ld de,$D49E03 ;de1
- ;.....................................................
- ;Modifie A (registre d'information, direction, pomme, position du serpent)
- ;Affecte hl ;getkey hl,de
- Boucle:
- push hl
- push af
- push de
- ld hl,$F50000
- ld (hl),2
- di
- xor a,a
- Scan_wait:
- cp a,(hl)
- jr nz,Scan_wait
- call _getkey ;mettre une boucle à la place
- ld hl,$D4078B
- ld a,215
- RoutineC2:
- ld bc,298d
- ld (hl),0d
- ex de,hl
- or a,a
- sbc hl,hl
- add hl,de
- inc de
- ldir
- ld bc,22d
- add hl,bc
- dec a
- jr nz,RoutineC2
- pop de
- pop af
- Algo_de_modification_de_A:
- ld hl,$F5001E ;Adresses touches directionnelles
- bit 0,(hl)
- call nz,routineDown
- bit 3,(hl)
- call nz,routineUp
- bit 1,(hl)
- call nz,routineLeft
- bit 2,(hl)
- call nz,routineRight
- ;.....................................................
- ;Ajuste hl1,de1,
- ;Modifie de,hl. Détruit bc.
- Tete:
- pop hl
- Bit 0,a
- call nz,reglage_de_la_tete_Down
- Bit 3,a
- call nz,reglage_de_la_tete_Up
- Bit 1,a
- call nz,reglage_de_la_tete_Left
- Bit 2,a
- call nz,reglage_de_la_tete_Right
- push af
- push de
- call Routine_Srite_Aff
- pop de
- pop af
- pop hl
- pop bc ;de2
- pop ix ;hl2
- push hl ;hl1
- push de ;de1
- push af ;direction
- push bc ;de2
- pop de
- lea hl,ix ;hl2
- ;.....................................................
- ;Ajuste hl2,de2,
- ;Modifie de,hl. Détruit bc.
- Apres_la_tete:
- ld c,(hl) ;hl2
- bit 0,C
- call nz,routine_reglage_apres_la_tete_Down
- bit 3,C
- call nz,routine_reglage_apres_la_tete_Up
- bit 1,C
- call nz,routine_reglage_apres_la_tete_Left
- bit 2,C
- call nz,routine_reglage_apres_la_tete_Right
- Apres_la_tete_sprite:
- ;Détruit af,hl. Utilise (hl),bc (pour sauvegarder les directions avant modification de hl).
- push hl
- ld a,(hl) ;hl2
- push af
- cp a,c
- jp nz,routine_apres_la_tete_sprite_rotation
- pop af
- bit 0,c
- call nz,apres_la_tete_sprite_verticale
- bit 3,c
- call nz,apres_la_tete_sprite_verticale
- bit 1,c
- call nz,apres_la_tete_sprite_horizontale
- bit 2,c
- call nz,apres_la_tete_sprite_horizontale
- Affichage_apres_la_tete:
- push de
- call Routine_Srite_Aff
- pop de
- pop hl
- pop af ;direction
- pop bc ;de1
- pop ix ;hl1
- push hl ;hl2
- push de ;de2
- push bc ;de1
- pop de
- lea hl,ix ;hl1
- jp Boucle
- ret
- ;.....................................................
- ;Routine affichage de l'écran
- RoutineVerticale:
- ld bc,320d
- ld (hl),2d
- add hl,bc
- dec a
- jr nz,RoutineVerticale
- ret
- RoutineHorizontale:
- ld (hl),2d
- ex de,hl
- or a,a
- sbc hl,hl
- add hl,de
- inc de
- ldir
- ret
- ;.....................................................
- ;Routine de A (direction)
- routineDown:
- pop bc
- bit 3,a
- jp nz,Tete
- and a,%11110000
- or a, %00010001
- push bc
- ret
- routineUp:
- pop bc
- bit 0,a
- jp nz,Tete
- and a,%11110000
- or a, %00011000
- push bc
- ret
- routineLeft:
- pop bc
- bit 2,a
- jp nz,Tete
- and a,%11110000
- or a, %00010010
- push bc
- ret
- routineRight:
- pop bc
- bit 1,a
- jp nz,Tete
- and a,%11110000
- or a, %00010100
- push bc
- ret
- ;.................................................................
- ;reglage de la tete
- ;detruit BC. ajuste HL,DE. n'affecte pas A
- reglage_de_la_tete_Down:
- pop ix
- ld (hl),a ;hl1 <- a
- ld bc,25d ;adjuste hl1
- add hl,bc
- ld bc,3840d ;adjuste de1
- ex de,hl
- add hl,bc
- ex de,hl
- push hl ;save hl1
- ld hl,sprite_aff_tete_Down
- push ix
- ret
- reglage_de_la_tete_Up:
- pop ix
- ld (hl),a ;hl1 <- a
- ld bc,25d ;adjuste hl1
- or a,a
- sbc hl,bc
- ld bc,3840d ;adjuste de1
- ex de,hl
- or a,a
- sbc hl,bc
- ex de,hl
- push hl ;save hl1
- ld hl,sprite_aff_tete_Up
- push ix
- ret
- reglage_de_la_tete_Left:
- pop ix
- ld (hl),a ;hl1 <- a
- dec hl ;adjuste hl1
- ld bc,12d ;adjuste de1
- ex de,hl
- or a,a
- sbc hl,bc
- ex de,hl
- push hl ;save hl1
- ld hl,sprite_aff_tete_Left
- push ix
- ret
- reglage_de_la_tete_Right:
- pop ix
- ld (hl),a ;hl1 <- a
- inc hl ;adjuste hl1
- ld bc,12d ;adjuste de1
- ex de,hl
- add hl,bc
- ex de,hl
- push hl ;save hl1
- ld hl,sprite_aff_tete_Right
- push ix
- ret
- ;......................................................
- ;rotine de reglage apres la tete
- ;detruit bc, regle hl(hl2),de(de2)
- routine_reglage_apres_la_tete_Down:
- push bc
- ld bc,25d ;hl2
- add hl,bc
- ld bc,3840d ;de2
- ex de,hl
- add hl,bc
- ex de,hl
- pop bc
- ret
- routine_reglage_apres_la_tete_Up:
- push bc
- ld bc,25d ;hl2
- or a,a
- sbc hl,bc
- ld bc,3840d ;de2
- ex de,hl
- or a,a
- sbc hl,bc
- ex de,hl
- pop bc
- ret
- routine_reglage_apres_la_tete_Left:
- push bc
- dec hl ;hl2
- ld bc,12d ;de2
- ex de,hl
- or a,a
- sbc hl,bc
- ex de,hl
- pop bc
- ret
- routine_reglage_apres_la_tete_Right:
- push bc
- inc hl ;hl2
- ld bc,12d ;de2
- ex de,hl
- add hl,bc
- ex de,hl
- pop bc
- ret
- ;.................................................................
- routine_apres_la_tete_sprite_rotation:
- pop af
- BIT 0,C
- JR nz,ABit0R
- BIT 3,C
- JR nz,ABit3R
- BIT 1,C
- JR nz,ABit1R
- JR z,ABit2R
- ABit0R:
- BIT 1,A
- CALL nz,GetSpriteAAR1
- CALL z,GetSpriteAAR2
- JP Affichage_apres_la_tete
- ABit3R:
- BIT 1,A
- CALL nz,GetSpriteAAR3
- CALL z,GetSpriteAAR4
- JP Affichage_apres_la_tete
- ABit1R:
- BIT 0,A
- CALL nz,GetSpriteAAR4
- CALL z,GetSpriteAAR2
- JP Affichage_apres_la_tete
- ABit2R:
- BIT 0,A
- CALL nz,GetSpriteAAR3
- CALL z,GetSpriteAAR1
- JP Affichage_apres_la_tete
- ;........................................................
- ;routine Apres la tete sprite
- apres_la_tete_sprite_verticale:
- LD HL,SpriteAAHorizontale
- RET
- apres_la_tete_sprite_horizontale:
- LD HL,SpriteAAVerticale
- RET
- GetSpriteAAR1:
- LD HL,SpriteAAR1
- RET
- GetSpriteAAR2:
- LD HL,SpriteAAR2
- RET
- GetSpriteAAR3:
- LD HL,SpriteAAR3
- RET
- GetSpriteAAR4:
- LD HL,SpriteAAR4
- RET
- ;.................................................................
- ;Affiche des sprite de 12*12
- ;détruit af,bc,hl,de.
- Routine_Srite_Aff:
- LD A,12d
- CopyLineA:
- LD BC,12d
- LDIR
- LD BC,308d
- EX DE,HL
- ADD HL,BC
- EX DE,HL
- DEC A
- JR nz,CopyLineA
- RET
- ;........................................................
- ;Sprite de la tête
- sprite_aff_tete_Down:
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,1,1,1,1,1,1,1,1,0,0
- .db 0,0,0,1,1,1,1,1,1,0,0,0
- .db 0,0,0,0,1,1,1,1,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0,0
- sprite_aff_tete_Up:
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,1,1,1,1,0,0,0,0
- .db 0,0,0,1,1,1,1,1,1,0,0,0
- .db 0,0,1,1,1,1,1,1,1,1,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0,0
- sprite_aff_tete_Left:
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,1,0,0,0,0,0,0,0,0
- .db 0,0,1,1,0,0,0,0,0,0,0,0
- .db 0,1,1,1,0,0,0,0,0,0,0,0
- .db 1,1,1,1,1,1,1,1,1,1,1,1
- .db 1,1,1,1,1,1,1,1,1,1,1,1
- .db 0,1,1,1,0,0,0,0,0,0,0,0
- .db 0,0,1,1,0,0,0,0,0,0,0,0
- .db 0,0,0,1,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0,0
- sprite_aff_tete_Right:
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,1,0,0,0
- .db 0,0,0,0,0,0,0,0,1,1,0,0
- .db 0,0,0,0,0,0,0,0,1,1,1,0
- .db 1,1,1,1,1,1,1,1,1,1,1,1
- .db 1,1,1,1,1,1,1,1,1,1,1,1
- .db 0,0,0,0,0,0,0,0,1,1,1,0
- .db 0,0,0,0,0,0,0,0,1,1,0,0
- .db 0,0,0,0,0,0,0,0,1,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0,0
- ;........................................................
- ;Sprites Après la tête
- SpriteAAHorizontale:
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0,0
- SpriteAAVerticale:
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 1,1,1,1,1,1,1,1,1,1,1,1
- .db 1,1,1,1,1,1,1,1,1,1,1,1
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0,0
- ;........................................................
- ;Sprites Après la tête rotation
- SpriteAAR1:
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,1,1,1,0,0,0,0,0
- .db 0,0,0,1,1,1,1,0,0,0,0,0
- .db 1,1,1,1,1,1,0,0,0,0,0,0
- .db 1,1,1,1,1,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0,0
- SpriteAAR2:
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,1,0,0,0,0
- .db 0,0,0,0,0,1,1,1,1,0,0,0
- .db 0,0,0,0,0,0,1,1,1,1,1,1
- .db 0,0,0,0,0,0,0,1,1,1,1,1
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0,0
- SpriteAAR3:
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 1,1,1,1,1,0,0,0,0,0,0,0
- .db 1,1,1,1,1,1,0,0,0,0,0,0
- .db 0,0,0,1,1,1,1,0,0,0,0,0
- .db 0,0,0,0,1,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0,0
- SpriteAAR4:
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,0,0,0,0,0
- .db 0,0,0,0,0,0,0,1,1,1,1,1
- .db 0,0,0,0,0,0,1,1,1,1,1,1
- .db 0,0,0,0,0,1,1,1,1,0,0,0
- .db 0,0,0,0,0,1,1,1,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0
- .db 0,0,0,0,0,1,1,0,0,0,0,0,0
- .end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement