Jump to content
IGNORED

C64 Atari2600 Cross Compiler


Mr SQL

Recommended Posts

Running Atari 2600 programs on my NTSC C64! :) 

 

 

This is a Cross Compiler for the C64 that runs Atari 2600 programs written in Assembly and BASIC (SuperCharger BASIC and Flashback BASIC) with no changes to the BASIC or Assembly code. This is accomplished by abstracting the Atari 2600 virtual machine RUNTIME including a soft ANTIC blitter like Atari home computers bringing display list technology to the Commodore 64! 

 

architecture.jpg.2f41fe8a8cbd5a7187120e926e5589d1.jpg

Double the fun of racing the beam with the classic Television Threading Model on the Commodore 64 allows game loops that repeat 30 or 60 times per second with full screen animation each frame creating faster action scenes than are usually seen with the C64 design. 

 

The rich BASIC provides graphics and sound support and a camera object for panning around the virtual world, or with abstract Assembly programming (ASDK api).

 

Figure2_VirtualWorld.jpg.0bb45460682896b5d8172a1b83ee2869.jpg

The next version will add color and audio support, check out some of the Atari 2600 BASIC and Assembly games that will be supported online here: 

http://relationalframework.com/Atari2600gamesonline.htm

 
The Commodore 64 and the Atari 2600 Video Computer System are the two most popular retro computer consoles, write programs that run on both! 

 

Details: The soft blitter, camera object and display lists are running and functional, I dropped the compiled Atari 2600 BASIC Assembly code and the bitmap right into the 64 Framework and it ran the same in the abstracted VM on my Commodore 64.

 

I can cross compile some of the BASIC at this point and am adding the RUNTIME subsystems that are missing.

Adding sprites, sound and color next... the Tracker/Sequencer for the TIA chiptunes is going to be tremendous fun on the 6581! :) 
  
C64 Extra tile detail: The VM abstracts each 1 bit textured phat tile the TIA draws into 4 characters on the VIC-II text screen allowing both tiled patterns and background patterns to be drawn, I chose the same graphic for the 4 background tile quadrants in the demo.
 

There's inspiring concept innovation with prior art if a prototype was ever produced! 

 

  • Like 4
Link to comment
Share on other sites

3 hours ago, OLD CS1 said:

This is underrated.

Thank you OLD CS1! :)  

 

Update: I just got the BASIC IDE working to click the Play button and compile and launch the program in either Stella or VICE.

 

Here's a fun video using the PRINT statement in a short BASIC program to print binary strings on the scrolling virtualworld bitmap and then bounce the bitmap around:

 

 

 

 

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Sharing this thread from the Atari 2600 Programming forum with another Atari 2600 game running on the Commodore 64 with an intermittent freezing bug.

 

Possibly Zero Page contention from the Kernel routines, hoping some C64 programmers may have an idea:

 

Link to comment
Share on other sites

I suppose you don't touch address 0 and 1 since those are I/O ports? Otherwise I think if you disable the ROM Kernel, you might have rest of the zeropage for yourself. Someone like [mention=50625]bjonte[/mention] probably can chime in at a later occasion, as he's well versed in C64 programming.

I’m note sure I understand the problem here. As carlsson says, the kernal shouldn’t need to be used when running a game like this without any disk loading. Kernal interrupts should be turned off. Atari 2600 har RAM from $80-$ff I think, so 2-$7f should be available for other uses during emulation.
  • Like 1
Link to comment
Share on other sites

7 hours ago, carlsson said:

I suppose you don't touch address 0 and 1 since those are I/O ports? Otherwise I think if you disable the ROM Kernel, you might have rest of the zeropage for yourself. Someone like @bjonte probably can chime in at a later occasion, as he's well versed in C64 programming.

 

7 hours ago, bjonte said:


I’m note sure I understand the problem here. As carlsson says, the kernal shouldn’t need to be used when running a game like this without any disk loading. Kernal interrupts should be turned off. Atari 2600 har RAM from $80-$ff I think, so 2-$7f should be available for other uses during emulation.

 

Thanks carlsson and bjonte the Blitz demo is running smoothly now! 

 

 

I disabled the Kernel and also added an NMI with just an rti to stop other interrupts from happening.

 

Animated Tile Mapping Demo

The Blitz game above has Commodore graphical designs on the graphics that were selected from 4 PETSCII characters.

This demo animates the graphics on the tiles and background:

 

  • Like 1
Link to comment
Share on other sites

Interesting freezing and crashing happening in the emulator again - 

Defender III runs for two seconds and freezes in one clip, in the other it crashes into Commodore BASIC:

 

Not sure why this is happening, BASIC should stay disabled and an unmaskable interrupt was stopping other interrupts that were freezing the whole system before. Did I overwrite my interrupt? (file is a bit larger) Invoke MAX mode somehow or trip the io line again?? Q3

 

Defender III Trainer_testingFB9_hotfixes.txt

 

 


 

Link to comment
Share on other sites

  • 1 month later...

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...