
Any new developments or code changes since the last time?
It certainly seems to be playable, although hardware acceleration would be helpful, I guess.
Moderators: Zorro 2, Moderator Team
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.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.
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.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...
so if you run emulator on CT63 you will be still limited with insufficient ST-RAM <> videl speed?Anima wrote:In fact, almost all the running games are also fully playable. However, the heavy graphics memory usage is still an unsolved problem
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).calimero wrote:so if you run emulator on CT63 you will be still limited with insufficient ST-RAM <> videl speed?Anima wrote:In fact, almost all the running games are also fully playable. However, the heavy graphics memory usage is still an unsolved problem
Thanks for the video. That looks quite promising.Dal wrote:Here's what happens when Metal Slug is run on a Phantom accelerated machine:
https://www.youtube.com/watch?v=FSu8UnC8hOY
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.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?
Very nice. This goes from 'proof of concept' on a standard machine, to playable for a Nemesis/Phantom Falcy.Here's what happens when Metal Slug is run on a Phantom accelerated machine.
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.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.
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:
[...]
Emulation of which part of Amiga: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.
Well able to open an ADF image file and run itEero Tamminen wrote:Emulation of which part of Amiga: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.
http://en.wikipedia.org/wiki/Amiga_500
?
Just CPU, memory setup & sound DMA? Or also graphics? Floppy controller?
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.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