New project: NEO GEO emulation on the Atari Falcon 030

All 680x0 related coding posts in this section please.

Moderators: Zorro 2, Moderator Team

CiH
Atari God
Atari God
Posts: 1266
Joined: Wed Feb 11, 2004 4:34 pm
Location: Middle Earth (Npton) UK
Contact:

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by CiH »

Glad to hear this is still alive. :cheers:

Any new developments or code changes since the last time?

It certainly seems to be playable, although hardware acceleration would be helpful, I guess.
"Where teh feck is teh Hash key on this Mac?!"
User avatar
calimero
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 2639
Joined: Thu Sep 15, 2005 10:01 am
Location: Serbia
Contact:

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by calimero »

so does anyone try this on Phantom or other CPU/BUS accelerator for F030?

@Anima did you made any progress regarding 060 code?
look and accuracy of game are already astonishing on Falcon!
it would be really great if greater speed could be achieved on accel. Falcons...
using Atari since 1986.http://wet.atari.orghttp://milan.kovac.cc/atari/software/ ・ Atari Falcon030/CT63/SV ・ Atari STe ・ Atari Mega4/MegaFile30/SM124 ・ Amiga 1200/PPC ・ Amiga 500 ・ C64 ・ ZX Spectrum ・ RPi ・ MagiC! ・ MiNT 1.18 ・ OS X
User avatar
Anima
Atari Super Hero
Atari Super Hero
Posts: 933
Joined: Fri Mar 06, 2009 9:43 am
Contact:

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by Anima »

CiH wrote:Any new developments or code changes since the last time?

It certainly seems to be playable, although hardware acceleration would be helpful, I guess.
Unfortunately this is still the five months old code where quite "many" games already ran on the emulator. I have some ideas for improvements (using the DSP for scaling) in my mind but I haven't had the time yet. :(
calimero wrote:did you made any progress regarding 060 code?
look and accuracy of game are already astonishing on Falcon!
it would be really great if greater speed could be achieved on accel. Falcons...
The goal is to have a version that will run on any machine with a MC68030+ CPU. This, however, will result in modifying the original ROM code. I am thinking about using FBA-RR to find all the code spots which need to be fixed and have an emulator internal patch routine for every game so that the MC68030 specific bus error handler is not needed anymore.

In fact, almost all the running games are also fully playable. However, the heavy graphics memory usage is still an unsolved problem for a good experience so it'll need a very special handling on a stock Falcon (e.g. using a virtual memory model).

Cheers
Sascha
User avatar
calimero
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 2639
Joined: Thu Sep 15, 2005 10:01 am
Location: Serbia
Contact:

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by calimero »

Anima wrote:In fact, almost all the running games are also fully playable. However, the heavy graphics memory usage is still an unsolved problem
so if you run emulator on CT63 you will be still limited with insufficient ST-RAM <> videl speed?
using Atari since 1986.http://wet.atari.orghttp://milan.kovac.cc/atari/software/ ・ Atari Falcon030/CT63/SV ・ Atari STe ・ Atari Mega4/MegaFile30/SM124 ・ Amiga 1200/PPC ・ Amiga 500 ・ C64 ・ ZX Spectrum ・ RPi ・ MagiC! ・ MiNT 1.18 ・ OS X
User avatar
Anima
Atari Super Hero
Atari Super Hero
Posts: 933
Joined: Fri Mar 06, 2009 9:43 am
Contact:

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by Anima »

