Je me suis remis à l'ASM z80 depuis quelque temps, et ai décidé de créer un PONG, jeu plutôt connu de la communauté.
Je programme surtout oncalc, donc ce programme à été développé avec Mimas.
Seulement, après être compilé, le programme ne fait pas du tout ce que je voudrais.
Voici le code source en .8xv :
Et le code source du fichier:
Show/Hide spoilerAfficher/Masquer le spoiler
- Code: Select all
;#SECTION "MAIN", CODE
org userMem - 2
db 0BBh, 6Dh
Pal1_x equ 8265h
Pal1_y equ 8267h
Pal2_x equ 8269h
Pal2_y equ 8271h
B_x equ 8273h
B_y equ 8275h
V_x equ 8277h
V_y equ 8279h
Start:
B_CALL _ClrLCDFull
ld hl, 0
ld (Pal1_x), hl
ld hl, 92
ld (Pal2_x), hl
ld hl, 46
ld (B_x), hl
ld hl, 26
ld (Pal1_y), hl
ld (Pal2_y), hl
ld hl, 30
ld (B_y), hl
ld hl, 1
ld (V_x), hl
ld (V_y), hl
ld c, 1
Draw:
ld a, (Pal1_x)
ld l, a
ld b, 2
add a, b
ld e, a
ld a, (Pal1_y)
ld h, a
ld b, 10
add a, b
ld d, a
B_CALL _DrawRectBorder
ld a, (Pal2_x)
ld l, a
ld b, 2
add a, b
ld e, a
ld a, (Pal2_y)
ld h, a
ld b, 10
add a, b
ld d, a
B_CALL _DrawRectBorder
ld a, (B_x)
ld l, a
ld b, 1
add a, b
ld e, a
ld a, (B_y)
ld h, a
ld b, 1
add a, b
ld d, a
ld a, c
cp 1
push bc
call z, DrawRECT
pop bc
ld a, c
cp 1
call nz, ClearRECT
Loop:
ld c, 0
call Draw
ld a, (V_x)
ld b, a
ld a, (B_x)
add a, b
ld (B_x), a
ld a, (V_y)
ld b, a
ld a, (B_y)
add a, b
ld (B_y), a
ld a, (V_y)
ld b, a
ld a, (Pal2_y)
add a, b
ld (Pal2_y), a
call Draw
Test:
B_CALL _GetCSC
cp skUp
jp z, Up
cp skDown
jp z, Down
cp skClear
jp z, Quit
cp skEnter
call z, Pause
ld a, (B_x)
cp 3
jp z, Pal1B_H
cp 91
jp z, Pal2B_H
ld a, (B_y)
cp 0
jp z, B_Hy
cp 61
jp z, B_Hy
jp Loop
Up:
ld c, 0
call Draw
ld a, (Pal1_y)
cp 0
jp z, Loop
sub 1
ld (Pal1_y), a
ld c, 1
call Draw
jp Loop
Down:
ld c, 0
call Draw
ld a, (Pal1_y)
cp 52
jp z, Loop
add a, 1
ld (Pal1_y), a
ld c, 1
call Draw
jp Loop
Pal1B_H:
ld a, (Pal1_y)
ld b, a
ld a, (B_y)
cp b
jp m, Loop
ld a, 10
add a, b
ld b, a
ld a, (B_y)
cp b
jp p, Loop
ld a, (V_x)
cp 1
call z, Moins1
ld a, (V_x)
cp -1
call z, Plus1
jp Loop
Pal2B_H:
ld a, (Pal2_y)
ld b, a
ld a, (B_y)
cp b
jp m, Loop
ld a, 10
add a, b
ld b, a
ld a, (B_y)
cp b
jp p, Loop
ld a, (V_x)
cp 1
call z, Moins1
ld a, (V_x)
cp -1
call z, Plus1
ld (V_x), a
jp Loop
Moins1:
ld a, -1
ret
Plus1:
ld a, 1
ret
B_Hy:
ld a, (V_y)
cp 1
call z, Moins1
ld a, (V_y)
cp -1
call z, Plus1
ld (V_y), a
jp Loop
Pause:
push af
push bc
push de
push hl
L_Pause:
B_CALL _GetKey
cp kEnter
jr nz, L_Pause
pop hl
pop de
pop bc
pop af
ret
Quit:
ret
;#SECTION "DRAW", CODE
ClearRECT:
B_CALL _DrawRectBorderClear
ret
DrawRECT:
B_CALL _DrawRectBorder
ret
Et le programme compilé:
Voilà, si quelqu'un peut m'aider, je lui en serais reconnaissant,
Merci