-
Posts
688 -
Joined
-
Last visited
-
Days Won
4
Content Type
Profiles
Forums
Blogs
Gallery
Events
Store
Everything posted by Eagle
-
-
Minnie soundchip core it's almost done. I tried playing few Pokey RMT music directly on the Minnie I used only square waveform and noise. Still have some problem with volume (because of this -> sample_data = S x (1 + 1/2 x vol2+ 1/4 x vol1 + 1/8 x vol0) x 2^(4 x vol5 + 2 x vol4 + 1 x vol3) ) Also Minnie don't have Zero volume. To make the channel not produce any sound, you need to use Waveform 4. I hope one day someone will make tracker for Minnie. More details about this chip: https://7800.8bitdev.org/index.php/The_7800_Minnie_sound_chip Below song BeniFriends by @VinsCool (sorry ) 2024-04-11 14-03-08.mp4
- 465 replies
-
- 10
-
He’s probably referring to this two video from my Jag tests. My others Jag tests are only on Polish AtariArea discord. BTW MatGuru has something very interesting for Jag fans too but I can’t say anything about it yet.
-
Just to let you know, A7800 MiSTer core is playing Minnie already 🥳 edit: our version of Minnie has 8 channels (instead of 3) and 7 user 64 bytes wavetables (instead of 2)
-
@SainT I hope you have some space left in the 7800GD to put Minnie in it when we have the final version 😁
-
Done 🥳 IMG_4197.MOV
-
-
What tools do people use for drawing static images?
Eagle replied to Propane13's topic in Atari 7800 Programming
Grafx2 -
-
I tried my best. You will get idea If I find more time I will do working example double buffered Display List. FirstDL equ $4000 x_player equ $70 y_player equ $71 nr_sprite equ $72 colorwidth equ $73 Sprite_zone equ $80 ;13*2bytes ;**************************************************** ;First Display List List line should point FirstDL=$4000 for first DL and increasing 128 bytes for every next DL ; but if you need more sprites than you can do 256 bytes step ; 128 bytes DL will give you up to 31 sprites for each line ; ;DLL $4F,>FirstLine,<FirstLine ; $4F,>[FirstLine+128],<[FirstLine+128] ; $4F,>[FirstLine+256],<[FirstLine+256] ; etc...... ;**************************************************** Start ;main loop will looks like this Main jsr waitVBlank jsr set_first_dl_sprite_zone ;I'm using name First beacuse this was double buffered sprite procedure ;terminates DL on the start jsr clear_dl_first ;bullet1 - pass in x_player y_player nr_sprite colorwidth jsr fast_sprite ;bullet2 - pass in x_player y_player nr_sprite colorwidth jsr fast_sprite ;bullet3 - pass in x_player y_player nr_sprite colorwidth jsr fast_sprite ;etc.... ;enemie1 - pass in x_player y_player nr_sprite colorwidth jsr fast_sprite ;enemie2 - pass in x_player y_player nr_sprite colorwidth jsr fast_sprite ;enemie3 - pass in x_player y_player nr_sprite colorwidth jsr fast_sprite ;etc.... ;maincharacter - pass in x_player y_player nr_sprite colorwidth jsr fast_sprite ;terminate DL's jsr add_endDl jmp Main ;**************************************************** fast_sprite ldy y_player ;zero page ldx Y_tab_new,y lda nr_sprite ;zero page - addres in Maria bank - sprite number sta (sprite_zone,x) ;LSB inc sprite_zone,x lda colorwidth ;zero page - color + width sta (sprite_zone,x) inc sprite_zone,x lda tab_y_16,y ;adjust Y in Zone sta (sprite_zone,x) ;MSB inc sprite_zone,x lda x_player ;zero page - x position sta (sprite_zone,x) inc sprite_zone,x ; bottom of the sprite ldx Y_tab_new+16,y ;add 16 because 16 line sprite height lda nr_sprite ;sprite number sta (sprite_zone,x) ;LSB inc sprite_zone,x lda colorwidth ;color + width sta (sprite_zone,x) inc sprite_zone,x lda tab_y_16_Holey,y ;Holey DMA sta (sprite_zone,x) ;MSB inc sprite_zone,x lda x_player ;x position sta (sprite_zone,x) inc sprite_zone,x rts ;put second zero on end for all Display Lists add_endDl ldx #$00 lda #$00 loopenddl inc sprite_zone,x ;skip to second byte of double zero for DL (terminate DL) sta (sprite_zone,x) inx inx cpx #13*2 bne loopenddl rts set_first_dl_sprite_zone ; :13 means Repat 13 times this line ; MWA is MADS macro - move word, # - is counter, starting from zero and increase every repaert :13 mwa #[FirstDL+[#*128]] sprite_zone+[#*2] ;you can use +5 after FirstDL if you need put extra 5 byte header for the background ; :13 mwa #[FirstDL+5+[#*128]] sprite_zone+[#*2] ; this looks like this ; lda #<$4000 ; sta sprite_zone ; lda #>$4000 ; sta sprite_zone+1 ; lda #<[$4000+128*1] ; sta sprite_zone+2 ; lda #[>$4000+128*1] ; sta sprite_zone+3 ; lda #<[$4000+128*2] ; sta sprite_zone+4 ; lda #[>$4000+128*2] ; sta sprite_zone+5 ; etc.... ; 13 times (LSB and MSB), but entry 13 is dummy - for anything outside line zone 0 to 11 ; address willby FirstDL+[128*12] but you can set anywher you need (but the best will be on the beginning memory page ; because I'm using only INC (sprite_zone,x) - increasing only LSB - making faster rts clear_dl_first ;zero all sprites at begining lda #$00 :13 sta FirstDL+[[#*128]+1] ;plus 1 on end because second zero teminate DL ;you can use +5 after FirstDL if you need put extra 5 byte header for the background ; :13 sta FirstDL+5+[[#*128]+1] ;looks like this ; sta $4000 ; sta $4000+128 ; sta $4000+128*2 ; etc.... rts Y_tab_new ;address on zero page for INDIRECT,X :16 .byte 0 ;looks like ; :16 - means repeat 16 times ; .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 :16 .byte 2 :16 .byte 4 :16 .byte 6 :16 .byte 8 :16 .byte 10 :16 .byte 12 :16 .byte 14 :16 .byte 16 :16 .byte 18 :16 .byte 20 :16 .byte 22 :16 .byte 24 ;empty - this is dummy line, anything outside zones 0-11 will be written to (indirect+24),x ;but never put on screen, it's easier to put sprite in dummy DL than checking every sprite leaving screen in Y axis ;addres for Dummy DL you can put wherewer you want (page align) :16 .byte 24 ;empty :16 .byte 24 ;empty :16 .byte 24 ;empty :16 .byte 24 sprbank equ $E0 ;MSB of $E000 bank maria holbank equ $D0 ;MSB of $D000 HoleyDMA bank Tab_Y_16 ;every line looks like this ; .byte sprbank+0,sprbank+1,sprbank+2,sprbank+3,sprbank+4,sprbank+5,sprbank+6,sprbank+7,.........., sprbank+15 ; lines are 16 times repeated - for speedcode reason (256 bytes table) :16 .byte sprbank+# :16 .byte sprbank+# :16 .byte sprbank+# :16 .byte sprbank+# :16 .byte sprbank+# :16 .byte sprbank+# :16 .byte sprbank+# :16 .byte sprbank+# :16 .byte sprbank+# :16 .byte sprbank+# :16 .byte sprbank+# :16 .byte sprbank+# :16 .byte sprbank+# :16 .byte sprbank+# :16 .byte sprbank+# :16 .byte sprbank+# Tab_Y_16_Holey :16 .byte holbank+# :16 .byte holbank+# :16 .byte holbank+# :16 .byte holbank+# :16 .byte holbank+# :16 .byte holbank+# :16 .byte holbank+# :16 .byte holbank+# :16 .byte holbank+# :16 .byte holbank+# :16 .byte holbank+# :16 .byte holbank+# :16 .byte holbank+# :16 .byte holbank+# :16 .byte holbank+# :16 .byte holbank+#
-
ATARI 7800 New Cartridge PCB with POKEY and YM2413 Support
Eagle replied to selgus's topic in Atari 7800
$468-$46F it's free -
ATARI 7800 New Cartridge PCB with POKEY and YM2413 Support
Eagle replied to selgus's topic in Atari 7800
Yes. Like I said before - 2xPokey, 2xSN, YM2151, YM2612, 4 channel Amiga style DMA covox and we will try Minnie. YM2413 core is WIP, but it might work. We will have 24bit Pointers and Blitter, of course SN2 cart it's compatible with SN cart and MariaECI. You can use in dev mode (transfer files by cable). SD card I'm planning use for streaming video and/or music. We have FPGA VGM player because almost every platform with Yamaha sound chips uses an additional Z80 processor just for playing music. This is flash cart (I don't want to make this cart another SD cart) We have MiSTer FPGA core working for devs I believe that is good start for possible future projects (e.g. new XM module and A7800 on FPGA) -
ATARI 7800 New Cartridge PCB with POKEY and YM2413 Support
Eagle replied to selgus's topic in Atari 7800
Few VGM music YM2413/SN76489 YM_2413_SN.zip -
ATARI 7800 New Cartridge PCB with POKEY and YM2413 Support
Eagle replied to selgus's topic in Atari 7800
I paid for SN around $1, for Pokey much more But now we have FPGA Trion T20 for SN2 cart (7800GD uses T8)