calimero wrote:
Anima wrote:In fact, almost all the running games are also fully playable. However, the heavy graphics memory usage is still an unsolved problem
so if you run emulator on CT63 you will be still limited with insufficient ST-RAM <> videl speed?
Actually I was referring to the stock Falcon limits (16 MHz and 14 MB RAM) because of the Neo Geo game memory requirements (i.e. ROM size). ;)
However, a fully CT63 targeted emulator (specifically due to the faster and bigger RAM) doesn't need a special memory handling and so it would make the emulation easier. Too bad I don't have any direct access to an accelerated machine. :(

Cheers
Sascha
User avatar
Anima
Atari Super Hero
Atari Super Hero
Posts: 933
Joined: Fri Mar 06, 2009 9:43 am
Contact:

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by Anima »

Finally, after one and a half day of compressing and transferring from the Atari here is the most recent Neo Geo emulator for the Atari Falcon archive including 50 games. The archive itself is about 230 MiB in size and expands to about 730 MiB.

Requirements: Atari Falcon 030 with a MC68030 CPU and 14 MB RAM. Avoid loading too many accessories or other memory residing applications before starting the emulator (e.g. hold CONTROL while booting). The emulator works on RGB/TV and VGA monitors.

Start NEOGEO.TTP and enter the folder name of the game (like MAME and being shown in the videos).

Beware: not all the games will work.

Cheers
Sascha
EvilFranky
Atari Super Hero
Atari Super Hero
Posts: 926
Joined: Thu Sep 11, 2003 10:49 pm
Location: UK

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by EvilFranky »

Thanks Anima!
User avatar
bullis1
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 2301
Joined: Tue Dec 12, 2006 2:32 pm
Location: Canada
Contact:

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by bullis1 »

The results you've gotten so far, even though the framerate is still too low for gameplay, are really impressive. Thank you for your efforts :cheers:
Member of the Atari Legend team
Dal
Administrator
Administrator
Posts: 4224
Joined: Mon Feb 20, 2006 9:00 pm
Location: Cheltenham, UK
Contact:

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by Dal »

Here's what happens when Metal Slug is run on a Phantom accelerated machine:
https://www.youtube.com/watch?v=FSu8UnC8hOY
STE: Desktopper case, IDE interface, UltraSatan (8GB + 512Mb) + HXC floppy emulator. Plus some STE's/STFM's
User avatar
Anima
Atari Super Hero
Atari Super Hero
Posts: 933
Joined: Fri Mar 06, 2009 9:43 am
Contact:

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by Anima »

Dal wrote:Here's what happens when Metal Slug is run on a Phantom accelerated machine:
https://www.youtube.com/watch?v=FSu8UnC8hOY
Thanks for the video. That looks quite promising.

Please keep in mind that the emulator clears the whole screen before drawing the sprites. That's not really necessary in every case so the game play demo could be even faster. ;)

Cheers
Sascha
User avatar
calimero
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 2639
Joined: Thu Sep 15, 2005 10:01 am
Location: Serbia
Contact:

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by calimero »

hi Anima,

does somebody already ask: is it feasible to make same emulation of NeoGeo for Atari Jaguar?

Are you familiar with Jaguars RISC, could they carry emulation job of NeoGeo sprite engine fast enough?
using Atari since 1986.http://wet.atari.orghttp://milan.kovac.cc/atari/software/ ・ Atari Falcon030/CT63/SV ・ Atari STe ・ Atari Mega4/MegaFile30/SM124 ・ Amiga 1200/PPC ・ Amiga 500 ・ C64 ・ ZX Spectrum ・ RPi ・ MagiC! ・ MiNT 1.18 ・ OS X
User avatar
AdamK
Captain Atari
Captain Atari
Posts: 458
Joined: Wed Aug 21, 2013 8:44 am

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by AdamK »

Jaguar has only 68000, so it is imposible to emulate hardware (no PMMU).
Atari: FireBee, Falcon030 + CT60e + SuperVidel + SvEthlana, TT, 520ST + 4MB ST RAM + 8MB TT RAM + CosmosEx + SC1435, 1040STFM + UltraSatan + SM124, 1040STE 4MB ST RAM + 8MB TT RAM + CosmosEx + NetUSBee + SM144 + SC1224, 65XE + U1MB + VBXE + SIDE2, Jaguar, Lynx II, 2 x Portfolio (HPC-006)

Adam Klobukowski [adamklobukowski@gmail.com]
User avatar
Anima
Atari Super Hero
Atari Super Hero
Posts: 933
Joined: Fri Mar 06, 2009 9:43 am
Contact:

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by Anima »

calimero wrote:does somebody already ask: is it feasible to make same emulation of NeoGeo for Atari Jaguar?

Are you familiar with Jaguars RISC, could they carry emulation job of NeoGeo sprite engine fast enough?
As Adam has already pointed out the emulation is not possible on a MC68000. Also the emulator is a kind of hardwired to the MC68030 since it uses some very special features of it. However, the specs of the Jaguar are quite good enough to try to do a port. I.e. the sources could be disassembled and new functions added. Unfortunately most of the newer (and better) Neo Geo games are exceeding the ROM size capabilities of the Jaguar.

So in conclusion I wouldn't say it's impossible... ;)
CiH
Atari God
Atari God
Posts: 1266
Joined: Wed Feb 11, 2004 4:34 pm
Location: Middle Earth (Npton) UK
Contact:

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by CiH »

