主题 : 【精品】NDS用NEOGEO模拟器NeoDS(接近完美)
妖 妖
级别: 模拟名流
UID: 32166
精华: 4
发帖: 4918
威望: 5 星
金钱: 45644 浮游币
贡献值: 1679 点
好评度: 7354 点
人气: 760 点
在线时间: 736(时)
注册时间: 2005-06-02
最后登录: 2024-08-06
楼主  发表于: 2008-04-30 13:30

【精品】NDS用NEOGEO模拟器NeoDS(接近完美)

NeoDS - Neo Geo AES/MVS Emulator for Nintendo DS
ingramb has today released a major shocker for the Nintendo DS Emulation Scene and that is a Neo Geo AES/MVS Emulator for Nintendo DS that he has been working on for a year. Games like windjammers, Metal Slug and Fatal Fury work either perfect of near perfect.
Heres the full details
NeoDS v0.1.0 by Ben Ingram
Website: http://groups.google.com/group/neods
If you have questions, READ THIS DOCUMENT FIRST!!! . If you still have questions, email me at ingramb AT gmail DOT com. I will be happy to help, but possibly slightly annoyed if your question is answered in this document.
INTRODUCTION
This is a NeoGeo AES/MVS emulator for the Nintendo DS. It can run all types of NeoGeo roms with some limitations.
Currently emulated:
* M68000 cpu (cyclone)
* Z80 cpu (DrZ80)
* All forms of NeoGeo protection/encryption
* Graphics
* ADPCM audio
* PSG audio
Not emulated:
* FM audio
* Raster effects
* Multiplayer
* Some timings are not that accurate
FM audio has already been done in jEnesisDS, so it is possible in theory. It will be hard to squeeze it into NeoDS, as both the ARM7 and ARM9 are pretty busy. But I will try. Most of the graphics in NeoDS are drawn with textured quads. Emulating raster effects using this method would require more polygons per frame than the DS is capable of (as far as I can tell). It may be possible to emulate raster effects using the DS 2D hardware, but there are lots of reasons why this would be difficult.
USING THE EMULATOR
Required:
* Nintendo DS (lite)
* DLDI compatible flash card
First, you need to patch NeoDS.nds for your DLDI flash card (NOTE - not all flashcards require patching). See here: http://chishm.drunkencoders.com/DLDI/index.html. Please don't email me for help about this, there are plenty of places online that explain how this works.
Next you will need to convert some NeoGeo roms (mslug.zip for example). You also need a bios rom (neogeo.zip). NeoDS uses the same rom sets as MAME, so make sure your games work in MAME before proceeding. Put all the roms you want to convert along with the bios together in a folder. Copy NeoDSConvert.exe into the same folder. Run NeoDSConvert, and it will convert all the NeoGeo roms in that folder. The converted roms will have the *.neo extension.
Copy the DLDI patched NeoDS.nds, and all the *.neo roms into the root of your flashcard. Run NeoDS.nds. The main menu should load, showing you a list of all the roms on your card. Use the arrow keys to select, and press start to choose. The rom should load, and you should be playing. You can load a rom without audio which will improve frame rate, but you won't get any sound (obviously). Once a game is loaded without audio, the only way to get audio back is to reload the game. Some games will freeze with audio disabled, so be warned!
Controls
[Arrow keys] - Arrow keys
[A, B, X, Y] - NeoGeo face buttons
[Start] - Start
[Select] - Coin
The NeoDS gui is controlled with the stylus.
* Video - Video can be normal or scaled. Normal is a cropped screen. Scaled shows the full screen, but scaled down to fit.
* CPU Clock- The NeoGeo cpu can be underclocked. This can actually make some games run faster! It is easier for NeoDS to emulate a slower cpu, and some NeoGeo games don't use the full cpu power anyway. Experiment and see.
* Screen Off - The lower screen can be turned off. Touch anywhere to turn it back on.
* Load rom - Load a new game
Please report any crashes to me. The more info you can give me, the better. Thanks!
ADVANCED
You can run NeoDSConvert from the command line. In this case, it takes up to 2 parameters.
-bios0 use the euro bios
-bios1 use the euro-s1 bios
-bios2 use the us bios
-bios3 use the us-e bios
-bios4 use the asia bios
-bios5 use the japan bios
-bios6 use the japan-s2 bios
-bios7 use the japan-s1 bios
-bios8 use the uni-bios.10 bios
-bios9 use the uni-bios.11 bios
-bios10 use the debug bios
-bios11 use the asia-aes bios
If there is another parameter, it will be interpreted as the name of the game, as given to MAME. In this case, only this rom will be converted.
For example, pretend you want to convert Metal Slug 1, using the japan-s2 bios. Create a new directory (C:\roms). Copy mslug.zip and NeoDsConvert.exe into C:\roms. To open a command line, click start, select "run...", type "cmd", and press enter. Type "cd c:\roms". Press enter. Then type "NeoDSConvert -bios6 mslug". Press enter.
TODO
* Save states
* Faster M68k cpu core
* Improved stability
* FM audio (?)
* Raster effects (?)
* Wifi multiplayer (?)
* Clean up NeoDSConvert source if I feel like it
TECHNICAL NOTES
NeoGeo games can be close to 100MB in size, while the ds only has 4MB of ram. Graphics, sound, and program code all need to be streamed into ram constantly while the emulator is running. NeoDs uses a modified libfat which has a lookup table to vastly speed up seek times. In the future, slot2 ds ram expansion packs could provide some speed up. But they only have 32MB, so games will still have to stream.
The emulator uses a slightly modified version of Cyclone for the m68k core. The memory handlers are all done in assembly code and integrated into the core. The jump table is also compressed using a series of sub jump tables. This uses an extra arm instruction to decode each opcode, but reduces the .nds file size by ~200k, and improves cache utilization. This seems to give a slight speed increase. My feeling is that cpu emulation is heavily memory bound. I think a smaller m68k core that fit mostly into the TCM could be much faster than cyclone, even if it needed more instructions to execute each opcode.
The NeoGeo sprite graphics are all done with textured quads using the ds 3d hardware. The NeoGeo tile layer is done with a ds tile background. Doing raster effects with quads is possible in theory, but changing quads per-scanline would need way more quads per frame than the ds is capable of rendering. 2d sprites could be used instead of quads, but this has several problems. The NeoGeo can render many more sprites than the ds, so it would take a complex hblank handler to swap them on a per-scanline basis. Also, the ds can only address 1024 sprites at once. This corresponds to 256k worth of vram, which is half what I can get using quads.
The NeoGeo adpcm audio is streamed from the card and decoded in software because the NeoGeo's audio format doesn't quite match the ds hardware format. The NeoGeo PSG is mapped directly to the ds PSG hardware. FM audio would probably have to be done on the arm7. But the arm7 has very little memory, and can't afford any slowdown (or else the audio will be choppy). A faster and smaller Z80 core might be needed first.
LICENCE
The gui code is all public domain (all files that begin with gui). The NeoDSConvert code is all public domain, except where the MAME/zlib licenses apply. The emulator code is free to use for non-commercial purposes. Contact me if these terms don't work for you.
I would appreciate credit/thanks in all cases if you use parts of NeoDs, but it's not required. Also, I would discourage the release of modified versions. If you have useful changes, submit them to me, and I'll put them in the official version, with full credit going to you. If you must release your own version, I would encourage you to release the source. But if you really want to release your own closed source version, I won't stop you (just don't try to sell it).
CREDITS
* FinalDave, notaz for Cyclone
* Reesy for DrZ80
* Wintermute for devkitPro toolchain
* chishm for libfat
* MAME for parts of NeoDSConvert
* Minizip used by NeoDSConvert
* GnGeo, FinalBurnAlpha, MAME, MVSPSP for source code reference
* Charles MacDonald for NeoGeo technical documentation
* Alexander Stante for NeoGeo technical documentation
* Brandon Long for a nice small sprintf implementation
* Everyone who answers questions on the gbadev.org forums
* Let me know if you think you should be here!
HISTORY
Project started Summer 2007
v0.1.0 4/29/2008
initial release

