lundi 27 octobre 2008

Pixel Art

Voici mon premier cube en iso!



Je me suis servie de paint.net qui me semble beaucoup plus pratique lorsqu'il s'agit de travailler en pixel que photoshop, en plus il gère les calques ;)

lundi 20 octobre 2008

Premier code

Après mon fichier d'init STARTUP.ASM, voilà comment commencer doucement en programmation avec un code permettant d'afficher un background, ici en 256*240.
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.

dimanche 19 octobre 2008

Code INIT

Voici un exemple de ce que pourrait être votre fichier d'init, un bon début pour coder une démo sur PC-Engine. Pour rappel la Bank $00 est toujours et automatiquement mappée sur le Mpr7 au démarrage.
Bank $FF (IO Port) est généralement mappée sur Mpr0 et Bank $F8 (8ko Ram) sur Mpr1.

Pour résumer voici ce qu'effectuent ces quelques lignes :

-Désactive les interruptions
-Initialise le processeur en haute vitesse
-Initialise le vecteur de reset $FFFE
-Map les banks $00, $F8, et $01 à $05
-Initialise les 8ko de ram
-Initilaise le pointeur de pile à $FF

; ----
; STARTUP.ASM
; ----

.bank 0
.org $FFFE
.dw _reset

.org $E000
.code

_reset:
sei
csh ; clock set high

cld

; MPR0 $0000-$1FFF BANK $FF
; MPR1 $2000-$3FFF BANK $F8
; MPR2 $4000-$5FFF BANK $01
; MPR3 $6000-$7FFF BANK $02
; MPR4 $8000-$9FFF BANK $03
; MPR5 $A000-$BFFF BANK $04
; MPR6 $C000-$DFFF BANK $05
; MPR7 $E000-$FFFF BANK $00

lda #$FF
tam #0

lda #$F8
tam #1

stz $2000 ;init 8k ram
tii $2000,$2001,$1FFF

ldx #$FF ;init the stack pointer to 21FF
txs

lda #$01
tam #2

inc a
tam #3

inc a
tam #4

inc a
tam #5

inc a
tam #6

jmp main

Open !

Pourquoi ce blog.....
J'ai décidé de poser quelque part tous les projets que j'ai commencé ou pas... Programmation assembleur sur PC Engine, Pixel Art et Création web... Voici ce que vous devriez trouver sur ce blog...