Here's what happens when Metal Slug is run on a Phantom accelerated machine.
Very nice. This goes from 'proof of concept' on a standard machine, to playable for a Nemesis/Phantom Falcy.

I'll have to try out my CT2 (50 MHz CPU) with and without Fastram to see what difference that makes sometime.
"Where teh feck is teh Hash key on this Mac?!"
User avatar
calimero
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 2639
Joined: Thu Sep 15, 2005 10:01 am
Location: Serbia
Contact:

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by calimero »

CiH please make a video! :)

Anima, it is really impressive how you manage Falcon hardware to keep up with neo geo!
using Atari since 1986.http://wet.atari.orghttp://milan.kovac.cc/atari/software/ ・ Atari Falcon030/CT63/SV ・ Atari STe ・ Atari Mega4/MegaFile30/SM124 ・ Amiga 1200/PPC ・ Amiga 500 ・ C64 ・ ZX Spectrum ・ RPi ・ MagiC! ・ MiNT 1.18 ・ OS X
ctirad
Captain Atari
Captain Atari
Posts: 312
Joined: Sun Jul 15, 2012 9:44 pm

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by ctirad »

Hi Anima. Do you plan to make the code public? I allways wanted to try Amiga emulation using the same MMU trick for running the native code. ;)
User avatar
Anima
Atari Super Hero
Atari Super Hero
Posts: 933
Joined: Fri Mar 06, 2009 9:43 am
Contact:

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by Anima »

ctirad wrote:Hi Anima. Do you plan to make the code public? I allways wanted to try Amiga emulation using the same MMU trick for running the native code. ;)
Well, the complete source is still a mess and I think it's not really helpful but here's a short explanation how the emulation works. I suppose that you already know how to build an MMU tree.

All you need to do is to flag the emulated address ranges as "invalid" within the MMU tree and create a bus error handler like this:

Code: Select all

    SSW_OFFSET = $a
    ACCESS_ADDRESS_OFFSET = $10
    DATA_TO_BE_WRITTEN_OFFSET = $18
    DATA_TO_BE_READ_OFFSET = $2c

bus_error_handler:
    move    #$2700,sr

    bclr    #8,SSW_OFFSET(sp) ; "Data fault processed".

    ; Memory mapped register emulation.

    cmp.l   #<memory_mapped_register_address_to_emulate>,ACCESS_ADDRESS_OFFSET(sp) ; Check if the address of the memory mapped register has been accessed.
    bne.s   check_other_addresses

    move.l  d0,-(sp)

    move    4+SSW_OFFSET(sp),d0 ; "Special Status Word" (add 4 because d0.l has been saved on the stack).

    btst    #6,d0 ; read access?
    bne.s   handle_read_access

    ; Write access.

    and     #$0030,d0 ; Check access size: 0 = long, 1 = byte, 2 = word (IIRC).
    beq.s   handle_long_write_access

    [...]

    move    4+DATA_TO_BE_WRITTEN_OFFSET+2(sp),<emulated_register>+2 ; Write word data to our emulated register (please note both offsets of 2 and also add 4 because d0.l has been saved on the stack).

    move.l  (sp)+,d0

    rte

handle_long_write_access:
    move.l  4+DATA_TO_BE_WRITTEN_OFFSET(sp),<emulated_register> ; Write long data to our emulated register (add 4 because d0.l has been saved on the stack).

    move.l  (sp)+,d0

    rte

handle_read_access:    
    and     #$0030,d0 ; Check access size: 0 = long, 1 = byte, 2 = word (IIRC).
    beq.s   handle_long_read_access

    [...]

    move    <emulated_register>+2,4+DATA_TO_BE_READ_OFFSET+2(sp) ; Write word data from our emulated register (please note both offsets of 2 and also add 4 because d0.l has been saved on the stack).

    move.l  (sp)+,d0

    rte

handle_long_read_access:
    move.l  <emulated_register>,4+DATA_TO_BE_READ_OFFSET(sp) ; Write long data from our emulated register (please note the offset of 2 and add 4 because d0.l has been saved on the stack).

    move.l  (sp)+,d0

    rte

check_other_addresses:
    [...]
Zamuel_a
Atari God
Atari God
Posts: 1289
Joined: Wed Dec 19, 2007 8:36 pm
Location: Sweden

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by Zamuel_a »

Maybe had been a cool project to make an Amiga 500 emulator? That shouldn't be to much work I guess? And be fast to.
ST / STFM / STE / Mega STE / Falcon / TT030 / Portfolio / 2600 / 7800 / Jaguar / 600xl / 130xe
User avatar
Eero Tamminen
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 3997
Joined: Sun Jul 31, 2011 1:11 pm

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by Eero Tamminen »

Zamuel_a wrote:Maybe had been a cool project to make an Amiga 500 emulator? That shouldn't be to much work I guess? And be fast to.
Emulation of which part of Amiga:
http://en.wikipedia.org/wiki/Amiga_500
?

Just CPU, memory setup & sound DMA? Or also graphics? Floppy controller?
Zamuel_a
Atari God
Atari God
Posts: 1289
Joined: Wed Dec 19, 2007 8:36 pm
Location: Sweden

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by Zamuel_a »

Eero Tamminen wrote:
Zamuel_a wrote:Maybe had been a cool project to make an Amiga 500 emulator? That shouldn't be to much work I guess? And be fast to.
Emulation of which part of Amiga:
http://en.wikipedia.org/wiki/Amiga_500
?

Just CPU, memory setup & sound DMA? Or also graphics? Floppy controller?
Well able to open an ADF image file and run it :wink:
ST / STFM / STE / Mega STE / Falcon / TT030 / Portfolio / 2600 / 7800 / Jaguar / 600xl / 130xe
ctirad
Captain Atari
Captain Atari
Posts: 312
Joined: Sun Jul 15, 2012 9:44 pm

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by ctirad »

The hardware needed to play the games, of course ;)

It could profit from the fact that most games and classic demos are already patched for the WHDL to be compatible with the higher level amigas, accelerators and also for reading their data via system calls rather than directly access the floppy controller. The most tricky part would be to keep the emulated chips in sync. Mainly copper.
User avatar
Eero Tamminen
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 3997
Joined: Sun Jul 31, 2011 1:11 pm

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by Eero Tamminen »

The graphics stuff listed on Wikipedia page seems pretty demanding.

Are there a lot of Amiga games that would require support where:
"Graphics can be of arbitrary dimensions, resolution and colour depth, even on the same screen"

Emulating Amiga's 1-5 bit-planes with Atari's interleaved bit-planes, or HAM mode [1], with timings accuracy required for gaming, on not that much faster 030, well...

[1] http://en.wikipedia.org/wiki/Hold-And-Modify
Zamuel_a
Atari God
Atari God
Posts: 1289
Joined: Wed Dec 19, 2007 8:36 pm
Location: Sweden

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by Zamuel_a »

Eero Tamminen wrote:The graphics stuff listed on Wikipedia page seems pretty demanding.

Are there a lot of Amiga games that would require support where:
"Graphics can be of arbitrary dimensions, resolution and colour depth, even on the same screen"

Emulating Amiga's 1-5 bit-planes with Atari's interleaved bit-planes, or HAM mode [1], with timings accuracy required for gaming, on not that much faster 030, well...

[1] http://en.wikipedia.org/wiki/Hold-And-Modify
Yes it's bad that the bitplanes are handled so differently so they need to be converted in real time, which is of course not so fast.
ST / STFM / STE / Mega STE / Falcon / TT030 / Portfolio / 2600 / 7800 / Jaguar / 600xl / 130xe
ctirad
Captain Atari
Captain Atari
Posts: 312
Joined: Sun Jul 15, 2012 9:44 pm

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by ctirad »

Yes, the organisation of the bitplanes is incompatible between Atari and Amiga. Probably the easiest would be to render everything to truecolor. Planar to chunky ;) With some frameskip on slow machines the speed may be acceptable. Most Amiga games use the lowest resolution in either 16 or 32 colors. HAM is used very rarely and only for static screens.
User avatar
AdamK
Captain Atari
Captain Atari
Posts: 458
Joined: Wed Aug 21, 2013 8:44 am

Re: New project: NEO GEO emulation on the Atari Falcon 030

Post by AdamK »

OS level emulation should be possible, custom chips is not.

Convertins amiga bitplanes to atari bitplanes is easy.
Atari: FireBee, Falcon030 + CT60e + SuperVidel + SvEthlana, TT, 520ST + 4MB ST RAM + 8MB TT RAM + CosmosEx + SC1435, 1040STFM + UltraSatan + SM124, 1040STE 4MB ST RAM + 8MB TT RAM + CosmosEx + NetUSBee + SM144 + SC1224, 65XE + U1MB + VBXE + SIDE2, Jaguar, Lynx II, 2 x Portfolio (HPC-006)

Adam Klobukowski [adamklobukowski@gmail.com]
Post Reply

Return to “680x0”