deeph Le 11/11/2014 à 16:04 Pour le moment autant faire une app pour ne plus être trop embêtés avec le manque de place.
Par contre je n'en ai jamais vraiment trop fait, et je crois me souvenir que même le header est assez galère à mettre en place (d'ailleurs on peut même signer les apps maintenant que les clées ont été crackées, non ?).
J'aurais peut être le temps d'y regarder cette semaine dans le train.
Pour le header on peut utiliser app.inc. Juego est actuellement un app, donc je peux l'utiliser comme une base de reference. Je vais essayer de commencer la conversion ce soir.
EDIT : Bon, il semble que l'on a déjà dépasser la première page dans l'app :/
Il faut copier les routines d'Ion, j'ai commencé à changer le SMC, dès que j'aurai quelque chose qui assemble et qui marche je te l'enverrai.
Je voulais écrire un tilemapper plus simple, puisque comme tu as dit on n'avais pas besoin de toutes ses fonctions (et d'ailleurs il me semblait plus simple d'en écrire un de nouveau :P). J'ai essayé d'ajouter beaucoup de comments, après voir le code source de Robot War ça m'a beaucoup inspiré, son code (ce de DigiTan) est très facile de lire et bien commenté.
Par exemple, voici le nouveau tilemapper (désolé, mes "tabs" sont quatre espaces, pas huit) :;###########################
draw_map:
;# draws the map to the graph buffer
;# input:
;# -none
;###########################
call get_map_offset ; load starting map tile into hl
exx
ld hl,gbuf
ld de,12 ; no. of columns
ld bc,$0C08 ; draw 12 (hex: $0C) columns and 8 rows
draw_row:
push hl ; save gbuf pointer
exx
push hl ; save map location
ld l,(hl) ; sprite #
call get_tile ; load tile into hl
ld b,8 ; each sprite is 8 rows tall
sprite_loop:
ld a,(hl) ; byte to draw
inc hl ; next byte
exx ; switch to shadow registers
ld (hl),a
add hl,de ; next row in gbuf
exx
djnz sprite_loop
pop hl ; map position
inc hl
exx
pop hl ; previous gbuf
inc hl
djnz draw_row
exx
ld a,(mapWidth) ; we've drawn 12 rows, so we need to skip
sub 12 ;.. mapWidth-12 bytes to get to the next row in the map
ld e,a ; d already = 0
add hl,de ; move to the next row in map
exx
ld e,12*7 ; 12 colonnes, 7 rangs à baisser
add hl,de ; next row in gbuf
ld e,12 ; rendre les valeurs originales à e/b
ld b,12
dec c ; c = # rows left to draw
jr nz,draw_row
ret
;###########################
get_map_offset:
;# calculates the top left position of the map
;# input:
;# -none
;# output:
;# -hl = top left position in map
;###########################
ld hl,(map_y-1) ; map's Y position into h
ld de,(mapWidth) ;
call mult_EH ; hl = mapY*mapWidth
ld de,(mapAddr) ; de = map address
add hl,de ; start of map + mapY*mapWidth
ld de,(map_x) ;
ld d,0 ; clear out MSB
add hl,de ; add map x
ret
;###########################
get_tile:
;# loads a tile into hl
;# -l = tile id to load
;# output:
;# -hl = pointer to first byte of sprite data
;###########################
ld h,0 ;
add hl,hl
add hl,hl
add hl,hl ; hl * 8
ld bc,(tileAddr)
add hl,bc ; start of sprite's data
ret
Ah, et comme j'ai dit, personnellement je préfère des tabs de 4 espaces (8 me semble trop), qu'est-ce que tu utilises ?
deeph Le 15/11/2014 à 13:17 Génial, ça n'a pas l'air si compliqué, surtout si bien commenté. Par contre je pense qu'on devrait continuer à commenter uniquement en anglais.
Et comme j'ai pas mal d'heures de train j'en profiterai pour lire le code source de Robot War, s'il est aussi bien expliqué.
Pour les tabs, je pense que 4 espaces c'est bien, de toute façons je n'y ai jamais trop touché, j'utilise la valeur par défaut de Notepad++.
deeph Le 17/11/2014 à 11:35 Quelqu'un a déjà pris mon pseudo >_>
Bon je m'inscrirai ce soir.
deeph Le 19/11/2014 à 07:34 Ouais moi aussi je suis très occupé ces temps-ci. Le soir je relis et nettoie un peu le code.
Je me suis pas encore inscrit parce que ça m'embête qu'un type ai pris le même pseudo que moi, et j'ai bon vérifier et essayer de me souvenir je ne me suis jamais inscrit sur ce site avant. Enfin bon sinon je m'inscrirais avec un autre pseudo :/