J'ai inclus toutes les data en fichier binaire que j'ai généré grâce au petit utilitaire d'Orion mais celui de TJ Edmister marche également très bien, j'en reparlerais ultérieurement.
; ----
; image01
; ----
.include "STARTUP.ASM"
.bank $01
.org $4000
;--------------
;main code
;--------------
main:
st0 #5 ;disable display
lda #$0C
sta $0002
st0 #9 ;init bat size 32*32
st1 #0
st2 #0
lda #bank(test_gfx)
tam #$03
inc a
tam #$04
inc a
tam #$05
inc a
tam #$06
st0 #0 ;copy pixels
st1 #0
st2 #$10
st0 #2
tia (test_gfx+$6000),$0002,$7000
st0 #0 ;copy bat
st1 #0
st2 #0
st0 #2
lda #bank(test_bat)
tam #$03
inc a
tam #$04
inc a
tam #$05
inc a
tam #$06
tia (test_bat+$6000),$0002,$700
lda #bank(test_pal)
tam #$03
inc a
tam #$04
inc a
tam #$05
inc a
tam #$06
stz $402
stz $403
tia (test_pal+$6000),$404,$200
st0 #5 ;enable display
lda #$CC
sta $0002
.wait_loop ;
jmp .wait_loop
;-----
;data
;-----
.data
.bank $06
test_gfx:
.incbin "pce_tile.bin" ; bank$06 leng $7000
test_pal:
.incbin "pce_pal.bin" ; bank$09-$0FFF
test_bat:
.incbin "pce_bat.bin"
Dans cet exemple, j'insère le code dans la première bank de la Hucard.
On initialise la taille de la BAT grâce au registre $09, puis on map toutes le bank de données.
TIA est une instruction qui permet de transférer des données par block de 8bits.
La palette ira au VCE par $0404, l'index de la palette $0400 étant auto incrémenté à chaque écriture du VCE Data port.
La Bat ira en Vram dans $0000 grace au registre $02 et par le data port $0002 (LSB data video port).
On placera les tiles en VRAM et après la BAT. Pour rappel, un tile est composé de 8*8 pixel, chaque pixel étant codé sur 4 bits (qui correspond à une des 16 couleurs de la palette associé au tile dont il fait partie).
Enfin on active le background à l'aide du registre $05.
Voilà vous avez, avec le fichier startup.asm réussis à afficher un background, sans utiliser les bibliotheques de Magic Kit.
2 commentaires:
cool un gueux qui programme des consoles !
La PC-engine a un processeur ARM? Ca ressemble pas mal à ce que je faisais sur GBA.
Non c'est un processeur 8 bits basé sur le 65c02 de MOS.
Le processeur de la GBA est un 32 bits je crois.
Enregistrer un commentaire