Jump to content
IGNORED

My experiments with Atari 7800


Eagle

Recommended Posts

50 minutes ago, Muddyfunster said:

JS7800 is based on Prosystem which has a lot of inaccuracies in the emulation. JS7800 is neat and I love it, but it's not great for stuff that requires super accurate emulation.

Yeah true. If you need super accurate emulation,  Just get out a real 7800 and ditch emulation!

Link to comment
Share on other sites

1 hour ago, Ecernosoft said:

Yeah true. If you need super accurate emulation,  Just get out a real 7800 and ditch emulation!

Even that has its shortcomings.  Different revisions of the hardware, people using different multicarts, different internal modifications, and variations in condition (amongst other things) can all add up to inconsistent test results on actual hardware.

 

That said, I remain inclined to consider software testing conducted on hardware as providing a more consistent baseline point (and therefore result) than testing in emulation.  That's not to say that testing in emulation is invalid: it's absolutely not.  But given that the hardware is the common ancestor of the emulators, to my mind it's the target upon which software should always work properly.

Link to comment
Share on other sites

1 hour ago, x=usr(1536) said:

Even that has its shortcomings.  Different revisions of the hardware, people using different multicarts, different internal modifications, and variations in condition (amongst other things) can all add up to inconsistent test results on actual hardware.

 

That said, I remain inclined to consider software testing conducted on hardware as providing a more consistent baseline point (and therefore result) than testing in emulation.  That's not to say that testing in emulation is invalid: it's absolutely not.  But given that the hardware is the common ancestor of the emulators, to my mind it's the target upon which software should always work properly.

Question- Is there anything different between the different revisions functonality wise?

My 7800 has the expansion port on the side. Do I have the first revision?

Link to comment
Share on other sites

3 hours ago, Ecernosoft said:

Question- Is there anything different between the different revisions functonality wise?

PAL versions have a BIOS without cartridge protection checks and include Asteroids as a game that starts automatically at power-up when no cartridge is inserted.

 

For NTSC machines, the major differences seem to be the presence (or not) of a RAM timing circuit, the RAM supplier, and the CPU supplier.  For more info, take a look at this thread and the comments in another thread starting here.

3 hours ago, Ecernosoft said:

My 7800 has the expansion port on the side. Do I have the first revision?

It's probably better to think of it as an early version as opposed to the 'first' version.  While the expansion port had been dropped by about 1987/1988, it was included on different versions of the system prior to then.  They've also shown up on a small number of machines with serial numbers in date ranges where they wouldn't expect to be found, so there are no 100% perfect rules for determining what may have been installed or not.

  • Like 1
Link to comment
Share on other sites

2 hours ago, Ecernosoft said:

What is this?

This bin file for our new cart with special banking. 
I attached because few devs have them. 
You can add header with bit 7 (mirror ram) and run on Dragon Fly or A7800 emulator. 
But you will have some missing graphics and you cant hear the music from SN76489. 

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
13 hours ago, mksmith said:

Wow!

 

I will attach full source code later.

But it's much simpler than horizontal or vertical scroll

 

Main macro below for one line:

 

	.macro render 
	ldx #$40-1
@	lda :1,x
;	clc
	adc count
	and #$0f
	ora :3,x
	tay
	lda texture,y
	sta :2,x
	dex
	bpl @-
	.endm

 

and that's all :D

Repeated 52 times with different addresses for each line

 

Most important code ;)

		lda #$06
		sta $FFFF

BIT 1 - enable mirroring RAM A8

BIT 2 - enable mirroring RAM A9 (only SN cart)

 

In Atari800 world we call this Konop mode or GTIA ++

https://atariwiki.org/wiki/Wiki.jsp?page=Ironman Atari#section-Ironman+Atari-GTIA9

 

 

BTW you can add header for SN bin file with bit 7 set and will run on DF and A7800 emulator (you need sign as well because I always forget)

  • Like 9
Link to comment
Share on other sites

9 hours ago, Eagle said:

 

I will attach full source code later.

But it's much simpler than horizontal or vertical scroll

 

Main macro below for one line:

 

	.macro render 
	ldx #$40-1
@	lda :1,x
;	clc
	adc count
	and #$0f
	ora :3,x
	tay
	lda texture,y
	sta :2,x
	dex
	bpl @-
	.endm

 

and that's all :D

Repeated 52 times with different addresses for each line

 

Most important code ;)

		lda #$06
		sta $FFFF

