Jump to content
IGNORED

My experiments with Atari 7800


Eagle

Recommended Posts

19 minutes ago, eed002 said:

Thanks. This was helpful as well...

 

https://sites.google.com/site/atari7800wiki/graphics-modes

The "See the 7800 Software Guide for a description of these modes" mention at that page, be sure it is not an outdated one with a number of inaccuracies and missing information.

 

Here is the corrected and updated version:

http://7800.8bitdev.org/index.php/7800_Software_Guide

  • Like 3
Link to comment
Share on other sites

Just example of code in assembly

Showing the difference between code for A7800 and MariaEci

It's just showing one sprite with random data.

 

;
;change here to chose with platform you want
MariaEci equ yes
;
YES	equ 1	;code for Atari XL/XE
NO	equ 0	;code for Atari7800
;

	.if MariaEci=no
	opt f+h-m+
	.endif

	.if MariaEci=Yes
maria_pbi		= $08
MARIA_BASE 		= $d100
MIRQ_STATUS		= MARIA_BASE + $10
MIRQ_FLCLR		= MARIA_BASE + $10
MIRQ_CONTROL	= MARIA_BASE + $11
MIRQ_LVECTOR	= MARIA_BASE + $12
MIRQ_HVECTOR	= MARIA_BASE + $13
BGEN			= MARIA_BASE +$47
EXT256KB		= MARIA_BASE +$4E
PORTB			= $D301 
DMACTL			= $d400
NMIEN			= $d40e
PDVREG 			= $D1FF  ;;; PBI IRQ FLAG
PDVRS 			= $0248
BACKGRND        = MARIA_BASE + $20     ;Background Color
MSTAT           = MARIA_BASE +$28
DPPH            = MARIA_BASE +$2C
DPPL            = MARIA_BASE +$30
CHARBASE        = MARIA_BASE +$34 
OFFSET	        = MARIA_BASE +$38
CTRL            = MARIA_BASE +$3C

P0C1            =     MARIA_BASE +$21     ;Palette 0 - Color 1
P0C2            =     MARIA_BASE +$22     ;Palette 0 - Color 2
P0C3            =     MARIA_BASE +$23     ;Palette 0 - Color 3
	.else

INPTCTRL	=	$01	;INPUT PORT CONTROL ("VBLANK" IN TIA )
BACKGRND	=	$20	;BACKGROUND COLOR
P0C1		=	$21	;PALETTE 0 - COLOR 1
P0C2		=	$22	;	   - COLOR 2
P0C3		=	$23	;	   - COLOR 3
MSTAT		=	$28	;MARIA STATUS
DPPH		=	$2C	;DISPLAY LIST LIST POINT HIGH BYTE
DPPL		=	$30	;DISPLAY LIST LIST POINT LOW BYTE
CHBASE		=	$34	;CHARACTER BASE ADDRESS
OFFSET		=	$38	;FOR FUTURE EXPANSION - STORE ZER0 HERE
CTRL		=	$3C	;MARIA CONTROL REGISTER
	
	.endif
;Warning	
;no cart header for 7800
;use 7800header tool and 7800sign
;http://7800.8bitdev.org/index.php/7800AsmDevKit

		org $8000
Start
		.if MariaEci=Yes
			sei          
			lda PORTB	 ; disable basic
			ora #$01
			sta PORTB
			lda #$00
			sta DMACTL
			sta NMIEN
			lda #maria_pbi 
			sta PDVRS 
			sta PDVREG       ; --- pbi maria init
			lda #$00
			sta MIRQ_CONTROL ; maria irq off
			sta BGEN
			sta EXT256KB
			sta OFFSET
		.else
			sei					;Disable interrupts
			cld					;Clear decimal mode
			MVA #$07 INPTCTRL
			MVA	#$7F CTRL
			MVA	#$00 OFFSET
			MVA #$00 INPTCTRL
			ldx	#$FF			;Reset stack pointer
			txs
		.endif

		mva	#$00 BACKGRND\ mva #$08 P0C1\ mva #$14 P0C2\ mva #$0c P0C3
		
		jsr	WaitVBLANK	;wait until no DMA would happen
		lda	#<DLL	;set display list list address
		sta DPPL
	    lda	#>DLL
	    sta	DPPH	

		lda	#$40
		sta	CTRL	;DMA on, 160A/160B mode
