Mr ToutLeMonde et la programmation NES...
+23
brokestudio
F.L
grostonton
Ned_Flanders
Tryphon
philip
fanoplusplus64K
tfdi
Ricco59_59
Top l'âne
tetsuro
upsilandre
nemokantio
Stef
pckid
ichigobankai
suisseretrogaming
patapouf31
vingazole
koan75
joelabroc
drfloyd
vincent2105
27 participants
Page 9 sur 34
Page 9 sur 34 • 1 ... 6 ... 8, 9, 10 ... 21 ... 34
Re: Mr ToutLeMonde et la programmation NES...
Ah ok donc il faut ajouter 32 octets à ton pointeur à chaque octets copié
L'idéal serrait d'avoir les octets de la colonne alignés dans ton fichier (je fais ça sur PCE) .
- Code:
LDX #$1E ; copy 30 bytes[size=13][/size]
DrawColumnLoop:
LDA [sourceLow]
STA $2007
; On passe à l'octet suivant de la colonne
lda #32
clc
adc sourceLow
sta sourceLow
lda sourceLow + 1
adc #00
sta sourceLow + 1
dex
bne DrawColumnLoop
rts
L'idéal serrait d'avoir les octets de la colonne alignés dans ton fichier (je fais ça sur PCE) .
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
t'as oublié ce qui concerne le registre Y non ?
Et pour :
adc #00
sta sourceLow + 1
tu veux dire adc #01 non ?
Après je trouve bizarre d'incrémenter sourceLow+1 à chaque tour de boucle... je pensais plutot qu'il fallait le faire qu'une fois sur 8 (256/32=8)
Et pour :
adc #00
sta sourceLow + 1
tu veux dire adc #01 non ?
Après je trouve bizarre d'incrémenter sourceLow+1 à chaque tour de boucle... je pensais plutot qu'il fallait le faire qu'une fois sur 8 (256/32=8)
j'avais pas vu que t'avais édité... oui l'idéal ca serait que je puisse convertir les NT que je crée sur NES screen tool... mais je ne connais pas d'autre langage de prog, faudra surement que je m'y mette !touko a écrit:L'idéal serrait d'avoir les octets de la colonne alignés dans ton fichier (je fais ça sur PCE) .
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
C'est bien adc #0 qu'il faut, c'est justement pour gérer le fait que lorsqu'on a une retenue sur la première addition alors on augmente sourceLow+1 de 1 (et seulement dans ce cas là)
Stef- Interne
- Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007
Re: Mr ToutLeMonde et la programmation NES...
j'avais pas vu que t'avais édité... oui l'idéal ca serait que je puisse convertir les NT que je crée sur NES screen tool... mais je ne connais pas d'autre langage de prog, faudra surement que je m'y mette !
Je trouve ça incroyable , tu ne connais que l'asm 6502 ? eh ben si c'est le cas chapeau , parce que en général on connaît plein d'autre langage sauf l'asm
D'un coter c'est un peu handicapant de connaître que l'asm , faire ces propre tool me semble indispensable quelque fois.
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
Merci pour l'explication stef
Kannagi, jusque là, j'ai jamais ressenti le besoin de créer des tools puisque tout ce que je fais reste très basique, et surtout très peu développé (donc peu de taches répétitives). Mais à moyen terme en effet, je pense que ça sera indispensable.
Comme tu l'as relevé, je ne connais pas d'autres langages de prog, mais si je dois passer du temps sur un autre langage pour me créer des tools, alors je souhaiterai qu'il puisse aussi me servir à autre chose : programmer la gamecube par exemple (en C j'imagine ?) Je précise que concevoir n'est pas une finalité pour moi, j'ai juste envie de découvrir.
Dans tous les cas, je n'attaquerai pas avant d'avoir fait ce que je voulais en matière de scrolling, je pense que je suis près du but...
Kannagi, jusque là, j'ai jamais ressenti le besoin de créer des tools puisque tout ce que je fais reste très basique, et surtout très peu développé (donc peu de taches répétitives). Mais à moyen terme en effet, je pense que ça sera indispensable.
Comme tu l'as relevé, je ne connais pas d'autres langages de prog, mais si je dois passer du temps sur un autre langage pour me créer des tools, alors je souhaiterai qu'il puisse aussi me servir à autre chose : programmer la gamecube par exemple (en C j'imagine ?) Je précise que concevoir n'est pas une finalité pour moi, j'ai juste envie de découvrir.
Dans tous les cas, je n'attaquerai pas avant d'avoir fait ce que je voulais en matière de scrolling, je pense que je suis près du but...
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
Oui c est adc #00
J ai rien optimiser pourque tu comprennes ce que j ai fait.
Je mettrai une version un peut optimisée tu gagneras une dizaine de cycles par boucle.
J ai rien optimiser pourque tu comprennes ce que j ai fait.
Je mettrai une version un peut optimisée tu gagneras une dizaine de cycles par boucle.
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
Bon je dois merder quelque part dans le tuto, mais je vais me retrousser les manches et t'épargner les 300 lignes de codes
Par contre, dans ton code, il y a un p'tit truc qui cloche non ? je suppose que les crochets sont de trop ?
Par contre, dans ton code, il y a un p'tit truc qui cloche non ? je suppose que les crochets sont de trop ?
- Code:
DrawColumnLoop:
LDA [sourceLow] ; ???
STA $2007
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
J'utilise NESASM3 comme assembleur et j'obtiens : "incorrect addressing mode"
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
Il prend peut être des parenthèses à la place des crochets.
Si lda [sourceLow],y marche ça devrait marcher aussi.
Si lda [sourceLow],y marche ça devrait marcher aussi.
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
LDA [sourceLow],y marche pourtant...
Avec LDA (sourceLow), dans le debugger j'ai ca :
$C1EE:AD 06 00 LDA $0006 = #$10
tandis qu'avec LDA sourceLow , dans le debugger j'ai ca :
$C1EE:AD 06 00 LDA $0006 = #$B0
Le fait de rajouter des parenthèses a bien une incidence mais comment savoir si les parenthèses remplacent bien les crochets ? c'est difficile à dire, d'autant que je ne suis vraiment pas sûr qu'il n'y ait pas d'autres portions de codes à modifier dans le tuto
J'ai l'impression que le scrolling c'est pas pour ce soir
Avec LDA (sourceLow), dans le debugger j'ai ca :
$C1EE:AD 06 00 LDA $0006 = #$10
tandis qu'avec LDA sourceLow , dans le debugger j'ai ca :
$C1EE:AD 06 00 LDA $0006 = #$B0
Le fait de rajouter des parenthèses a bien une incidence mais comment savoir si les parenthèses remplacent bien les crochets ? c'est difficile à dire, d'autant que je ne suis vraiment pas sûr qu'il n'y ait pas d'autres portions de codes à modifier dans le tuto
J'ai l'impression que le scrolling c'est pas pour ce soir
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
La je suis en vacances lol je ai pas mon pc à portée de main donc c'est est pas facile pour écrire de long messages.
Peut être que ce mode de adressage ne est pas supporté.
Peut être que ce mode de adressage ne est pas supporté.
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
Heu, je viens d'essayer de m'initier au 6502 avec ce petit site : http://skilldrick.github.io/easy6502/
J'ai essayé de comprendre les adressages LDA ($NN,X) et LDA ($NN),Y.
C'est peut être ça votre souci.
Il faut en page zero stocker un pointeur, par exemple en $0001 (poids faible) et $0002 (poids fort).
Exemple : $0001 : SourceLow, et $0002 : SourceHigh
Puis faut passer par LDA ou STA ($01),Y pour se servir du pointeur.
STA ($01),Y veut dire : stocker contenu registre A à l'adresse stockée en page zero en $0001 (qui est SourceHigh:SourceLow) et au déplacement Y par rapport à cette adresse.
Hum, je ne sais pas si je suis clair...
J'ai essayé de comprendre les adressages LDA ($NN,X) et LDA ($NN),Y.
C'est peut être ça votre souci.
Il faut en page zero stocker un pointeur, par exemple en $0001 (poids faible) et $0002 (poids fort).
Exemple : $0001 : SourceLow, et $0002 : SourceHigh
Puis faut passer par LDA ou STA ($01),Y pour se servir du pointeur.
STA ($01),Y veut dire : stocker contenu registre A à l'adresse stockée en page zero en $0001 (qui est SourceHigh:SourceLow) et au déplacement Y par rapport à cette adresse.
Hum, je ne sais pas si je suis clair...
nemokantio- Patient contaminé
- Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013
Re: Mr ToutLeMonde et la programmation NES...
effectivement bonnes vacances Toukotouko a écrit:je ai pas mon pc à portée de main donc c'est est pas facile pour écrire
De toute facon, faut que je me penche sur autre chose là (ouvrir/lire le fichier bin du tuto, et le fichier nam de mon utilitaire pour voir les différences)
nemokantio a écrit:J'ai essayé de comprendre les adressages LDA ($NN,X) et LDA ($NN),Y.
C'est peut être ça votre souci.
Il faut en page zero stocker un pointeur, par exemple en $0001 (poids faible) et $0002 (poids fort).
Exemple : $0001 : SourceLow, et $0002 : SourceHigh
Puis faut passer par LDA ou STA ($01),Y pour se servir du pointeur.
STA ($01),Y veut dire : stocker contenu registre A à l'adresse stockée en page zero en $0001 (qui est SourceHigh:SourceLow) et au déplacement Y par rapport à cette adresse.
Hum, je ne sais pas si je suis clair...
Merci de te pencher sur le problème En fait la routine du tuto fonctionne parfaitement, je souhaite la modifier car le registre Y (8bits) ne me permet pas d'atteindre des adresses suffisamment éloignées. Grossièrement ca fonctionnerait si je pouvais faire LDY #$3A0, vu qu'on est limité à #$FF c'est pas possible, c'est pour cela qu'on ne ne peut utiliser ce mode d'adressage
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
J écris avec mon téléphone et j ai horreur de ça on voit rien.lol
Sinon tu peux utiliser
lda [tabLow], Y
avec Y toujours egal a 0, tu fais un ldy =0 en dessous du ldx et tu y touches plus.
je pense que la syntaxe entre l indirect et l indirect indexé ne doit pas être la même sur ton assemleur.
Sinon tu peux utiliser
lda [tabLow], Y
avec Y toujours egal a 0, tu fais un ldy =0 en dessous du ldx et tu y touches plus.
je pense que la syntaxe entre l indirect et l indirect indexé ne doit pas être la même sur ton assemleur.
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
Dans ce cas, quand ton registre Y arrive à 255, tu dois le mettre à zéro et incrémenter le poids fort de ton pointeur en page zéro.
Celui qui est utilisé quand tu fais LDA (sourcelow),Y
Si ton pointeur en page zero vaut $0200.
Tu fais les 256 premiers octets avec LDA (sourcelow),Y
Y arrive au bout, il revient à zéro, tu passes le pointeur à $0300 et tu recommences.
Bon, si tu as a traiter un nombre d'octets qui n'est pas multiple de 256, faudra tester de manière plus fine pour l'arrêt des boucles.
Ou alors, tu gardes Y à zero, et tu incrementes systématiquement ton pointeur, d'abord le poids faible puis le poids fort si il y a une retenue...
Attends, je crois que c'est ce que fait ta routine à la base.
Donc tu dois mettre : LDA (sourcelow),Y
Et Y doit être à zéro.
sourcelow est bien une adresse en page zero, qui contient l'adresse 16 bits avec laquelle tu travailles.
sourcelow poids faible, et sourcelow+1 poids fort.
Celui qui est utilisé quand tu fais LDA (sourcelow),Y
Si ton pointeur en page zero vaut $0200.
Tu fais les 256 premiers octets avec LDA (sourcelow),Y
Y arrive au bout, il revient à zéro, tu passes le pointeur à $0300 et tu recommences.
Bon, si tu as a traiter un nombre d'octets qui n'est pas multiple de 256, faudra tester de manière plus fine pour l'arrêt des boucles.
Ou alors, tu gardes Y à zero, et tu incrementes systématiquement ton pointeur, d'abord le poids faible puis le poids fort si il y a une retenue...
Attends, je crois que c'est ce que fait ta routine à la base.
Donc tu dois mettre : LDA (sourcelow),Y
Et Y doit être à zéro.
sourcelow est bien une adresse en page zero, qui contient l'adresse 16 bits avec laquelle tu travailles.
sourcelow poids faible, et sourcelow+1 poids fort.
nemokantio- Patient contaminé
- Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013
Re: Mr ToutLeMonde et la programmation NES...
oui j'avais essayé, et effectivement on chargeait encore une valeur différente (si on compare aux adressages (sourceLow) ou sourceLow... Je pense aussi que c'est la solution (et je viens de voir que nemokantio propose la même chose dans le second paragraphe de son dernier post )mais vu que je n'obtenais pas le resultat escompté, je préfère reprendre tout le tuto depuis le début...touko a écrit:lda [tabLow], Y
avec Y toujours egal a 0, tu fais un ldy =0 en dessous du ldx et tu y touches plus.
En page zero, j'ai :
sourceLow .rs 1
sourceHigh .rs 1
Vu les modifs apporté par touko, je ne pense pas que le fait que sourceLow soit sur 8 bits soit un problème, je me trompe ?
Merci à vous faut vraiment que je décortique mieux le tuto je pense, j'ai voulu aller vite en besogne :p
- Pour les curieux, le code du tuto:
.inesprg 1 ; 1x 16KB PRG code
.ineschr 1 ; 1x 8KB CHR data
.inesmap 0 ; mapper 0 = NROM, no bank swapping
.inesmir 1 ; VERT mirroring for HORIZ scrolling
;;;;;;;;;;;;;;;
;; DECLARE SOME VARIABLES HERE
.rsset $0000 ;;start variables at ram location 0
scroll .rs 1 ; horizontal scroll count
nametable .rs 1 ; which nametable to use, 0 or 1
columnLow .rs 1 ; low byte of new column address
columnHigh .rs 1 ; high byte of new column address
sourceLow .rs 1 ; source for column data
sourceHigh .rs 1
columnNumber .rs 1 ; which column of level data to draw
;;;;;;;;;;;;
.bank 0
.org $C000
RESET:
SEI ; disable IRQs
CLD ; disable decimal mode
LDX #$40
STX $4017 ; disable APU frame IRQ
LDX #$FF
TXS ; Set up stack
INX ; now X = 0
STX $2000 ; disable NMI
STX $2001 ; disable rendering
STX $4010 ; disable DMC IRQs
vblankwait1: ; First wait for vblank to make sure PPU is ready
BIT $2002
BPL vblankwait1
clrmem:
LDA #$00
STA $0000, x
STA $0100, x
STA $0300, x
STA $0400, x
STA $0500, x
STA $0600, x
STA $0700, x
LDA #$FE
STA $0200, x
INX
BNE clrmem
vblankwait2: ; Second wait for vblank, PPU is ready after this
BIT $2002
BPL vblankwait2
LoadPalettes:
LDA $2002 ; read PPU status to reset the high/low latch
LDA #$3F
STA $2006 ; write the high byte of $3F00 address
LDA #$00
STA $2006 ; write the low byte of $3F00 address
LDX #$00 ; start out at 0
LoadPalettesLoop:
LDA palette, x ; load data from address (palette + the value in x)
STA $2007 ; write to PPU
INX ; X = X + 1
CPX #$20 ; Compare X to hex $10, decimal 16 - copying 16 bytes = 4 sprites
BNE LoadPalettesLoop ; Branch to LoadPalettesLoop if compare was Not Equal to zero
; if compare was equal to 32, keep going down
LoadSprites:
LDX #$00 ; start at 0
LoadSpritesLoop:
LDA sprites, x ; load data from address (sprites + x)
STA $0200, x ; store into RAM address ($0200 + x)
INX ; X = X + 1
CPX #$10 ; Compare X to hex $20, decimal 16
BNE LoadSpritesLoop ; Branch to LoadSpritesLoop if compare was Not Equal to zero
; if compare was equal to 16, keep going down
InitializeNametables:
LDA #$01
STA nametable
LDA #$00
STA scroll
STA columnNumber
InitializeNametablesLoop:
JSR DrawNewColumn ; draw bg column
LDA scroll ; go to next column
CLC
ADC #$08
STA scroll
INC columnNumber
LDA columnNumber ; repeat for first nametable
CMP #$20
BNE InitializeNametablesLoop
LDA #$00
STA nametable
LDA #$00
STA scroll
JSR DrawNewColumn ; draw first column of second nametable
INC columnNumber
LDA #$00 ; set back to increment +1 mode
STA $2000
InitializeNametablesDone:
FillAttrib0:
LDA $2002 ; read PPU status to reset the high/low latch
LDA #$23
STA $2006 ; write the high byte of $23C0 address (nametable 0 attributes)
LDA #$C0
STA $2006 ; write the low byte of $23C0 address
LDX #$40 ; fill 64 bytes
LDA #$00
FillAttrib0Loop:
STA $2007
DEX
BNE FillAttrib0Loop
FillAttrib1:
LDA $2002 ; read PPU status to reset the high/low latch
LDA #$27
STA $2006 ; write the high byte of $27C0 address (nametable 1 attributes)
LDA #$C0
STA $2006 ; write the low byte of $27C0 address
LDX #$40 ; fill 64 bytes
LDA #$FF
FillAttrib1Loop:
STA $2007
DEX
BNE FillAttrib1Loop
LDA #%10010000 ; enable NMI, sprites from Pattern Table 0, background from Pattern Table 1
STA $2000
LDA #%00011110 ; enable sprites, enable background, no clipping on left side
STA $2001
Forever:
JMP Forever ;jump back to Forever, infinite loop
NMI:
INC scroll ; add one to our scroll variable each frame
NTSwapCheck:
LDA scroll ; check if the scroll just wrapped from 255 to 0
BNE NTSwapCheckDone
NTSwap:
LDA nametable ; load current nametable number (0 or 1)
EOR #$01 ; exclusive OR of bit 0 will flip that bit
STA nametable ; so if nametable was 0, now 1
; if nametable was 1, now 0
NTSwapCheckDone:
NewColumnCheck:
LDA scroll
AND #%00000111 ; throw away higher bits
BNE NewColumnCheckDone ; done if lower bits != 0
JSR DrawNewColumn ; if lower bits = 0, time for new column
lda columnNumber
clc
adc #$01 ; go to next column
and #%01111111 ; only 128 columns of data, throw away top bit to wrap
sta columnNumber
NewColumnCheckDone:
LDA #$00
STA $2003
LDA #$02
STA $4014 ; sprite DMA from $0200
; run other game graphics updating code here
LDA #$00
STA $2006 ; clean up PPU address registers
STA $2006
LDA scroll
STA $2005 ; write the horizontal scroll count register
LDA #$00 ; no vertical scrolling
STA $2005
;;This is the PPU clean up section, so rendering the next frame starts properly.
LDA #%10010000 ; enable NMI, sprites from Pattern Table 0, background from Pattern Table 1
ORA nametable ; select correct nametable for bit 0
STA $2000
LDA #%00011110 ; enable sprites, enable background, no clipping on left side
STA $2001
; run normal game engine code here
; reading from controllers, etc
RTI ; return from interrupt
DrawNewColumn:
LDA scroll ; calculate new column address using scroll register
LSR A
LSR A
LSR A ; shift right 3 times = divide by 8
STA columnLow ; $00 to $1F, screen is 32 tiles wide
LDA nametable ; calculate new column address using current nametable
EOR #$01 ; invert low bit, A = $00 or $01
ASL A ; shift up, A = $00 or $02
ASL A ; $00 or $04
CLC
ADC #$20 ; add high byte of nametable base address ($2000)
STA columnHigh ; now address = $20 or $24 for nametable 0 or 1
LDA columnNumber ; column number * 32 = column data offset
ASL A
ASL A
ASL A
ASL A
ASL A
STA sourceLow
LDA columnNumber
AND #%11111000
LSR A
LSR A
LSR A
STA sourceHigh
LDA sourceLow ; column data start + offset = address to load column data from
CLC
ADC #LOW(columnData)
STA sourceLow
LDA sourceHigh
ADC #HIGH(columnData)
STA sourceHigh
DrawColumn:
LDA #%00000100 ; set to increment +32 mode
STA $2000
LDA $2002 ; read PPU status to reset the high/low latch
LDA columnHigh
STA $2006 ; write the high byte of column address
LDA columnLow
STA $2006 ; write the low byte of column address
LDX #$1E ; copy 30 bytes
LDY #$00
DrawColumnLoop:
LDA [sourceLow], y
STA $2007
INY
DEX
BNE DrawColumnLoop
RTS
;;;;;;;;;;;;;;
.bank 1
.org $E000
palette:
.db $22,$29,$1A,$0F, $22,$36,$17,$0F, $22,$30,$21,$0F, $22,$27,$17,$0F ;;background palette
.db $22,$1C,$15,$14, $22,$02,$38,$3C, $22,$1C,$15,$14, $22,$02,$38,$3C ;;sprite palette
sprites:
;vert tile attr horiz
.db $80, $32, $00, $80 ;sprite 0
.db $80, $33, $00, $88 ;sprite 1
.db $88, $34, $00, $80 ;sprite 2
.db $88, $35, $00, $88 ;sprite 3
columnData:
.incbin "SMBlevel.bin"
.org $FFFA ;first of the three vectors starts here
.dw NMI ;when an NMI happens (once per frame if enabled) the
;processor will jump to the label NMI:
.dw RESET ;when the processor first turns on or is reset, it will jump
;to the label RESET:
.dw 0 ;external interrupt IRQ is not used in this tutorial
;;;;;;;;;;;;;;
.bank 2
.org $0000
.incbin "mario.chr" ;includes 8KB graphics file from SMB1
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
C'est normal, tu prévois de stocker une adresse 16 bits en page zero, en deux parties poids faible et poids fort : sourcelow et sourcehigh (donc réservation de deux octets).vincent2105 a écrit:oui j'avais essayé, et effectivement on chargeait encore une valeur différente (si on compare aux adressages (sourceLow) ou sourceLow... Je pense aussi que c'est la solution (et je viens de voir que nemokantio propose la même chose dans le second paragraphe de son dernier post )mais vu que je n'obtenais pas le resultat escompté, je préfère reprendre tout le tuto depuis le début...touko a écrit:lda [tabLow], Y
avec Y toujours egal a 0, tu fais un ldy =0 en dessous du ldx et tu y touches plus.
En page zero, j'ai :
sourceLow .rs 1
sourceHigh .rs 1
Vu les modifs apporté par touko, je ne pense pas que le fait que sourceLow soit sur 8 bits soit un problème, je me trompe ?
C'est pour pouvoir se servir de l'adressage (sourcelow),Y
(indexé indirect ou indirect indexé sais plus)
nemokantio- Patient contaminé
- Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013
Re: Mr ToutLeMonde et la programmation NES...
Oui donc on est d'accord, y'a pas de boulette de ce coté la ! Me connaissant ça aurait pu
Je demandais juste confirmation vu que le plus souvent je déclare mes pointeurs directement sur 2 octets comme ça :
zp_pointeur .rs 2
Donc je récapitule...
en déclarant dans cet ordre :
sourceLow .rs 1
sourceHigh .rs 1
le fait de faire :
STA sourceLow+1
revient bien à :
STA sourceHigh
C'est capital que je comprenne bien puisque sourceLow et sourceHigh sont appelés a divers endroits du programme
Je demandais juste confirmation vu que le plus souvent je déclare mes pointeurs directement sur 2 octets comme ça :
zp_pointeur .rs 2
Donc je récapitule...
en déclarant dans cet ordre :
sourceLow .rs 1
sourceHigh .rs 1
le fait de faire :
STA sourceLow+1
revient bien à :
STA sourceHigh
C'est capital que je comprenne bien puisque sourceLow et sourceHigh sont appelés a divers endroits du programme
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
C'est tout aussi valable de les déclarer directement sur deux octets.
Oui sourcelow+1 et sourcehigh, c'est la même chose.
Et sourcehigh-1 c'est sourcelow !
C'est une question de lisibilité après.
Par contre, faut bien penser au fait que d'abord c'est le poids faible, et ensuite le poids fort.
En Z80, moi même je me prends souvent les pieds dans le tapis la dessus !
Mais dans ton cas, c'est selon moi l'adressage indexé indirect/indirect indexé qui est le plus délicat, avec les adresses à stocker en page zéro.
Oui sourcelow+1 et sourcehigh, c'est la même chose.
Et sourcehigh-1 c'est sourcelow !
C'est une question de lisibilité après.
Par contre, faut bien penser au fait que d'abord c'est le poids faible, et ensuite le poids fort.
En Z80, moi même je me prends souvent les pieds dans le tapis la dessus !
Mais dans ton cas, c'est selon moi l'adressage indexé indirect/indirect indexé qui est le plus délicat, avec les adresses à stocker en page zéro.
nemokantio- Patient contaminé
- Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013
Re: Mr ToutLeMonde et la programmation NES...
Eh oui, c'est du little endiannemokantio a écrit:Par contre, faut bien penser au fait que d'abord c'est le poids faible, et ensuite le poids fort.
En Z80, moi même je me prends souvent les pieds dans le tapis la dessus !.
vingazole- Infirmier
- Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012
Re: Mr ToutLeMonde et la programmation NES...
Je préfère joe l'endian !
nemokantio- Patient contaminé
- Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013
Re: Mr ToutLeMonde et la programmation NES...
Pour ceux qui chercheraient, je viens de m'apercevoir que l'algorithme est incomplet, c'est certain.
Quand la boucle est terminée pour la copie des 30 tiles formant une colonne verticale, et donc pour copier la colonne suivante, il faut incrémenter Y puis récuperer la valeur initiale sourceLow pour ensuite pouvoir reprendre la boucle avec [sourceLow], y.
Edit : en fait c'est encore plus compliqué que ca
Quand la boucle est terminée pour la copie des 30 tiles formant une colonne verticale, et donc pour copier la colonne suivante, il faut incrémenter Y puis récuperer la valeur initiale sourceLow pour ensuite pouvoir reprendre la boucle avec [sourceLow], y.
Edit : en fait c'est encore plus compliqué que ca
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
Si j'ai bien compris, tu veux scroller horizontalement en allant vers la droite (scrolling part à gauche), et alimenter ton scroll, injecter la colonne de tuiles sur la droite, en puisant dans un fichier/tableau qui représente un écran de 32x30 tiles.
Après avoir scrollé de 32 tuiles, ton nouvel écran devrait correspondre à ton fichier.
C'est bien ça ?
Le tableau est stocké en lignes.
La première colonne affichée à droite en scrollant de 8 pixels va être la première à gauche de ton tableau.
C'est à quoi sont initialisés sourcelow et sourcehigh.
Donc pour aller chercher la tuile en dessous, tu fais +32 dans une boucle de 30, jusque là ça va.
Une fois que tu a affiché une colonne, tu t'es bien décalé de 1.
La deuxième colonne à afficher à droite après avoir scrollé de 16 pixels va être la deuxième du tableau.
Donc à sourcelow+1 selon moi.
Effectivement, tu peux te servir du registre y et l'incrémenter pour aller chercher les autres colonnes.
Tu continues la même boucle de 30 (avec le +32).
Ca devrait fonctionner mais tu ne peux scroller que sur deux écrans comme ça.
EDIT : si sourcelow/sourcehigh ne sont pas alignés sur 256, il faut faire autrement pour aller pointer sur les autres colonnes du tableau de tiles.
Il faut oublier le registre Y (le laisser à zero), et incrémenter de 1 sourcelow, en veillant à transférer une éventuelle retenue sur sourcehigh.
Après avoir scrollé de 32 tuiles, ton nouvel écran devrait correspondre à ton fichier.
C'est bien ça ?
Le tableau est stocké en lignes.
La première colonne affichée à droite en scrollant de 8 pixels va être la première à gauche de ton tableau.
C'est à quoi sont initialisés sourcelow et sourcehigh.
Donc pour aller chercher la tuile en dessous, tu fais +32 dans une boucle de 30, jusque là ça va.
Une fois que tu a affiché une colonne, tu t'es bien décalé de 1.
La deuxième colonne à afficher à droite après avoir scrollé de 16 pixels va être la deuxième du tableau.
Donc à sourcelow+1 selon moi.
Effectivement, tu peux te servir du registre y et l'incrémenter pour aller chercher les autres colonnes.
Tu continues la même boucle de 30 (avec le +32).
Ca devrait fonctionner mais tu ne peux scroller que sur deux écrans comme ça.
EDIT : si sourcelow/sourcehigh ne sont pas alignés sur 256, il faut faire autrement pour aller pointer sur les autres colonnes du tableau de tiles.
Il faut oublier le registre Y (le laisser à zero), et incrémenter de 1 sourcelow, en veillant à transférer une éventuelle retenue sur sourcehigh.
nemokantio- Patient contaminé
- Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013
Re: Mr ToutLeMonde et la programmation NES...
nemokantio a écrit:Si j'ai bien compris, tu veux scroller horizontalement en allant vers la droite (scrolling part à gauche), et alimenter ton scroll, injecter la colonne de tuiles sur la droite, en puisant dans un fichier/tableau qui représente un écran de 32x30 tiles.
Après avoir scrollé de 32 tuiles, ton nouvel écran devrait correspondre à ton fichier.
C'est bien ça ?
Le tableau est stocké en lignes.
La première colonne affichée à droite en scrollant de 8 pixels va être la première à gauche de ton tableau.
C'est à quoi sont initialisés sourcelow et sourcehigh.
Donc pour aller chercher la tuile en dessous, tu fais +32 dans une boucle de 30, jusque là ça va.
C'est tout à fait ça :)
Là par contre il me semble bien que sourceHigh a été incrémenté 3 fois après les 30 répétitions. Je pense donc qu'il faut que sourceHigh retrouve la valeur qu'il avait au départ, sinon au lancement de la boucle pour la seconde colonne, on ne récupèrerait pas la seconde valeur du tableau. Je me trompe ?nemokantio a écrit:Une fois que tu a affiché une colonne, tu t'es bien décalé de 1.
La deuxième colonne à afficher à droite après avoir scrollé de 16 pixels va être la deuxième du tableau.
Donc à sourcelow+1 selon moi.
Je pense qu'avec sourceHigh, je peux aller bien plus loin non ? Mes nametables sont les unes à la suite des autres en mémoire.Nemokantio a écrit:Effectivement, tu peux te servir du registre y et l'incrémenter pour aller chercher les autres colonnes.
Tu continues la même boucle de 30 (avec le +32).
Ca devrait fonctionner mais tu ne peux scroller que sur deux écrans comme ça.
tab_0: (960 octets) $0000
tab_1: (960 octets) $03c0
tab_2: (960 octets) $0780
tab_3: (960 octets) $0b40
tab_4: (960 octets) $0f00
tab_5: (960 octets) $12c0
tab_6: (960 octets) $1680
etc
Après je dis p'tet des aneries
nemokantio a écrit:EDIT : si sourcelow/sourcehigh ne sont pas alignés sur 256, il faut faire autrement pour aller pointer sur les autres colonnes du tableau de tiles.
Il faut oublier le registre Y (le laisser à zero), et incrémenter de 1 sourcelow, en veillant à transférer une éventuelle retenue sur sourcehigh.
qu'entends tu par "si sourcelow/sourcehigh ne sont pas alignés sur 256"
Merci encore pour ton aide, ca fait plaisir de discuter
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
A la fin d'une boucle d'affichage de colonne, tu devrais soustraire 960 (car tu as du ajouter 32 30 fois) à ton pointeur source.
(sur 6502 cela signifie une soustraction 16 bit décomposée en poids faible/poids fort)
sec
lda sourcelow
sbc 192 ; poids faible 960
sta sourcelow
lda sourcehigh
sbc 3 ; poids fort 960
sta sourcehigh
J'ai piquée la soustraction sur internet, suis pas habitué au 6502.
Ou alors tu restitues le pointeur à partir d'une copie.
lda sauvesourcelow
sta sourcelow
lda sauvesourcehigh
sta sourcehigh
Comme ça tu peux passer à l'incrémentation pour la prochaine colonne.
Aligné à 256, cela signifierait que sourcelow est à zero.
Mais il vaut mieux je pense que tu incrémentes de façon classique:
clc
lda sourcelow
adc #1
sta sourcelow
lda sourcehigh
adc #0
sta sourcehigh
Cette addition j'y suis plus habitué même sur z80
Donc là tu passes bien à la prochaine colonne.
Pour les autres écrans, ta méthode t'oblige à tester quand tu as scrollé d'un écran, pour modifier sourcelow et sourcehigh en ajoutant 960...
(cette décomposition systématique en deux octets me déstabilise un peu alors je suis pas très clair)
(sur 6502 cela signifie une soustraction 16 bit décomposée en poids faible/poids fort)
sec
lda sourcelow
sbc 192 ; poids faible 960
sta sourcelow
lda sourcehigh
sbc 3 ; poids fort 960
sta sourcehigh
J'ai piquée la soustraction sur internet, suis pas habitué au 6502.
Ou alors tu restitues le pointeur à partir d'une copie.
lda sauvesourcelow
sta sourcelow
lda sauvesourcehigh
sta sourcehigh
Comme ça tu peux passer à l'incrémentation pour la prochaine colonne.
Aligné à 256, cela signifierait que sourcelow est à zero.
Mais il vaut mieux je pense que tu incrémentes de façon classique:
clc
lda sourcelow
adc #1
sta sourcelow
lda sourcehigh
adc #0
sta sourcehigh
Cette addition j'y suis plus habitué même sur z80
Donc là tu passes bien à la prochaine colonne.
Pour les autres écrans, ta méthode t'oblige à tester quand tu as scrollé d'un écran, pour modifier sourcelow et sourcehigh en ajoutant 960...
(cette décomposition systématique en deux octets me déstabilise un peu alors je suis pas très clair)
Dernière édition par nemokantio le Lun 11 Avr 2016 - 19:08, édité 1 fois
nemokantio- Patient contaminé
- Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013
Re: Mr ToutLeMonde et la programmation NES...
"Restituer le pointeur à partir d'une copie", j'en étais aussi arrivé à cette solution sur le papier...
La aussi tu confirmes ce que j'avais dans l'idée, je mettrai tout ca en place dès que j'aurais un peu de temps, merci pour ton aide nemokantio
nemokantio a écrit:Pour les autres écrans, ta méthode t'oblige à tester quand tu as scrollé d'un écran, pour modifier sourcelow et sourcehigh en ajoutant 960...
(cette décomposition systématique en deux octets me déstabilise un peu alors je suis pas très clair)
La aussi tu confirmes ce que j'avais dans l'idée, je mettrai tout ca en place dès que j'aurais un peu de temps, merci pour ton aide nemokantio
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
Bonjour à tous,
Petite question : je souhaiterais lire le fichier .nam généré par l'utilitaire Nes Screen Tools (qui me permet de créér des backgrounds).
Sous notepad++ par défaut si j'ouvre un fichier .nam, j'obtiens ça :
Quelqu'un pourrait il me conseiller ? Merci
Petite question : je souhaiterais lire le fichier .nam généré par l'utilitaire Nes Screen Tools (qui me permet de créér des backgrounds).
Sous notepad++ par défaut si j'ouvre un fichier .nam, j'obtiens ça :
- Spoiler:
- Code:
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' '''''''''''''''''''''AAAA''''''''''''''''''''''''''''@@@@''''''''''''''''''''''''''''@@@@''''''''''''''''''''''''''''BBBB''''''''''''''''''''''''''''$$$$'''''''''''''''''''''AA'''''$$$$'''''''''''''''''''''BB'''''$$$$''''''''AAAAAAAAAAAAA$HA''''$$df''''''''@@@@@@@@@@@@@$H@''''$rst''''''''@@@@@@@@@@@@@@@@''''$`''''''''''@@@@@@@@@@@@@@@@''''$`''''''''''BBBBBBBBBBBBBBBB''''$“““''''AAAA$€$€$€$€$€$€$€$€''''$$$$''''@@@@$$$$$$$$$$$$$$$$AAAA$$$$''''@@@@$$$$$$$$$$$$$$$$@@@@WWWW''''BBBB$$def$$$$df$$df$@@@@$$$$''''$$$$$bcRhg$$rstgrstgBBBB$$$$''''df$$$aQPPq$$`''p`''p$$$$$$$$''''stg$$`PPPp$$`''p`''p$$$d$$df''''''p$$`PPPp$$““““““““$$bc$rst''''''p$$`PPPp$$$$$$$$$$$$`P$`''''''“““$$`PPPp$$$$$$$$$$$$`P$`''''''$$$$$`PPPp$$$$$$$$$$$$`P$“““''''$$$$‘‘‘‘‘&$$$$$$$$$$$`P$$$$'''' $$$$$$$&$$$$$$$$ $$$$'''' $$$$$$$$&$$$$$$$ $$$$''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''@PPPPPPDUUUUUDUUUUU DE 3 D 3 @ @
- Spoiler:
- Code:
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06 ,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
.db $00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f,$00, $01, $02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$0c,$0d,$0e,$0f
Quelqu'un pourrait il me conseiller ? Merci
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
Non a mon avis c'est un fichier binaire tout simplement
A mon avis tu dois faire un .incbin pour l'inclure.
Editeur hexadécimale et normalement ton meilleur partenaire , surtout si tu prog en asm
A mon avis tu dois faire un .incbin pour l'inclure.
Editeur hexadécimale et normalement ton meilleur partenaire , surtout si tu prog en asm
Invité- Invité
Re: Mr ToutLeMonde et la programmation NES...
C'est exact, je fais un .incbin pour l'inclure
C'est bon, mon émulateur intègre un éditeur hexadecimal, j'ai retrouvé la nametable en question... j'ai plus qu'à me mettre au C pour réorganiser selon mes besoins !
Merci Kannagi (et félicitations au passage pour ton utilisation du mode 7 )
C'est bon, mon émulateur intègre un éditeur hexadecimal, j'ai retrouvé la nametable en question... j'ai plus qu'à me mettre au C pour réorganiser selon mes besoins !
Merci Kannagi (et félicitations au passage pour ton utilisation du mode 7 )
vincent2105- Patient incurable
- Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013
Re: Mr ToutLeMonde et la programmation NES...
C'est cool que cela marche ^^
Surtout que incbin j'étais pas trop sur , cela ne marche pas avec tout les assembleurs , tu utilise quel assembleur d'ailleurs j'imagine CA65 ?
Le C ou un autre langage , j'ai l'impression que pas mal de monde font leur tools en python.
Merci pour le mode 7
Surtout que incbin j'étais pas trop sur , cela ne marche pas avec tout les assembleurs , tu utilise quel assembleur d'ailleurs j'imagine CA65 ?
Le C ou un autre langage , j'ai l'impression que pas mal de monde font leur tools en python.
Merci pour le mode 7
Invité- Invité
Page 9 sur 34 • 1 ... 6 ... 8, 9, 10 ... 21 ... 34
Sujets similaires
» Programmation CPS-1
» La programmation Megadrive
» Mr ToutLeMonde et la programmation NES...
» Programmation Nintendo SWITCH ?
» Mr ToutLeMonde et la programmation GameBoy...
» La programmation Megadrive
» Mr ToutLeMonde et la programmation NES...
» Programmation Nintendo SWITCH ?
» Mr ToutLeMonde et la programmation GameBoy...
Page 9 sur 34
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum