Perso_arme: ; degré 1 ld a,(arme_compteur) inc a ld (arme_compteur),a cp arme_phase2 jr z,Init_arme2 cp arme_finphase ret nz ld hl,persostat res 3,(hl) xor a ld (arme_compteur),a ret Init_arme2: ; degré 1 ld a,(num_arme) or a ret z ld (arme2num),a ld bc,(persoloc) inc c \ inc c \ inc c ld (arme2loc),bc ld hl,arme2img_table-6 add a,a ld b,0 ld c,a add hl,bc ld e,(hl) inc hl ld d,(hl) ex de,hl ld a,(persostat) bit 1,a jr z,Initarme2_suite ld de,10 add hl,de Initarme2_suite: ld (arme2img),hl ld a,(num_arme) sub 3 jp z,Dague_init dec a jp z,Eaubenite_init dec a jp z,Eclair_init ret Perso_normal: ld hl,persostat res 0,(hl) ld bc,(persoloc) call Sprite_collision_bas jr z,PN_suite ld hl,persostat set 2,(hl) res 3,(hl) ld a,9 ld (saut_compteur),a ret PN_suite: ld a,(keypressed) bit 3,a call z,Perso_collision_speciale2 ld a,(keypressed) ld hl,key2 bit 5,(hl) jp z,Perso_action bit 0,(hl) jr z,Perso_initsaut bit 2,a jr z,Mvt_droit bit 1,a jr z,Mvt_gauche bit 4,a ret nz ld bc,(persoloc) inc c \ inc c \ inc c ld (persoloc),bc ld hl,persostat set 2,(hl) ld a,10 ld (saut_compteur),a ret Perso_initsaut: ld hl,saut_compteur ld (hl),255 ld hl,persostat set 2,(hl) res 0,(hl) bit 2,a jr nz,Pas_sautdroit res 1,(hl) set 0,(hl) ret Pas_sautdroit: bit 1,a ret nz set 1,(hl) set 0,(hl) ret Mvt_droit: ld hl,persostat res 1,(hl) ld a,(timer) bit 3,a jr nz,Mvt_droit2 set 0,(hl) Mvt_droit2: ld a,(marais_flag) or a jr z,Mvt_droit2_suite ld a,(timer) and %1 ret nz Mvt_droit2_suite: ld bc,(persoloc) call Sprite_collision_droite ret z ld hl,persox inc (hl) ret Mvt_gauche: ld hl,persostat set 1,(hl) ld a,(timer) bit 3,a jr nz,Mvt_gauche2 set 0,(hl) Mvt_gauche2: ld a,(marais_flag) or a jr z,Mvt_gauche2_suite ld a,(timer) and %1 ret nz Mvt_gauche2_suite: ld bc,(persoloc) call Sprite_collision_gauche ret z ld hl,persox dec (hl) ret Perso_saut: ld hl,persostat bit 0,(hl) jr z,PS_suite bit 1,(hl) push hl push af call nz,Mvt_gauche2 pop af call z,Mvt_droit2 pop hl PS_suite: call Gestion_Scrollgd ld a,(persostat) bit 3,a jr nz,PS_suite3 ld a,(key2) bit 5,a ld a,(keypressed) call z,Perso_action PS_suite3: ld a,(saut_compteur) cp 20 jr z,PS_suite2 inc a PS_suite2: ld (saut_compteur),a ld d,0 ld e,a ld hl,table_saut add hl,de ld a,(hl) or a ret z ld b,a ld a,e cp 11 jr nc,Descendant Ascendant: push bc ld bc,(persoloc) call Sprite_collision_haut jr z,Fin_Ascendant ld hl,persoy dec (hl) pop bc djnz Ascendant ret Descendant: push bc ld bc,(persoloc) dec c \ dec c \ dec c call Sprite_collision_bas jr z,Fin_Saut ld hl,persoy inc (hl) pop bc djnz Descendant ret Fin_Ascendant: pop bc ld a,10 ld (saut_compteur),a ret Fin_Saut: pop bc ld a,9 ld (saut_compteur),a ld a,(keypressed) bit 4,a ret z xor a ld (arme_compteur),a ld a,(persoy) dec a \ dec a \ dec a ld (persoy),a ld hl,persostat res 2,(hl) res 3,(hl) ret Gestion_Scrollgd: ld a,(persox) cp 48 ret z jp c,gba_scroll_left jp gba_scroll_right Gestion_Scrollhb: ld a,(persoy) bit 7,a jr nz,Scrollh cp 20 ret z jr nc,Pas_scrollhaut ld a,(timer) and %1 ret nz jp gba_scroll_up Scrollh: call gba_scroll_up ret c jr Gestion_Scrollhb Pas_scrollhaut: ld a,(persoy) cp 44 jr nc,Scrollb ld a,(timer) and %1 ret nz jp gba_scroll_down Scrollb: call gba_scroll_down jr Pas_scrollhaut Perso_action: bit 3,a jp z,PA_2 ; z ld bc,(persoloc) inc b \ inc b \ inc b inc c \ inc c \ inc c bit 7,c jr nz,PA_suite call gba_collision cp 59 ; affiche jp z,Lire_panneau ld hl,Table_sprite+8 ld b,spritemax-1 trouver_spriteamis: ld a,(hl) inc hl or (hl) inc hl jr z,TSP_suite ld a,(hl) srl a cp nbre_spriteamis-3 ; -4 jr nc,TSP_suite inc hl ld e,(hl) inc hl ld d,(hl) dec hl \ dec hl ld a,(persoy) sub e jr nz,TSP_suite ld a,(persox) sub d cp 6 jp c,Parler_sprite neg cp 6 jp c,Parler_sprite TSP_suite: ld de,6 add hl,de djnz trouver_spriteamis PA_suite: ld hl,table_fouetimg ld a,(num_fouet) add a,a ld d,0 ld e,a add hl,de ld e,(hl) inc hl ld d,(hl) ex de,hl ld d,0 ld e,(hl) inc hl ld a,(hl) ld (fouetlongueur),a inc hl ld a,(persostat) bit 1,a ld a,8 jr z,PA_suite2 ld a,(fouetlongueur) add hl,de add a,a add a,a add a,a neg PA_suite2: ld (fouetimg),hl ld (fouetx),a xor a jr Perso_initarme PA_2: ld a,(arme2num) cp 7 jp z,Supp_arme2_2 or a ret nz ld a,(num_arme2) cp 3 ret c Perso_initarme: ld (num_arme),a ld hl,persostat set 3,(hl) xor a ld (arme_compteur),a ret