loop	jmp loop

DLL
		.rept 3
		.byte	$0F,>emptyline,<emptyline	;$0F - DLL entry 16 lines
		.endr

		.byte 	$0F,>onelineDL,<onelineDL
		
		.rept 16
		.byte	$0F,>emptyline,<emptyline
		.endr

;DL entry 4 bytes
onelineDL		.byte <sprite,$1e,>sprite,78	;LSB,Size 2 byte + colour pallet 0,MSB,XPOS
			.byte 0,0	;end of Displaylist
;
emptyline	.byte 0,0

WaitVBLANK:	
WaitVBoff:
		bit		MSTAT
		bmi		WaitVBoff
WaitVBon:
		bit		MSTAT
		bpl		WaitVBon
		rts

;Dummy nmi/irq
Dummy	RTI
		org $A000
sprite
		.rept 16 #
		.byte [:1*16]+:1,[:1*16]+:1		;random data to show sprite - 4096 bytes
		.align 256						;gfx data every 256 bytes
		.endr
		

		.if MariaEci=YES
		run start
		.else

	 ORG	$fff8
	.byte	$FF		;Region verification
	.byte	$87		;ROM start $8000
	.word	Dummy
	.word	START
	.word	Dummy
		.endif
		

 

Multiplatform.asm

  • Like 2
Link to comment
Share on other sites

  • 5 months later...
1 hour ago, SainT said:

I can always make an alternative firmware which ditches 2600 support in favor of bigger and better 7800 features... :D

that honestly wouldn't bother me as I don't even play or use the 2600 side of things off my 7800GD now. I have a Harmony, my Pluscart, an Unocart, and my BBpro with the 7800 adapter, that also plays much of the 2600 stuff so I feel I'm covered well there. @SainT You've stated before that you designed the 7800GD first and foremost for the 7800 so yeah, I wouldn't have a problem with the 2600 side getting removed in favor of more stuff on the 7800 side. Course that is just my opinion and I'm sure there are many others that prefer to have that all in one cartridge option. I just don't happen to fit into that since again, I've plenty of other ways to play 2600 stuff.

 

 

  • Like 3
Link to comment
Share on other sites

Posted (edited)

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)

Edited by Eagle
  • Like 3
  • Thanks 1
Link to comment
Share on other sites

4 hours ago, SlidellMan said:

Wow, your latest videos are amazing. I bet that @CyranoJ Would be impressed with your Jaguar demos.

 

What?  Checked the youtube channel, couldn't see any Jaguar videos.   Maybe next time link to what you are referring to?

Link to comment
Share on other sites

6 minutes ago, CyranoJ said:

 

What?  Checked the youtube channel, couldn't see any Jaguar videos.   Maybe next time link to what you are referring to?

I'm guessing he's referring to some of the videos in this playlist I linked?. There's definitely some jaguar stuff in there.

Video Game Demos (youtube.com)

 

Screenshot2024-04-05173747.thumb.jpg.837651260fdf21b288f3320ad848fb50.jpg

Link to comment
Share on other sites

15 hours ago, CyranoJ said:

Maybe next time link to what you are referring to?

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. 

 

Link to comment
Share on other sites

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) ) :D 

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 ;)  )

 

 

 

  • Like 12
Link to comment
Share on other sites

  • 1 month later...
25 minutes ago, Eagle said:

First test - YM2413 for SN2 cart (music from vgmrip)

 

@selgus we used address 46E/F 

Sounds great!

 

I have $46e as the address register, and $46f as the data. Does this map the same with your implementation?

Link to comment
Share on other sites

Street of Rage 2 - YM2413 + SN76489 (very low cpu usage comparing to 2151 or 2612)

 

 

 

Outrun - only YM2413

 

 

 

Below code for YM2413 and SN player in ASM using Pointers (from SN2 cart)

Pointers make life easier and I can address 1MB without swapping banks.

 

image.png?ex=664fae3d&is=664e5cbd&hm=1a88c98ca9d9bd3da6ed7a01a051d9cf68d87916fdc87d40d8af26433e6c8f6a&

 

 

  • Like 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...