------------------------------------------------------------------------------------------------------------
My successfull tries
Lresort : Perfect
Wind Jammer : Perfect
Mslug3 : Perfect, some slowdown
Pulstar : Perfect, 35fps (on level 4) sometimes
Blazing Star : Background problem in some level (in the demo)
Cyber Lips : Perfect
Mark of The Wolf : Perfect, 45 fps on average
Ghost Pilot : Perfect
Baseball Star 2 : Perfect
Last Blade : Perfect, 45 fps on average
Shock trooper 2 : Perfect, 45 fps on average
Wiewpoint : Perfect
Football Frenzy : Perfect
Soccer Brawl : Perfect
other tries are with bad romset !
----------------------------------------------------------------------------------------------------------
So far I have tested these games:
Metal Slug: Works good, but crashes randomly (s)
NEOCUP 98: Menu works, crashes emu before a match starts (s)
KOF97: Works Almost perfectly (a little lag when action gets hectic) (s)
KOF94: Perfect (s)
Puzzle Bobble 2: Perfect (s)
Windjammers: Can't get it to load (s)
Neo Bomberman: Perfect (s)
Samurai Showdown: Perfect (s)
Viewpoint: Perfect (s)
Top Hunter: Perfect (s)
(s)= with sound
---------------------------------------------------------------------------------------------------------
the best way to convert is to make a .txt file
put in the location of NoDsConvert.exe and the
-bios1 e.g:
"C:\Documents and Settings\oem\My Documents\NeoDsConvert.exe -bios1"
then save the text file as a .bat
Then instead of running the command line all the time, all you do is run the .bat
Also a little compat update:
Metal Slug 2: works until you select character, then screen goes black and music repeats (s)
Metal Slug 4: Works good. Suffers from lag mostly during bosses
Perfect settings unsure, changing them around from time to time helps a little (S)
Some advice: Delete your existing non-working .neo files (ones that you didn't make with -bios1) before rebuilding with -bios1
as they will NOT work otherwise!
NeoDS是一款Neo Geo的AES/MVS基板的模拟器,你可以在DS上近乎完美的体验到SNK早期推出的经典游戏,诸如《合金弹头》、《饿狼传说》等经典游戏,年度最强感动之自制软件。
  模拟器的运行速度相当流畅,加上声音也可以接近全速的运行,而目前该模拟器还不支持FM音源,也不支持联机,但是第一个版本就有如此高的完成度,令人十分期待后续的更新版本。
以上是作者Readme文档中提供的转换过程。在实际试用的过程中,经过的几次尝试,提出以下几个要点提供参考。
试用心得:
  1.转换的时候,最好用命令行格式转换。我尝试了几次点击运行,转出的文件都无法运行。最后用命令行才搞定。虽然命令行部分叙述的比较麻烦,但是实际只有一个参数,还是比较简单的。
  2.游戏的ROM需要试用标准的ZIP文件,只要MAME模拟器能正常运行,游戏转换后就可以在该模拟器中运行。
  3.对于可以自动打DIDL补丁的烧录卡,你可以无需转换neods文件。
  4.实际试用的过程中,该模拟器的表现相当完美,加了声音之后也可以接近全速运行,强烈推荐怀旧玩家试用。
使用方法:
  1.将本站下载到的neods压缩包解压,会看到几个文件夹。其中NeoDs.nds文件就是模拟器的主文件。根据使用的烧录卡不同,可以要打相应烧录卡的DIDL补丁。
  2.将模拟器打好补丁之后,我们需要将游戏的ROM转成模拟器支持的格式。解压缩的文件夹中有个名为NeoDsConvert的文件夹,其中有个NeoDsConvert.exe文件,你需要将该文件和MVS基板的BIOS文件“neogeo.zip”和想转换的游戏ROM,放在同一个文件夹下。
  3.点击NeoDsConvert.exe文件,就会弹出命令行窗口,自动将游戏ROM进行转换,转换后的文件的后缀名为neo。
  4.作者也提供了命令行形式的转换形式。比如你想转换合金弹头1,用japan-s2的bios。你可以创建一个新的目录 (C:\roms)。将mslug.zip文件、neogeo.zip文件以及NeoDsConvert.exe都拷贝到C盘roms文件夹中。点击系统的开始按钮,选择“运行...”,输入"cmd",输入回车。在命令行窗口输入"cd c:\roms",按回车,然后输入 "NeoDSConvert -bios6 mslug",然后按回车就可以完成转换。命令行中可以选择的参数如下:
-bios0 use the euro bios(欧版)
-bios1 use the euro-s1 bios
-bios2 use the us bios (美版)
-bios3 use the us-e bios
-bios4 use the asia bios (亚版)
-bios5 use the japan bios (日版)
-bios6 use the japan-s2 bios
-bios7 use the japan-s1 bios
-bios8 use the uni-bios.10 bios
-bios9 use the uni-bios.11 bios
-bios10 use the debug bios (debug版)
-bios11 use the asia-aes bios

  5.将生成的neo文件以及打过补丁的模拟器文件放在烧录卡的TF卡根目录。
  6.之后,就可以将尽情的爽neogeo游戏了。感谢模拟器作者,带给我们这么完美的neogeo模拟器。
凡是出现可以进模拟器,但是游戏不能运行的情况都是因为没正确转换ROM,建议使用命令行进行ROM的转换。
NDS用NEO模拟器NeoDs下载地址:
匿名提取文件连接 http://pickup.mofile.com/2384380323622308
    或登录Mofile,使用提取码 2384380323622308 提取文件

NDS用NEO模拟器NeoDs BIOS下载地址:
匿名提取文件连接 http://pickup.mofile.com/1478154864734389
    或登录Mofile,使用提取码 1478154864734389 提取文件

级别: 模拟菜鸟
UID: 286602
精华: 0
发帖: 32
威望: 0 星
金钱: 182 浮游币
贡献值: 0 点
好评度: 92 点
人气: 5 点
在线时间: 195(时)
注册时间: 2008-05-12
最后登录: 2009-10-02
沙发  发表于: 2008-05-14 14:39

全速运行大好~LZ整理辛苦了