Le 68000 et moi ...
+2
tfdi
iwillbeback
6 participants
Page 2 sur 2
Page 2 sur 2 • 1, 2
Re: Le 68000 et moi ...
Tu t'es mis toi aussi au C64 ??Ca fait 15 ans que je n'ai plus fait d'ASM 68000 (sur Amiga), mais tes lignes de code m'ont remémoré plein de souvenirs...
Invité- Invité
Re: Le 68000 et moi ...
J'aurais bien aimé faire du C64, la machine me faisait rêver à l'époque, mais trop chère pour moi .
Je m'étais du coup rabattu sur un Oric Atmos avec lequel j'avais découvert les joies de l'assembleur 6502.
Je m'étais du coup rabattu sur un Oric Atmos avec lequel j'avais découvert les joies de l'assembleur 6502.
Ninja_SCX- Patient contaminé
- Nombre de messages : 791
Age : 56
Localisation : Paris
Date d'inscription : 04/12/2013
Re: Le 68000 et moi ...
Aujourd'hui on dirait que la scène s'éclate plus sur C64 que sur des PC pleins de gigahertz ..
La sale bête a toujours la côte
Au fait pourquoi tu t'essayes pas à la MD ??
La sale bête a toujours la côte
Au fait pourquoi tu t'essayes pas à la MD ??
Invité- Invité
Re: Le 68000 et moi ...
Ninja_SCX a écrit:En tout cas chapeau pour t'être mis à l'assembleur 68000 !
Le jeu en vaut la chandelle.
Ce microprocesseur est vraiment génial une fois maîtrisé.
Ca fait 15 ans que je n'ai plus fait d'ASM 68000 (sur Amiga), mais tes lignes de code m'ont remémoré plein de souvenirs...
Merci ! :)
Les choses rentrent lentement mais surement !
Concernant la question de la gestion du son par le Z80, j'ai trouvé un listing qui permettrait de jouer du WAV !
Par contre, impossible de le lancer sur easy68K et Bex sans un un retour d'erreurs ...
Je vous laisse le listing car c'est le genre de trucs qui peut s'avérer essentiel pour le HomeBrew MD :
- Code:
; NOTE: file is in DOS (ASCII) encoding !!! Use EDIT or change the font to
; TERMINAL if you're using Windows text editors, to view this file correctly
; NOTE: You need some 8-bit WAVs if you want this to make sound.
ORG $00000000
DC.L $00FFFFFE, CodeStart, Interrupt, Interrupt
DC.L Interrupt, Interrupt, Interrupt, Interrupt
DC.L Interrupt, Interrupt, Interrupt, Interrupt
DC.L Interrupt, Interrupt, Interrupt, Interrupt
DC.L Interrupt, Interrupt, Interrupt, Interrupt
DC.L Interrupt, Interrupt, Interrupt, Interrupt
DC.L Interrupt, Interrupt, Interrupt, Interrupt
DC.L Interrupt, Interrupt, Interrupt, Interrupt
DC.L Interrupt, Interrupt, Interrupt, Interrupt
DC.L Interrupt, Interrupt, Interrupt, Interrupt
DC.L Interrupt, Interrupt, Interrupt, Interrupt
DC.L Interrupt, Interrupt, Interrupt, Interrupt
DC.L Interrupt, Interrupt, Interrupt, Interrupt
DC.L Interrupt, Interrupt, Interrupt, Interrupt
DC.L Interrupt, Interrupt, Interrupt, Interrupt
DC.L Interrupt, Interrupt, Interrupt, Interrupt
DC.B 'SEGA MEGA DRIVE ' ; System name
DC.B '(C)TmEE 2006.OCT' ; Copyright
DC.B 'WAV failide m„ngija - tmeeco@hot.ee v0.2' ; Name (local)
DC.B 'WAV file player - www.hot.ee/tmeeco v0.2' ; Name (int.)
DC.B 'GM T-000003-02' ; Serial
DC.W $0000 ; Checksum
DC.B ' ' ; I/O support
DC.L $00000000, $003FFFFF ; ROM start->end
DC.L $00FF0000, $00FFFFFF ; RAM start->end, why ???
DC.L $00000000 ; External RAM info
DC.L $00000000, $00000000 ; External RAM start->end
DC.B 'No modem... ' ; Modem shit
; DC.B "WAV is 8-BIT MONO @ 8KHz " ; Whatever
; DC.B "WAV is 8-BIT MONO @ 11KHz " ; Whatever
; DC.B "WAV is 8-BIT MONO @ 16KHz " ; Whatever
; DC.B "WAV is 8-BIT MONO @ 22KHz " ; Whatever
DC.B 'WAV is 8-BIT MONO @ 32KHz ' ; Whatever
; DC.B "WAV is 8-BIT MONO @ 44KHz " ; Whatever
; DC.B "WAV is 8-BIT MONO @ 48KHz " ; Whatever
DC.B 'E like Estonia ' ; Regions
FMPORT1 EQU $A04000
FMPORT2 EQU $A04001
FMPORT3 EQU $A04002
FMPORT4 EQU $A04003
DPORT EQU $C00000
CPORT EQU $C00004
Interrupt:
RTS
CodeStart:
MOVE.W #$2700, SR ; Disable ints
; Fulfill a security measure so we can run this on the real thing
MOVE.B $A10001, D0 ; Get MD hardware info
MOVE.B D0, D7 ; We need some of this later
ANDI.B #$0F, D0 ; Mask out extra info so hardware ver is left
CMP.B #0, D0 ; If version is 0 then
BEQ SkipSegaSecurity ; skip security measure.
MOVE.L ($000100), ($A14000) ; write "SEGA" to a reg
SkipSegaSecurity:
MOVE.B #$01, ($A11200) ; Stop Z80 reset
MOVE.B #$01, ($A11100) ; request Z80 bus
MOVE.B #$2B, D0 ; Enable DAC
MOVE.B #$80, D1
BSR WriteFMset1
MOVE.B #$B6, D0 ; CH6 both channels
MOVE.B #$C0, D1
BSR WriteFMset2
MOVE.B #$2A, D0 ; Prepare for DAC for incoming samples
MOVE.B #$80, D1
BSR WriteFMset1
PlayLoop:
LEA WAVfile, A0
ADDQ.L #4, A0
MOVE.L (A0)+, D2 ; Get size of the WAV
ROR.W #8, D2 ; Convert Little-Endian (Intel)
SWAP D2 ; to Big-Endian (Motorola)
ROR.W #8, D2
ADDI.L #50, A0 ; Skip header
SUBI.L #58, D2
PCMloop:
MOVE.B (A0)+, D0
PCMwloop:
BTST #7, (FMPORT1)
BNE PCMwloop
MOVE.B D0, (FMPORT2)
; These values are approximate, make adjustments if you wish
; MOVE.W #300, D1 ; 2KHz
; MOVE.W #70, D1 ; 8KHz
; MOVE.W #60, D1 ; 11KHz
; MOVE.W #35, D1 ; 16KHz
; MOVE.W #25, D1 ; 22KHz
MOVE.W #14, D1 ; 32KHz
; MOVE.W #5, D1 ; 44KHz
; MOVE.W #4, D1 ; 48KHz
; MOVE.L #$C0000000, (CPORT)
; MOVE.B D0, (DPORT)
Delayloop:
DBRA D1, DelayLoop ; Comment this line to get 96KHz
SUBQ.L #1, D2
BEQ PlayLoop
BRA PCMloop
WriteFMset1:
BTST #7, (FMPORT1)
BNE WriteFMset1
MOVE.B D0, (FMPORT1)
WriteFM1:
BTST #7, (FMPORT1)
BNE WriteFM1
MOVE.B D1, (FMPORT2)
RTS
WriteFMset2:
BTST #7, (FMPORT1)
BNE WriteFMset1
MOVE.B D0, (FMPORT3)
WriteFM2:
BTST #7, (FMPORT1)
BNE WriteFM2
MOVE.B D1, (FMPORT4)
RTS
DS.B 52, 0
; DC.B " Here starts the WAV file (8-BIT, 8KHz) ->"
; DC.B "Here starts the WAV file (8-BIT, 11KHz) ->"
; DC.B "Here starts the WAV file (8-BIT, 16KHz) ->"
; DC.B "Here starts the WAV file (8-BIT, 22KHz) ->"
DC.B 'Here starts the WAV file (8-BIT, 32KHz) ->'
; DC.B "Here starts the WAV file (8-BIT, 44KHz) ->"
; DC.B "Here starts the WAV file (8-BIT, 48KHz) ->"
; DC.B " Here starts the WAV file (8-BIT, 96KHz) ->"
EVEN
WAVfile:
; INCBIN "PCMTEST2.WAV" ; 2KHz - 1.5 mins of music in 230KB
; INCBIN "REACTOR.WAV" ; 8KHz - Tune from QB45 game FoX
; INCBIN "RISTAR.WAV" ; 11KHz - Ristar title music
; INCBIN "PAINKILL.WAV" ; 11KHz - Judas Priest - Painkiller
; INCBIN "RISTAR2.WAV" ; 16KHz - More Ristar title music
; INCBIN "PCMTEST.WAV" ; 22KHz - SA twinkle circuit MIDI made by John Weeks through my YAMAHA YMF719 sound card
; INCBIN "DBSMM.WAV" ; 32KHz - Dimmu Borgir - Satan my master, its just good song, I'm no satanist
INCBIN 'TESTER11.WAV' ; 32KHz - MIDI loop, feeble attempt to make metal like music
; INCBIN "SONIC1SB.WAV" ; 44KHz - Sonic1 Scrap Brain, directly recorded from my dad's SMS2
; INCBIN "SONIC3.WAV" ; 48KHz - Sonic3 Angel Island act1 drum loop
; INCBIN "SONIC32.WAV" ; 96KHz - Same as above
EVEN
Etant donné que je ne connais pas trop les adressages et les interruptions du Z80 par la MD, un peu d'éclaircissement ne serait pas de refus !
De plus, si une personne arrive à tirer quelque chose de cette routine, merci de le signaler ici, cela pourra servir à beaucoup je pense ... Pensez, jouez du WAV sur MD !!!
Merci d'avance.
Invité- Invité
Re: Le 68000 et moi ...
tiens un bon lien sur la doc de la MD :
http://wiki.megadrive.org/index.php?title=Main_Page
http://wiki.megadrive.org/index.php?title=Main_Page
Invité- Invité
Re: Le 68000 et moi ...
Vetea:Ca ne fonctionnera jamais sous Easy68k, vu que dans ce programme tu attaques des spécificités de la MD, que Easy68k ne connait pas. Easy68k est un émulateur de 68000, mais pas de l'énvironnement des différentes plateformes qui ont utilisé le 68000. Donc dès que tu attaques une plateforme spécifique, ben ca ne fonctionne pas, il n'est pas fait pour ca.
Le programme n'est pas compliqué à comprendre, le seul hic, c'est que là il faut avoir les spécificités de la MD, et il faudrait débugguer sur la MD.
Il faudrait faire un copier/coller du programme dans un assembleur pour MD, le compiler, et essayer d'executer la rom sur la MD.
Ca ne fonctionnera jamais ni sous Easy68k, et j'ai un gros doute que ca puisse fonctionner sous BEX, vu que là t'as un entête complet d'une ROM MD, et que BEX doit lui même en générer un pour s'exécuter.
Le programme n'est pas compliqué à comprendre, le seul hic, c'est que là il faut avoir les spécificités de la MD, et il faudrait débugguer sur la MD.
Il faudrait faire un copier/coller du programme dans un assembleur pour MD, le compiler, et essayer d'executer la rom sur la MD.
Ca ne fonctionnera jamais ni sous Easy68k, et j'ai un gros doute que ca puisse fonctionner sous BEX, vu que là t'as un entête complet d'une ROM MD, et que BEX doit lui même en générer un pour s'exécuter.
Dernière édition par tfdi le Mar 10 Fév 2015 - 9:45, édité 1 fois
tfdi- Patient contaminé
- Nombre de messages : 550
Age : 52
Date d'inscription : 19/10/2010
Re: Le 68000 et moi ...
Merci Tfdi de l'éclairage.
Le code n'est pas complique à comprendre en effet, le mettre en oeuvre, un peu plus.
J'ai peut être une idée :
1/ Taper du code dans un éditeur de texte/code universel et le sauver en .asm
2/ Debugger et générer un .Bin avec Asm68k en ligne de commande Dos.
Le code n'est pas complique à comprendre en effet, le mettre en oeuvre, un peu plus.
J'ai peut être une idée :
1/ Taper du code dans un éditeur de texte/code universel et le sauver en .asm
2/ Debugger et générer un .Bin avec Asm68k en ligne de commande Dos.
Invité- Invité
Re: Le 68000 et moi ...
Je ne connais pas Asm68k, mais tu peux toujours essayer.
La difficulté risque d'être l'interpretation du ORG $00000000 par l'assembleur que tu utiliseras.
La difficulté risque d'être l'interpretation du ORG $00000000 par l'assembleur que tu utiliseras.
tfdi- Patient contaminé
- Nombre de messages : 550
Age : 52
Date d'inscription : 19/10/2010
Re: Le 68000 et moi ...
tfdi a raison, l'intérêt d'utiliser easy68k est surtout pour tester de petites portions de code en 68000 pur .
Ca te permet de voir les cycles utilisés, l'état des registre et des flags, pour débugger ça aide pas mal .
Ca te permet de voir les cycles utilisés, l'état des registre et des flags, pour débugger ça aide pas mal .
Invité- Invité
Re: Le 68000 et moi ...
J'ai trouvé la solution :
- Notepad++ avec un plugin langage z80 - 68000
- compilation, debuggage et ROM avec asm68k
Ça fonctionne parfaitement !
- Notepad++ avec un plugin langage z80 - 68000
- compilation, debuggage et ROM avec asm68k
Ça fonctionne parfaitement !
Invité- Invité
Re: Le 68000 et moi ...
Impeccable
tfdi- Patient contaminé
- Nombre de messages : 550
Age : 52
Date d'inscription : 19/10/2010
Re: Le 68000 et moi ...
Rappel des sources :
- NotePad++ ( Google est votre ami ! )
- Le Plugin Langage Z80 - 68000 : https://dl.dropboxusercontent.com/u/108143465/BDD%20Sons%20%26%20Musiques%20WAV.zip
- L'exe ASM68K ( en ligne de commande ) : https://dl.dropboxusercontent.com/u/108143465/asm68k.exe
Quand vous avez votre code tout neuf réalisé sous Notepad++, passez en ligne de commande, allez dans le répertoire ou se trouve votre fichier .asm et votre asm68.exe, et tapez : Asm68K votrefichier.asm, votreRom.bin
Voila c'est tout !
- NotePad++ ( Google est votre ami ! )
- Le Plugin Langage Z80 - 68000 : https://dl.dropboxusercontent.com/u/108143465/BDD%20Sons%20%26%20Musiques%20WAV.zip
- L'exe ASM68K ( en ligne de commande ) : https://dl.dropboxusercontent.com/u/108143465/asm68k.exe
Quand vous avez votre code tout neuf réalisé sous Notepad++, passez en ligne de commande, allez dans le répertoire ou se trouve votre fichier .asm et votre asm68.exe, et tapez : Asm68K votrefichier.asm, votreRom.bin
Voila c'est tout !
Invité- Invité
Page 2 sur 2 • 1, 2
Sujets similaires
» [ASM - 68000 - Z80] - MEGADRIVE
» [Neogeo] Asm pour 68000
» Papi Commando fait de ... L'assembleur 68000 !
» [Neogeo] Asm pour 68000
» Papi Commando fait de ... L'assembleur 68000 !
Page 2 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum