home *** CD-ROM | disk | FTP | other *** search
- #include "ti-85.h"
- .org 0
- .db "OKIEDOKE",0
- ;****************************************************************************
- ;* Initialisation des constantes *
- ;****************************************************************************
-
- maxtab = 32;
- px = TEXT_MEM;
- py = TEXT_MEM+1;
- postabc = TEXT_MEM+2; 2 octets.
- ntab = TEXT_MEM+4;
- ncoups = TEXT_MEM+5; 2 octets.
- tab = TEXT_MEM+10;
-
-
- ;****************************************************************************
- ;* Debut du programme *
- ;****************************************************************************
- ROM_CALL(CLEARLCD)
-
- set 3,(iy+05)
- ld de,(PROGRAM_ADDR)
- ld hl,$0300
- ld ($800C),hl
- ld hl,titre
- add hl,de
- ROM_CALL(D_ZT_STR)
- ld b,6
- ld hl,ngag
- add hl,de
- dbb: ld a,b
- ld ($800C),a
- ld a,03
- ld ($800D),a
- push hl
- ROM_CALL(D_ZT_STR)
- pop hl
- djnz dbb
- res 3,(iy+05)
- ld hl,$154A
- ld ($8333),hl
- ld hl,jerome
- add hl,de
- ROM_CALL(D_ZM_STR)
- ld hl,$2046
- ld ($8333),hl
- ld hl,bide
- add hl,de
- ROM_CALL(D_ZM_STR)
-
- ld a,3
- ld (px),a
- ld (py),a
- init:
- ld a,0
- ld (ntab),a
- ld hl,(PROGRAM_ADDR)
- ld de,tableaux
- add hl,de
- ld (postabc),hl
- debinit:
- ld de,(PROGRAM_ADDR)
- ld hl,$0007
- ld ($800C),hl
- ld hl,coups
- add hl,de
- ROM_CALL(D_ZT_STR)
-
- ld hl,$0E07
- ld ($800C),hl
- ld a,(ntab)
- inc a
- ld l,a
- ld a,0
- ld h,a
- ROM_CALL(D_HL_DECI)
-
- ld hl,0
- ld (ncoups),hl
- CALL_(initab)
-
-
-
- ;****************************************************************************
- ;* Boucle principale *
- ;****************************************************************************
- aff: CALL_(afftab)
-
- affpos: set 3,(IY+05)
- CALL_(affichept)
-
- res 3,(IY+05)
-
- keylp1:
- call GET_KEY
-
- ld c,0
- cp 2
- jr nz,pasgauche
- ld b,-1
- jr deplace
- pasgauche:
- cp 3
- jr nz,pasdroite
- ld b,1
- jr deplace
- pasdroite:
- ld b,0
- cp 4
- jr nz,pashaut
- ld c,-1
- jr deplace
- pashaut:
- cp 1
- jr nz,pasbas
- ld c,1
- jr deplace
- pasbas:
- cp 54
- jr z,selection
- cp 27
- JUMP_Z(debinit)
- cp 19
- jr z,tabsuiv
- cp 55
- jr nz,keylp1
- ret
-
- deplace:
- CALL_(affichept)
-
- ld a,(px)
- add a,b
- cp 0
- jr z,pasokx
- cp 7
- jr z,pasokx
- ld (px),a
- pasokx: ld a,(py)
- add a,c
- cp 0
- jr z,pasoky
- cp 7
- jr z,pasoky
- ld (py),a
- pasoky: jr affpos
-
- tabsuiv:
- ld a,(ntab)
- inc a
- cp maxtab
- JUMP_Z(init)
-
- ld (ntab),a
- ld hl,(postabc)
- ld de,6
- add hl,de
- ld (postabc),hl
- JUMP_(debinit)
-
-
-
- selection:
- ld hl,$0507
- ld ($800C),hl
- ld hl,(ncoups)
- inc hl
- ld (ncoups),hl
- ROM_CALL(D_HL_DECI)
-
-
- CALL_(ld_hl_tab)
-
- ld a,1
- ld b,a
- xor (hl)
- ld (hl),a
- inc hl
- ld a,b
- xor (hl)
- ld (hl),a
- ld de,7
- add hl,de
- ld a,b
- xor (hl)
- ld (hl),a
- ld de,-9
- add hl,de
- ld a,b
- xor (hl)
- ld (hl),a
- ld de,-7
- add hl,de
- ld a,b
- xor (hl)
- ld (hl),a
- JUMP_(aff)
-
-
- ;****************************************************************************
- ;* Affiche le caractere se trouvant en px,py dans tab *
- ;****************************************************************************
- affichept:
- push de
- ld a,(px)
- add a,3
- ld ($800D),a
- ld a,(py)
- ld ($800C),a
- CALL_(ld_hl_tab)
- ld a,(hl)
- ld d,a
- add a,a
- add a,a
- add a,a
- add a,a
- add a,32
- ROM_CALL(TR_CHARPUT)
- ld a,d
- pop de
- ret
-
- ld_hl_tab:
- push bc
- ld hl,tab
- ld a,(py)
- add a,a ;a=py*2
- add a,a ;a=py*4
- add a,a ;a=py*8
- ld b,0
- ld c,a
- ld a,(px)
- add a,c
- ld c,a
- add hl,bc ;hl=tab+(px)+(py)*8
- pop bc
- ret
-
- ;****************************************************************************
- ;* GAGNE *
- ;****************************************************************************
- gagne:
- ld hl,$0D06
- ld ($800C),hl
- ld de,(PROGRAM_ADDR)
- ld hl,gag
- add hl,de
- ROM_CALL(D_ZT_STR)
- CALL_(initab)
- CALL_(afftab)
- att: call GET_KEY
- cp 55
- jr nz,att
- ld hl,$0D06
- ld ($800C),hl
- ld de,(PROGRAM_ADDR)
- ld hl,ngag
- add hl,de
- ROM_CALL(D_ZT_STR)
- ret
-
- ;***************************************************************************
- ;* Initialisation du tableau *
- ;***************************************************************************
-
- initab:
- ld hl,(postabc)
- ld de,tab+8
- ex de,hl
- ;A cette instant, hl pointe sur tab+8 et de sur le tableau en memoire
- ;On initialise le tableau en tab.
- srl c
- ld b,6
- binit1:
- inc hl
- push bc
- ld a,(de)
- ld c,a
- srl c
- ld b,6
- binit2:
- ld a,0
- srl c
- adc a,0
- ld (hl),a
- inc hl
- djnz binit2
-
- pop bc
- inc hl
- inc de
- djnz binit1
- ret
-
- ;****************************************************************************
- :* Programme pour afficher le tableau *
- ;****************************************************************************
- afftab: ld d,0
- ld hl,(px)
- push hl
- ld c,6
- affy:
- ld a,c
- ld (py),a
- ld b,6
- affx:
- ld a,b
- ld (px),a
- CALL_(affichept)
- add a,d
- ld d,a
- djnz affx
- dec c
- ld a,c
- cp 0
- jr nz,affy
-
- pop hl
- ld (px),hl
-
- ld a,d
- cp 0
- JUMP_Z(gagne)
- ret
-
- ;****************************************************************************
- ;* Texts *
- ;****************************************************************************
- titre: .db "OkieDoke",0
- coups: .db "CLIC: 0 LEV:",0
- gag: .db "GAGNE",0
- ngag: .db " ",0
- jerome: .db "Leroux Jerome",0
- bide: .db "Benjamin LEROUX",0
- ;****************************************************************************
- ;* Tableaux du jeu *
- ;****************************************************************************
- tableaux:
- .db $ff,$ff,$ff,$ff,$ff,$ff
- .db $3c,$66,$42,$42,$66,$3c
- .db $00,$3c,$3c,$3c,$3c,$00
- .db $54,$2a,$54,$2a,$54,$2a
- ; .db $00,$50,$88,$88,$50,$00
- ; .db $50,$00,$00,$00,$00,$50
- ; .db $88,$50,$00,$00,$50,$88
- ; .db $00,$88,$88,$88,$88,$00
- ; .db $00,$00,$d8,$d8,$00,$00
- ; .db $50,$d8,$88,$88,$d8,$50
- ; .db $88,$50,$88,$88,$50,$88
- ; .db $f8,$88,$20,$20,$88,$f8
- ; .db $88,$00,$00,$00,$00,$88
- ; .db $50,$d8,$d8,$d8,$d8,$50
- ; .db $00,$20,$88,$88,$20,$00
- ; .db $88,$f8,$70,$70,$f8,$88
- ; .db $00,$00,$10,$10,$00,$00
- ; .db $00,$00,$00,$00,$10,$00
- ; .db $e0,$a0,$a0,$a0,$a8,$38
- ; .db $00,$08,$10,$20,$00,$00
- ; .db $30,$48,$a0,$48,$80,$08
- ; .db $10,$00,$80,$00,$40,$10
- ; .db $80,$ff,$90,$01,$90,$90
- ; .db $c0,$38,$c0,$28,$50,$28
- ; .db $38,$68,$b0,$48,$30,$40
- ; .db $f8,$f0,$f8,$f0,$f8,$f0
- ; .db $a8,$10,$a0,$08,$00,$08
- ; .db $d8,$f8,$e8,$98,$78,$f8
- ; .db $00,$00,$48,$10,$00,$50
- ; .db $c8,$50,$40,$a0,$10,$80
- ; .db $e0,$00,$c8,$30,$c0,$30
- ; .db $50,$01,$30,$80,$01,$81
- ; .db $10,$b0,$80,$18,$80,$78
- .end
-