BIT 1 - enable mirroring RAM A8

BIT 2 - enable mirroring RAM A9 (only SN cart)

 

In Atari800 world we call this Konop mode or GTIA ++

https://atariwiki.org/wiki/Wiki.jsp?page=Ironman Atari#section-Ironman+Atari-GTIA9

 

 

BTW you can add header for SN bin file with bit 7 set and will run on DF and A7800 emulator (you need sign as well because I always forget)

Ok dude, you NEED to make a demoscene thing. Like, REALLY. If you did and posted it on YT it would be AMAZING!

Or make a game! Make a great game with your asm knowledge and blow me and ICT out of the water! 🤣

Link to comment
Share on other sites

10 hours ago, Eagle said:

 

I will attach full source code later.

But it's much simpler than horizontal or vertical scroll

 

Main macro below for one line:

 

	.macro render 
	ldx #$40-1
@	lda :1,x
;	clc
	adc count
	and #$0f
	ora :3,x
	tay
	lda texture,y
	sta :2,x
	dex
	bpl @-
	.endm

 

and that's all :D

Repeated 52 times with different addresses for each line

 

Most important code ;)

		lda #$06
		sta $FFFF

BIT 1 - enable mirroring RAM A8

BIT 2 - enable mirroring RAM A9 (only SN cart)

 

In Atari800 world we call this Konop mode or GTIA ++

https://atariwiki.org/wiki/Wiki.jsp?page=Ironman Atari#section-Ironman+Atari-GTIA9

 

 

BTW you can add header for SN bin file with bit 7 set and will run on DF and A7800 emulator (you need sign as well because I always forget)

So impressive what you are achieving with these 👏

  • Like 4
Link to comment
Share on other sites

On 9/11/2022 at 2:06 PM, Eagle said:

We had scroll horizontal and vertical so now we have scroll forward :D

 

edit: SN cart bin attached

 

 

 

 

stardust.bin 32 kB · 6 downloads

You've really laid the gauntlet for showing the 7800 was more capable than the GTIA/ANTIC combo from the 8-bit line.  I'd love to see a FRIENDLY competition for what can be achieved, best of the best in a demo situation, not general game.  Wonder if you could drop this in the 5200 programming forum and spark a friendly competition, with no bickering, no mud slinging, just working code allowed.

  • Like 3
Link to comment
Share on other sites

18 hours ago, Stephen said:

I'd love to see a FRIENDLY competition for what can be achieved, best of the best in a demo situation, not general game.

Numen 7800? ;) 

 

A8 people are aware about it. I’m always posting on AtariArea discord before AAge forum. 
Some A8 coders are involved in SN cart project as well. 
 

Also I don’t want go in to Gr7/prior0 discussion  :D 

 

  • Like 3
Link to comment
Share on other sites

You need to draw Table for circles and rays (using colours from 0 to 15)

Get first pixel/byte from Table_Rays - this will be lower nibble 

Get first pixel/byte from Table_Circles - as higher nibble

Now you have x,y position for Texture (0..255) 

Get pixel/byte from Texture and put on screen

Repeat :D 

 

More about demo effects you can find on Tebe website

https://madteam.atari8.info/index.php?prod=fx#tunnel

But you will need google translator ;) 

 

edit:

I attached tool from Tebe website. Will help you to understand and make your own tunnels/wormholes

 

 

	.macro render 
	ldx #$40-1
@	lda Table_Circles,x		;Table Circles colours are $00,$01,$02,$03....$0F
;	clc
	adc count			;incrase every cycle for tunnel animation (you can do this for circles as well and tunnel wil start rotate)
	and #$0f
	ora Table_Rays,x		;Table Rays colours are $00,$10,$20....$F0 - so you don't have to shift bits)
	tay				;we have in Y register x,y for Texture
	lda texture,y
	sta Screen,x			;put on screen
	dex
	bpl @-
	.endm

 

 

tunelexample.png.3e37edfe355deae46ccb05aac388b422.png

 

 

tunnel.7z

Edited by Eagle
Link to comment
Share on other sites

Thanks! These amazing looking demo effects are great!

 

I am still trying to navigate through how to map arbitrary sized sprite graphics to scanlines. In the Lynx you had the anchor point that made the code trivial. On the 7800 I need to manually maintain some anchor x/y offset for every frame of animation. Perhaps the easiest way is just to try out different options and see what works for me.

  • Like 1
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...