IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Projets Discussion :

SNES Tech démo


Sujet :

Projets

  1. #61
    Membre à l'essai Avatar de 65c816
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2016
    Messages : 5
    Points : 11
    Points
    11
    Par défaut
    Very Nice, good work :-)

  2. #62
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    Le mode 7 est toujours aussi sympa. On peut zoomer (se rapprocher de la carte) en mode 7 ?
    L'effet de l'éclair est un peu aléatoire ? Sinon, il claque bien
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #63
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Je trouve ça toujours aussi sympa aussi d'un coté ça simule assez bien une texture 3D.
    Pour le Mode 7 oui on peut mais la c'est un peu l'exploit technique pour moi , en faite le processeur de la SNES est un peu long (et pas fait pour faire des calculs mathématiques) du coup pour le moment je precalcul les valeurs en C.
    Mais si j'arrive a le faire sur la SNES je pourrais zoomer et changer l'angle de la caméra et donc on aura encore une plus impression de 3D
    Pour cela que le jeu Super Mario Kart posséder une puce , un DSP qui était fait pour les nombre a virgule et le calcul trigonométrique bref ce que j'ai besoin moi pour faciliter le calcul xD
    Je pense faire une virgule fixe mais sur 4 octets (2 octet pour les entiers , 2 pour les virgules) mais je suis sur un processeurs 16 bits , donc t'imagine la galère ^^
    Il y a un registre hard pour les multiplications mais il est pas gratuit en terme de cycle (mais toujours plus rapide que si je faisais la multiplication moi même).
    Et ces calculs que je devrait faire , je devrais le faire pour le moment 128 fois (et oui j'ai 128 ligne) :/

    Pour le moment le seul calcul que je fais c'est celui de la rotation (qui manipule la matrice 2D de la SNES).
    Et ça me bouffe tout les calcul du VBlank , Pourquoi pendant le VBlank ? ben la matrice 2D du Mode 7 ne se manipule que pendant cette partie , quel idée chez nintendo de faire cela x)
    Bien sur j'utilise quasiment la totalité du VBlank , je dis cela parce que les 128 lignes je ne les mets pas a jours a chaque frame , comme je l'ai dit je peux le faire que sur le VBlank donc en faite j'arrive a modifier la matrice que sur 64 lignes a la fois , donc sur 2 frames je modifies toutes les lignes.
    A voir si sur +128 lignes donc sur 3-4 frames cela ne se verra pas...

    Bref donc tu vois j'espere que u vois mieux toute la galère du mode 7 et de sa perspective
    Pour mario kart j'ose espérer que cette puce et surtout faire pour gérer les calcul sur plusieurs écran (deja que un c'est chaud de night xD).

    D'ailleurs pour le ciel j'avais aucune idée de comment faire , le Mode7 ne prend que un BG.
    Enfaîte l'astuce c'est de faire le Mode 1 au début et ensuite a la ligne (chez moi 96) , je commence le mode 7 x)


    L’éclair je croyais moi aussi que c’était du aléatoire mais enfaîte pas du tout c'est juste son mouvement qui n'est pas linéaire qui donne cet impression.

  4. #64
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    Sinon, on peut stocker plus de table de valeurs pré-calculées, pour avoir plusieurs niveaux, puis interpoler en entier pour avoir les valeurs manquantes (pour les transitions). Mais la mémoire est peut être très courte du coup.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #65
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    C'est sûrement ce que font beaucoup de jeu , vu que leur zoom étant je trouve assez limité , donc oui si je peux faire cela avec juste quelque table precalculé.
    Mais franchement ça serait beau a voir si on peut le calculer en temps réel ^^

  6. #66
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Probablement le Projet le plus long que j'ai mené (et le plus complexe u_u ).

    Enfaîte je commence a avoir un vrai Moteur/lib pour la Super Nintendo , donc tout mes prochains jeu dessus sera beaucoup plus facile a faire du coup

    J'ai commencé la programmation du Driver Sonore le fameux SPC700 ^^ (je dirais a 35% de fait).

    Niveau jeu , y'a pas de grosse nouveauté niveau visuelle (et risque pas trop d'en avoir du coup) , vu que le principal a était fait.
    En vrac , j'ai recodé l'affichage de la Fenetre/Text (pour l'optimiser).
    J'ai coder plusieurs fonction permettant d'utiliser les transfert DMA de manière plus ou moins générique
    Je gère des grande map (actuelle le max étant de 2048x2048 pixel) , théoriquement je peux faire du 16384x256 pixel a tester (vous imaginez un peu la taille du machin sur SNES ).
    J'ai recodé une partie du menu (pour le rendre moins bordélique et plus facile pour moi a utiliser , faudra néanmoins faire un tri sur les item).
    On peut avoir jusqu’à 64 ennemi dans la map par info c'est pas aussi simple que ça d rajouter des ennemis , en langage plus évolué on ferai un truc dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(int i = 0; i < 64;i++)
        {
        	ennemi[i].draw();
        }
    Que Nenni , si je faisais ça , je mettrais le pauvre 65816 a genou ^^
    Non non il faut faire plus complexe genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
     
    .MACRO Ennemi_Test_SC_P1
    	ldx #$40*\1
    	stx MEM_TEMPFUNC
    	cpx s_ennemi+_enP1
    	beq +
    	cpx s_ennemi+_enP2
    	beq +
    	cpx s_ennemi+_enP3
    	beq +
    	lda s_perso + _x,x
    	cmp #0
    	bne ++
    		lda s_perso + _y,x
    		cmp #0
    		beq +
    	++:
     
     
     
    	jsl Ennemi_Test_SC
     
    	lda MEM_TEMPFUNC+4
    	cmp #0
    	beq +
    		ldx #$40*\1
    		stx s_ennemi+_enP1
    		jsl Ennemi_Test_SCE_P1
    		rtl
    	+:
     
    .ENDM
     
    .MACRO Ennemi_Test_SC_P2
    	ldx #$40*\1
    	stx MEM_TEMPFUNC
    	cpx s_ennemi+_enP1
    	beq +
    	cpx s_ennemi+_enP2
    	beq +
    	cpx s_ennemi+_enP3
    	beq +
    	lda s_perso + _x,x
    	cmp #0
    	bne ++
    		lda s_perso + _y,x
    		cmp #0
    		beq +
    	++:
     
     
     
    	jsl Ennemi_Test_SC
     
    	lda MEM_TEMPFUNC+4
    	cmp #0
    	beq +
    		ldx #$40*\1
    		stx s_ennemi+_enP2
    		jsl Ennemi_Test_SCE_P2
    		rtl
    	+:
     
    .ENDM
     
    .MACRO Ennemi_Test_SC_P3
    	ldx #$40*\1
    	stx MEM_TEMPFUNC
    	cpx s_ennemi+_enP1
    	beq +
    	cpx s_ennemi+_enP2
    	beq +
    	cpx s_ennemi+_enP3
    	beq +
    	lda s_perso + _x,x
    	cmp #0
    	bne ++
    		lda s_perso + _y,x
    		cmp #0
    		beq +
    	++:
     
     
     
    	jsl Ennemi_Test_SC
     
    	lda MEM_TEMPFUNC+4
    	cmp #0
    	beq +
    		ldx #$40*\1
    		stx s_ennemi+_enP3
    		jsl Ennemi_Test_SCE_P3
    		rtl
    	+:
     
    .ENDM
     
    Ennemi_Tri:
     
    	lda MEM_OAM+_nperso2
    	cmp #3
    	bne +
    		rtl
    	+:
     
    	jsl Ennemi_TriP1
    	jsl Ennemi_TriP2
    	jsl Ennemi_TriP3
     
    	inc s_ennemi+_enFrame
    	lda s_ennemi+_enFrame
    	cmp #7
    	bne +
    		stz s_ennemi+_enFrame
    	+:
     
     
    	rtl
     
    ;------------------------------------------
     
     
    Ennemi_TriP1:
     
    	ldx s_ennemi+_enP1
     
    	rep #$20
     
    	lda s_perso+_oam,x
    	cmp #$1E0
    	bne +
    		bra ++
    	+:
     
     
    	sep #$20
    	rtl
    	++:
     
    	sep #$20
     
    	jsl Ennemi_TriP1_F
     
    	rtl
     
    Ennemi_TriP2:
     
    	ldx s_ennemi+_enP2
     
    	rep #$20
     
    	lda s_perso+_oam,x
    	cmp #$1E0
    	bne +
    		bra ++
    	+:
     
     
    	sep #$20
    	rtl
    	++:
     
    	sep #$20
     
    	jsl Ennemi_TriP2_F
     
    	rtl	
     
    Ennemi_TriP3:
     
    	ldx s_ennemi+_enP3
     
    	rep #$20
     
    	lda s_perso+_oam,x
    	cmp #$1E0
    	bne +
    		bra ++
    	+:
     
     
    	sep #$20
    	rtl
    	++:
     
    	sep #$20
     
    	jsl Ennemi_TriP3_F
     
    	rtl
    ;------------------------------------------
     
     
    Ennemi_Test_SCE_P1:
     
     
     
    	lda s_perso + _tbankadd,x 
    	sta s_palette+$10+(3*11)+2
    	sta DMA_BANK
     
    	rep #$20
     
    	lda #$2660
    	sta s_perso + _tile,x
     
    	lda s_perso + _tadd,x
    	sta s_palette+$10+(3*11)
    	sta DMA_ADDL
    	sep #$20
     
    	SNES_WMADD LKS_BUF_PAL&$FFFF+$160,0
     
    	ldy #$20
    	sty DMA_SIZEL 
     
    	SNES_MDMAEN $01
     
    	lda #2
    	sta s_palette+_pltype
     
    	rtl
     
    Ennemi_Test_SCE_P2:
     
     
     
    	lda s_perso + _tbankadd,x 
    	sta s_palette+$10+(3*12)+2
    	sta DMA_BANK
     
    	rep #$20
     
    	lda #$2888
    	sta s_perso + _tile,x
     
    	lda s_perso + _tadd,x
    	sta s_palette+$10+(3*12)
    	sta DMA_ADDL
    	sep #$20
     
    	SNES_WMADD LKS_BUF_PAL&$FFFF+$180,0
     
    	ldy #$20
    	sty DMA_SIZEL 
     
    	SNES_MDMAEN $01
     
    	lda #2
    	sta s_palette+_pltype
     
    	rtl
     
    Ennemi_Test_SCE_P3:
     
     
     
    	lda s_perso + _tbankadd,x 
    	sta s_palette+$10+(3*13)+2
    	sta DMA_BANK
     
    	rep #$20
     
    	lda #$2AC0
    	sta s_perso + _tile,x
     
    	lda s_perso + _tadd,x
    	sta s_palette+$10+(3*13)
    	sta DMA_ADDL
    	sep #$20
     
    	SNES_WMADD LKS_BUF_PAL&$FFFF+$1A0,0
     
    	ldy #$20
    	sty DMA_SIZEL 
     
    	SNES_MDMAEN $01
     
    	lda #2
    	sta s_palette+_pltype
     
    	rtl
    ;------------------------------------------
     
    Ennemi_Test_SC:
     
    	ldx MEM_TEMPFUNC
    	rep #$20
     
    	stz MEM_TEMPFUNC+4
     
    	lda s_perso+_x,x
    	sec
    	sbc LKS_BG+_bg1x
    	sta MEM_TEMPFUNC+$C
     
    	cmp #-56
    	bpl +
    		bra ++
    	+:
    	cmp #256+56
    	bmi +
    		bra ++
    	+:
     
    	lda s_perso+_y,x
    	sec
    	sbc LKS_BG+_bg1y
    	sta MEM_TEMPFUNC+$E
     
    	cmp #-56
    	bpl +
    		bra ++
    	+:
    	cmp #224+56
    	bmi +
    		bra ++
    	+:
     
    	sep #$20
     
    	jsl Personnage_limite_ecranSC
     
    	rtl
     
    	++:
    	sep #$20
    	rtl
     
     
    Personnage_limite_ecranSC:
     
     
    	stz MEM_TEMPFUNC+4
     
    	;Y
    	rep #$20
    	lda MEM_TEMPFUNC+$E
    	clc
    	adc #$10
     
    	sta MEM_TEMP
    	sep #$20
     
    	lda MEM_TEMP+1
    	cmp #$01
    	bmi +
    		bra +++
    	+:
     
     
    	rep #$20
    	lda MEM_TEMPFUNC+$E
    	sec
    	sbc #$10
    	sta MEM_TEMPFUNC+$E
    	sta MEM_OAM+_spry
    	clc
    	adc #$30
    	sta MEM_TEMP
    	sep #$20
     
    	lda MEM_TEMP+1
    	cmp #$00
    	bpl +
    		bra +++
    	+:
     
     
     
    	;X droite
    	lda MEM_TEMPFUNC+$C+1
    	cmp #$01
    	bmi +
    		bra +++
    	+:
     
    	;X gauche
    	rep #$20
    	lda MEM_TEMPFUNC+$C
    	clc
    	adc #$30
    	sta MEM_TEMP
    	sep #$20
     
    	lda MEM_TEMP+1
    	cmp #$0
    	bpl +
    		bra +++
    	+:
     
     
     
     
    	rtl
     
    	+++:
     
    	inc MEM_TEMPFUNC+4
     
    	rtl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
     
     
    Ennemi_TriP1_F:
    	lda s_ennemi+_enFrame
    	cmp #0
    	bne +
    		jsl Ennemi_TriP1_F1
    		rtl
    	+:
    	cmp #1
    	bne +
    		jsl Ennemi_TriP1_F2
    		rtl
    	+:
    	cmp #2
    	bne +
    		jsl Ennemi_TriP1_F3
    		rtl
    	+:
    	cmp #3
    	bne +
    		jsl Ennemi_TriP1_F4
    		rtl
    	+:
    	cmp #4
    	bne +
    		jsl Ennemi_TriP1_F5
    		rtl
    	+:
    	cmp #5
    	bne +
    		jsl Ennemi_TriP1_F6
    		rtl
    	+:
    	cmp #6
    	bne +
    		jsl Ennemi_TriP1_F7
    		rtl
    	+:
     
    	rtl
     
    Ennemi_TriP2_F:
    	lda s_ennemi+_enFrame
    	cmp #0
    	bne +
    		jsl Ennemi_TriP2_F1
    		rtl
    	+:
    	cmp #1
    	bne +
    		jsl Ennemi_TriP2_F2
    		rtl
    	+:
    	cmp #2
    	bne +
    		jsl Ennemi_TriP2_F3
    		rtl
    	+:
    	cmp #3
    	bne +
    		jsl Ennemi_TriP2_F4
    		rtl
    	+:
    	cmp #4
    	bne +
    		jsl Ennemi_TriP2_F5
    		rtl
    	+:
    	cmp #5
    	bne +
    		jsl Ennemi_TriP2_F6
    		rtl
    	+:
    	cmp #6
    	bne +
    		jsl Ennemi_TriP2_F7
    		rtl
    	+:
     
    	rtl
     
    Ennemi_TriP3_F:
    	lda s_ennemi+_enFrame
    	cmp #0
    	bne +
    		jsl Ennemi_TriP3_F1
    		rtl
    	+:
    	cmp #1
    	bne +
    		jsl Ennemi_TriP3_F2
    		rtl
    	+:
    	cmp #2
    	bne +
    		jsl Ennemi_TriP3_F3
    		rtl
    	+:
    	cmp #3
    	bne +
    		jsl Ennemi_TriP3_F4
    		rtl
    	+:
    	cmp #4
    	bne +
    		jsl Ennemi_TriP3_F5
    		rtl
    	+:
    	cmp #5
    	bne +
    		jsl Ennemi_TriP3_F6
    		rtl
    	+:
    	cmp #6
    	bne +
    		jsl Ennemi_TriP3_F7
    		rtl
    	+:
     
    	rtl
     
    ;------------------------------------------
    Ennemi_TriP1_F1:
    	Ennemi_Test_SC_P1 3
    	Ennemi_Test_SC_P1 4
    	Ennemi_Test_SC_P1 5
    	Ennemi_Test_SC_P1 6
     
    	Ennemi_Test_SC_P1 7
    	Ennemi_Test_SC_P1 8
    	Ennemi_Test_SC_P1 9
    	Ennemi_Test_SC_P1 10
    	rtl
     
    Ennemi_TriP1_F2:
    	Ennemi_Test_SC_P1 11
    	Ennemi_Test_SC_P1 12
    	Ennemi_Test_SC_P1 13
    	Ennemi_Test_SC_P1 14
     
    	Ennemi_Test_SC_P1 15
    	Ennemi_Test_SC_P1 16
    	Ennemi_Test_SC_P1 17
    	Ennemi_Test_SC_P1 18
    	Ennemi_Test_SC_P1 19
    	Ennemi_Test_SC_P1 20
    	rtl
     
    Ennemi_TriP1_F3:
    	Ennemi_Test_SC_P1 21
    	Ennemi_Test_SC_P1 22
    	Ennemi_Test_SC_P1 23
    	Ennemi_Test_SC_P1 24
     
    	Ennemi_Test_SC_P1 25
    	Ennemi_Test_SC_P1 26
    	Ennemi_Test_SC_P1 27
    	Ennemi_Test_SC_P1 28
    	Ennemi_Test_SC_P1 29
    	Ennemi_Test_SC_P1 30
    	rtl
     
    Ennemi_TriP1_F4:
    	Ennemi_Test_SC_P1 31
    	Ennemi_Test_SC_P1 32
    	Ennemi_Test_SC_P1 33
    	Ennemi_Test_SC_P1 34
     
    	Ennemi_Test_SC_P1 35
    	Ennemi_Test_SC_P1 36
    	Ennemi_Test_SC_P1 37
    	Ennemi_Test_SC_P1 38
    	Ennemi_Test_SC_P1 39
    	Ennemi_Test_SC_P1 40
    	rtl
     
    Ennemi_TriP1_F5:
    	Ennemi_Test_SC_P1 41
    	Ennemi_Test_SC_P1 42
    	Ennemi_Test_SC_P1 43
    	Ennemi_Test_SC_P1 44
     
    	Ennemi_Test_SC_P1 45
    	Ennemi_Test_SC_P1 46
    	Ennemi_Test_SC_P1 47
    	Ennemi_Test_SC_P1 48
    	Ennemi_Test_SC_P1 49
    	Ennemi_Test_SC_P1 50
     
    	rtl
     
    Ennemi_TriP1_F6:
    	Ennemi_Test_SC_P1 51
    	Ennemi_Test_SC_P1 52
    	Ennemi_Test_SC_P1 53
    	Ennemi_Test_SC_P1 54
     
    	Ennemi_Test_SC_P1 55
    	Ennemi_Test_SC_P1 56
    	Ennemi_Test_SC_P1 57
    	Ennemi_Test_SC_P1 58
    	Ennemi_Test_SC_P1 59
    	Ennemi_Test_SC_P1 60
     
    	rtl
     
    Ennemi_TriP1_F7:
    	Ennemi_Test_SC_P1 61
    	Ennemi_Test_SC_P1 62
    	Ennemi_Test_SC_P1 63
     
    	rtl
     
    ;------------------------------------------
    Ennemi_TriP2_F1:
    	Ennemi_Test_SC_P2 3
    	Ennemi_Test_SC_P2 4
    	Ennemi_Test_SC_P2 5
    	Ennemi_Test_SC_P2 6
     
    	Ennemi_Test_SC_P2 7
    	Ennemi_Test_SC_P2 8
    	Ennemi_Test_SC_P2 9
    	Ennemi_Test_SC_P2 10
    	rtl
     
    Ennemi_TriP2_F2:
    	Ennemi_Test_SC_P2 11
    	Ennemi_Test_SC_P2 12
    	Ennemi_Test_SC_P2 13
    	Ennemi_Test_SC_P2 14
     
    	Ennemi_Test_SC_P2 15
    	Ennemi_Test_SC_P2 16
    	Ennemi_Test_SC_P2 17
    	Ennemi_Test_SC_P2 18
    	Ennemi_Test_SC_P2 19
    	Ennemi_Test_SC_P2 20
    	rtl
     
    Ennemi_TriP2_F3:
    	Ennemi_Test_SC_P2 21
    	Ennemi_Test_SC_P2 22
    	Ennemi_Test_SC_P2 23
    	Ennemi_Test_SC_P2 24
     
    	Ennemi_Test_SC_P2 25
    	Ennemi_Test_SC_P2 26
    	Ennemi_Test_SC_P2 27
    	Ennemi_Test_SC_P2 28
    	Ennemi_Test_SC_P2 29
    	Ennemi_Test_SC_P2 30
    	rtl
     
    Ennemi_TriP2_F4:
    	Ennemi_Test_SC_P2 31
    	Ennemi_Test_SC_P2 32
    	Ennemi_Test_SC_P2 33
    	Ennemi_Test_SC_P2 34
     
    	Ennemi_Test_SC_P2 35
    	Ennemi_Test_SC_P2 36
    	Ennemi_Test_SC_P2 37
    	Ennemi_Test_SC_P2 38
    	Ennemi_Test_SC_P2 39
    	Ennemi_Test_SC_P2 40
    	rtl
     
    Ennemi_TriP2_F5:
    	Ennemi_Test_SC_P2 41
    	Ennemi_Test_SC_P2 42
    	Ennemi_Test_SC_P2 43
    	Ennemi_Test_SC_P2 44
     
    	Ennemi_Test_SC_P2 45
    	Ennemi_Test_SC_P2 46
    	Ennemi_Test_SC_P2 47
    	Ennemi_Test_SC_P2 48
    	Ennemi_Test_SC_P2 49
    	Ennemi_Test_SC_P2 50
     
    	rtl
     
    Ennemi_TriP2_F6:
    	Ennemi_Test_SC_P2 51
    	Ennemi_Test_SC_P2 52
    	Ennemi_Test_SC_P2 53
    	Ennemi_Test_SC_P2 54
     
    	Ennemi_Test_SC_P2 55
    	Ennemi_Test_SC_P2 56
    	Ennemi_Test_SC_P2 57
    	Ennemi_Test_SC_P2 58
    	Ennemi_Test_SC_P2 59
    	Ennemi_Test_SC_P2 60
     
    	rtl
     
    Ennemi_TriP2_F7:
    	Ennemi_Test_SC_P2 61
    	Ennemi_Test_SC_P2 62
    	Ennemi_Test_SC_P2 63
     
    	rtl
     
    ;------------------------------------------
    Ennemi_TriP3_F1:
    	Ennemi_Test_SC_P3 3
    	Ennemi_Test_SC_P3 4
    	Ennemi_Test_SC_P3 5
    	Ennemi_Test_SC_P3 6
     
    	Ennemi_Test_SC_P3 7
    	Ennemi_Test_SC_P3 8
    	Ennemi_Test_SC_P3 9
    	Ennemi_Test_SC_P3 10
    	rtl
     
    Ennemi_TriP3_F2:
    	Ennemi_Test_SC_P3 11
    	Ennemi_Test_SC_P3 12
    	Ennemi_Test_SC_P3 13
    	Ennemi_Test_SC_P3 14
     
    	Ennemi_Test_SC_P3 15
    	Ennemi_Test_SC_P3 16
    	Ennemi_Test_SC_P3 17
    	Ennemi_Test_SC_P3 18
    	Ennemi_Test_SC_P3 19
    	Ennemi_Test_SC_P3 20
    	rtl
     
    Ennemi_TriP3_F3:
    	Ennemi_Test_SC_P3 21
    	Ennemi_Test_SC_P3 22
    	Ennemi_Test_SC_P3 23
    	Ennemi_Test_SC_P3 24
     
    	Ennemi_Test_SC_P3 25
    	Ennemi_Test_SC_P3 26
    	Ennemi_Test_SC_P3 27
    	Ennemi_Test_SC_P3 28
    	Ennemi_Test_SC_P3 29
    	Ennemi_Test_SC_P3 30
    	rtl
     
    Ennemi_TriP3_F4:
    	Ennemi_Test_SC_P3 31
    	Ennemi_Test_SC_P3 32
    	Ennemi_Test_SC_P3 33
    	Ennemi_Test_SC_P3 34
     
    	Ennemi_Test_SC_P3 35
    	Ennemi_Test_SC_P3 36
    	Ennemi_Test_SC_P3 37
    	Ennemi_Test_SC_P3 38
    	Ennemi_Test_SC_P3 39
    	Ennemi_Test_SC_P3 40
    	rtl
     
    Ennemi_TriP3_F5:
    	Ennemi_Test_SC_P3 41
    	Ennemi_Test_SC_P3 42
    	Ennemi_Test_SC_P3 43
    	Ennemi_Test_SC_P3 44
     
    	Ennemi_Test_SC_P3 45
    	Ennemi_Test_SC_P3 46
    	Ennemi_Test_SC_P3 47
    	Ennemi_Test_SC_P3 48
    	Ennemi_Test_SC_P3 49
    	Ennemi_Test_SC_P3 50
     
    	rtl
     
    Ennemi_TriP3_F6:
    	Ennemi_Test_SC_P3 51
    	Ennemi_Test_SC_P3 52
    	Ennemi_Test_SC_P3 53
    	Ennemi_Test_SC_P3 54
     
    	Ennemi_Test_SC_P3 55
    	Ennemi_Test_SC_P3 56
    	Ennemi_Test_SC_P3 57
    	Ennemi_Test_SC_P3 58
    	Ennemi_Test_SC_P3 59
    	Ennemi_Test_SC_P3 60
     
    	rtl
     
    Ennemi_TriP3_F7:
    	Ennemi_Test_SC_P3 61
    	Ennemi_Test_SC_P3 62
    	Ennemi_Test_SC_P3 63
     
    	rtl
    ça rajoute 10ko de code ouch
    Grosso modo ce bordel , quand l'ennemi est hors de l'écran je regarde si y'a un autre ennemi disponible (qui sois hors de l'écran mais proche) , mais pas a l'intérieur de l'écran (il doit pas apparaitre en plein milieux xD).
    Tout ça divisé en 8 frame (pour des soucis de performance) avec 3 ennemi on est a 50% quand même , et ça monte vite si on ne fait pas gaffe.
    (Sinon oui la 'limite' étant de 3 ennemis affichable a l'écran).

    Et bien sur le rajout d'un nouvel ennemi (un 48x48) , c'est vachement gros pour la SNES (surtout quand tu on a 3) je voulais optimiser leur affichage , mais apres j'ai laissé tombé et j'ai utilisé ma jolie fonction généraliste (mais qui boiuffe un peu en CPU) du coup un 48x48 me faut 6 sprite pour l'afficher : 1 de 32x32 et 5 de 16x16.

    Et voici une Vidéo :


    Jouable en ligne ici : http://pixelretro.hebergratuit.net/NesBox/snes.html

    Que me reste t'il ?
    Le plus gros :
    -le son/music a finir
    -La compression/decompression des Maps.
    Apres reste plein de petit détailt mais je ne pense pas qu'il me posseront probleme maintenant

    Pour info j'utilise quasiment la totalité de la ram (128 ko) , sachant que je compte utiliser la RAM comme buffer pour les map , donc on a 96ko pour 2BG + collision , 8ko pour divers buffers.
    8ko pour la jeu ( 4 ko utilisé pour les ennemis sachant que un ennemi me prend 64 octets et j'en ai 64 donc 64x64 = 4096 octets).

  7. #67
    Expert confirmé Avatar de yildiz-online
    Homme Profil pro
    Architecte de domaine
    Inscrit en
    Octobre 2011
    Messages
    1 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de domaine

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 444
    Points : 4 563
    Points
    4 563
    Par défaut
    Dépêche toi de terminer pour nous sortir un seiken densetsu 4!
    PXL le retro-gaming facile: Essayez-le

    Yildiz-Engine an open-source modular game engine: Website
    Yildiz-Online a 3D MMORTS in alpha: Facebook page / Youtube page

  8. #68
    Nouveau Candidat au Club

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Afghanistan

    Informations forums :
    Inscription : Juin 2003
    Messages : 452
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut
    Pourquoi faire ça sur une super nintendo , c une erreur énorme , pourquoi pas faire ça dans un navigateur internet .
    ça sera beaucoup plus jolie et surtout plus facile pour suivre l'avancement du jeux... et même plus facile car les frameworks js pour faire des jeux dans ce style sont nombreux....

  9. #69
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 388
    Points
    11 388
    Billets dans le blog
    11
    Par défaut
    C'est marrant comme c'est complètement hors de propos...
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  10. #70
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 579
    Points
    218 579
    Billets dans le blog
    120
    Par défaut
    C'est intentionnel de garder le CPU en dessous de 50 % ? Genre, pour garder de la marge pour le son ?
    À la place de faire la boucle de 64 éléments, que faites vous ? (j'ai du mal à lire l'assembleur ).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  11. #71
    Nouveau Candidat au Club

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Afghanistan

    Informations forums :
    Inscription : Juin 2003
    Messages : 452
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dragonjoker59 Voir le message
    C'est marrant comme c'est complètement hors de propos...
    c'est pas hors de propos , un jeux supernintendo pourrait facilement tourner dans un navigateur, et ce genre de jeux dans un navigateur moi je teste tout de suite .... et j'ai envie de tester tout de suite ...

  12. #72
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Ben parce que j'aime bien la Super Nintendo , y'a pas d'autre raison que celle la
    La facilité n'a jamais était chez moi un argument pour choisir tel ou tel lib/frameworks/moteur.
    Secondo je suis pas prog en JS , mais si je programme sur PC je choisi en général le C ou C++ et effectivement on peut sortir des contraintes techniques de la SNES
    Sinon le jeu existe deja sous navigateur ici : http://pixelretro.hebergratuit.net/NesBox/snes.html


    C'est intentionnel de garder le CPU en dessous de 50 % ? Genre, pour garder de la marge pour le son ?
    À la place de faire la boucle de 64 éléments, que faites vous ? (j'ai du mal à lire l'assembleur ).
    Oui et non , la marge sera pour l'IA et le reste.
    Le son ne consomme rien en CPU , parce que c'est le SPC700 qui s'en occupe (il se programme comme un 6502 mais avec une syntaxe proche du x86 c'est zarb mais bon...).

    En faite j'affiche tjs 3 ennemis (que j'ai pas posté le code source) ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    Mode_battle:
     
    	lda s_map+_mode
    	cmp #1
    	beq +
    		rts
    	+:
     
    	stz MEM_OAM+_nperso2
     
     
    	ldx #0
    	stx s_ia
     
     
     
    	ldx #$20*3
    	stx MEM_TEMPFUNC+2
    	ldx s_ennemi+_enP1 ;n'id perso
     
     
     
    	jsr IA_Ennemy
    	jsr Collision_perso
    	phx
    	ldx #$600 ;port DMA dst
    	stx MEM_TEMPFUNC+6
    	plx
    	jsr Personnage
    	jsr Degat_test
     
     
     
    	ldx #$20*4
    	stx MEM_TEMPFUNC+2
    	ldx s_ennemi+_enP2 ;n'id perso
    	jsr IA_Ennemy
    	jsr Collision_perso
    	phx
    	ldx #$880 ;port DMA dst
    	stx MEM_TEMPFUNC+6
    	plx
    	jsr Personnage
    	jsr Degat_test
     
     
    	ldx #$20*5
    	stx MEM_TEMPFUNC+2
    	ldx s_ennemi+_enP3 ;n'id perso
    	jsr IA_Ennemy
    	jsr Collision_perso
    	phx
    	ldx #$C00 ;port DMA dst
    	stx MEM_TEMPFUNC+6
    	plx
    	jsr Personnage
    	jsr Degat_test
     
     
    	jsl Ennemi_Tri
     
    	rts
    Enfin sauf s'ils sont hors de l'écran il y'a un return dans la fonction Personnage , le code bordel que j'ai posté en gros cherche une adresse valide (dans le sens un ennemi disponible).
    donc en gros je cherche une valeur pour mes variables : s_ennemi+_enP1,s_ennemi+_enP2,s_ennemi+_enP3 , qui indique la bonne adresse du perso.
    Mais quand on change de perso je dois aussi uploader la nouvelle palette.
    Bref le but était tout simplement de dire que pour faire apparaître plein de personnage c'est loin d’être trivial.


    Dépêche toi de terminer pour nous sortir un seiken densetsu 4!
    ça sera dur de faire mieux que les précédents mais je promet que le jeu sera assez original

  13. #73
    Nouveau Candidat au Club

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Afghanistan

    Informations forums :
    Inscription : Juin 2003
    Messages : 452
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut
    Il y a pas de framework, pour transformer en JS le code supernintendo ???

  14. #74
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 109
    Points : 292
    Points
    292
    Par défaut
    Le p'tit plaisir de Kannagi c'est les vieilles machines et les pousser dans leur dernier retranchement.
    C'est plus un défi technique que d'apporter du nouveau dans le monde du jeu amateur et il le fait plutôt bien.

    Peut être que quelqu'un me dira le contraire mais mixer du son dans un navigateur est impossible. C'est ce qui m'a fait oublier la programmation JS pour mes p'tit jeux... sans son pour le moment

  15. #75
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 388
    Points
    11 388
    Billets dans le blog
    11
    Par défaut
    Citation Envoyé par super_navide Voir le message
    Il y a pas de framework, pour transformer en JS le code supernintendo ???
    Je pense que ça doit être super tordu à faire, c'est de la compilation, mais dans le sens inverse de l'habituel...
    Je ne suis pas sûr que quelqu'un se soit prêté à l'exercice.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  16. #76
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 398
    Points : 710
    Points
    710
    Par défaut
    Citation Envoyé par super_navide Voir le message
    Pourquoi faire ça sur une super nintendo , c une erreur énorme , pourquoi pas faire ça dans un navigateur internet .
    ça sera beaucoup plus jolie et surtout plus facile pour suivre l'avancement du jeux... et même plus facile car les frameworks js pour faire des jeux dans ce style sont nombreux....
    "enorme erreur", faut pas non plus déconner

    la SNES est énorme, y'a le côté nostalgique, puis la fierté sûrement de dire qu'on a développé un jeu sur la console de sa jeunesse !

  17. #77
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    @jwar0
    Pour JS il me semble qu'on peut faire jouer du midi ? (après je n'en sais rien mais je crois que c'est ce qu'on m'a dit).

    Sinon merci pour vos réponses pour le JS/code super nintendo , je sais pas quoi répondre , c'est limite un troll (mais sans débat ).
    "le code super nintendo" n'existe pas , c'est de l'assembleur (ici le 65816) qui existe sur super nintendo mais aussi sur Apple II , il fait partie de la famille des 6502 et la ça tape plus loin Nes , PC Engine , Atari 2600 , Commodore 64 ect
    C'est pas le processeur le plus fiable de son époque mais il avait l'avantage d’être très bon marché comparé a ces concurrents.
    Et ensuite il n'y a deja pas une bijection entre asm et le C alors t'imagine bien en JS
    Enfin celui qui arriverait a cet exploit cela voudrait dire que avec les binaires windows il pourrait avoir le code JS , je serais curieux de voir ça
    Fin de la parenthèse.

    Bon j'ai quelque news :
    NesBox : http://pixelretro.hebergratuit.net/NesBox/snes.html
    rom : http://www.mediafire.com/file/9ton5dtzs562fb6/main.smc

    Je ne garantie pas que sur NesBox que le son soit bien restitué
    Le bouton start pour jouer une musique.
    Le bouton select pour la pause.
    Le bouton Y pour remettre a zéro la musique (un loop quoi).

    Pour cela j'ai du créer un convertisseur MIDI/SNES , et ensuite j'ai coder le SPC700 pour qu'il lit une partition + les entrer/sortie , bref un driver sonore quoi
    Normalement si on utilise les 8 canaux + les bon sample + les bonnes modulations , on peut espérer jouer de bonne musique , mais comme vous pouvez l'imaginer le midi ne m'offre que les partitions , les samples + la modulations du son , c'est moi qui devrait le faire (ou trouver un bon compositeur/musicien qui s'en occupe).
    D'un point de vue prog je gère tout cela la modulation du son , les transferts des samples/partition sur le SPC700 et quelque autre petit effets.
    La version de mon Driver est à sa version 0.7 (0.8 quand jouer un son sera complètement terminé) , 0.9 quand on pourrait 'additionner' différent modulation ,la version 1.0 je sais pas quand mon driver aura était testé et approuvé

    Le SPC700 est limité a 64ko voici comment je l'ai répartie:
    PRG : 0x0200 -0x16FF
    SampleDIR : 0x1700 - 0x1AFF
    track : 0x1B00 - 0x3FFF
    Sample : 0x4000 - 0xFDFF
    RAM : 0xFE00 - 0xFFBF

    Donc mon driver fait donc 5ko , le reste faudra faire des transfert ROM/SPC700 (qu'on doit soi même coder).
    En terme de transfert , 2 octet me prend 1% CPU donc c'est pas le truc quand s'amuse a envoyer en temps réel

  18. #78
    Membre expérimenté
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2009
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2009
    Messages : 416
    Points : 1 443
    Points
    1 443
    Par défaut
    Bravo!

    Et moi qui me plains de l'implémentation d'OpenSLES sur beaucoup d'appareils Android ... Au moins j'ai pas à l'implémenter moi-même :p

    Et j'avais jamais testé jusque là, et je suis bluffé par l'effet de transparence derrière la cascade

  19. #79
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Merci

    C'est sur que de nos jours si y'a un truc qui a bien disparu c'est bien la programmation sonore
    Une API en C avec la puissance des CPU et la taille de la RAM , ce n'est pas comparable avec mes 64ko et le processeur sonore cadencé a 2mhz
    Je l'ai pas dit mais les 64 ko du SPC700 sont départagé en PRG/DATA/RAM/ I/O la joie

    La transparence ça donne un jolie effet j'avoue mais c'est super contraignant a utiliser, du coup il est clair que pour un jeu en entier je ne l'utiliserai pas systématiquement.

Discussions similaires

  1. [DB2] Version Démo
    Par borgfabr dans le forum DB2
    Réponses: 4
    Dernier message: 26/12/2004, 10h48
  2. [tech]Visual C++ 6.0 et Visibroker 6.0 configuration?????
    Par darius_the_first dans le forum CORBA
    Réponses: 8
    Dernier message: 22/11/2004, 23h17
  3. message d'erreur "Microsoft SQL-DMO"
    Par tachi dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/08/2004, 11h47
  4. SQL-DMO Help
    Par agodinasandrien dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/10/2003, 09h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo