neogeo dev wiki

Discussion in 'Neo Geo Discussion' started by neogeocdworld, Feb 6, 2011.

  1. neogeocdworld

    neogeocdworld Spirited Member

    Joined:
    Apr 15, 2009
    Messages:
    161
    Likes Received:
    0
    hello
    A message of my friend furtek:


    "Hi guys (and girls, if there are any),
    Just to let you know that I recently started a wiki devoted to every technical aspects of the NeoGeo systems on wikia:
    http://neogeodev.wikkii.com/wiki/Main_Page

    I'm aware that the site already has its own wiki, but it doesn't seem much oriented towards electronics and programming.

    Anyone who wants to share his coding tips, snippets, homebrew games/utilites, or knowledge about the hardware is very welcome. I won't act as a mod or generic know-it-all guy as I'm able to accept being wrong about a statement, and know my limits.
    Any edits I'd make on contributions would be formatting and categorizing."
     
    Last edited: Feb 7, 2011
  2. Rawit

    Rawit Spirited Member

    Joined:
    May 24, 2005
    Messages:
    138
    Likes Received:
    0
    Very nice! Nice to see a site where all the Neo Geo dev info is gathered.
     
  3. neogeocdworld

    neogeocdworld Spirited Member

    Joined:
    Apr 15, 2009
    Messages:
    161
    Likes Received:
    0
  4. blastar

    blastar Newly Registered

    Joined:
    Sep 10, 2006
    Messages:
    3
    Likes Received:
    0
    too bad, it's not allowed to upload other files than pictures (png, gif, jpg, jpeg)
     
  5. furrtek

    furrtek Member

    Joined:
    Feb 9, 2011
    Messages:
    5
    Likes Received:
    0
    Hi Blastar, I've added you to the administrators group of the wiki. Uploads are still limited to images files for "security issues" as they say, but I can host some other types on my side if you want (as long as they're not too big).

    I've also been told that you had some knowledge about CDDA playback on the NGCD ? Would you mind answering a few questions about that if it's the case ?

    I've been struggling for quite some time to get a track to be read and still had no luck. I went through the BIOS disassembly and only found a few things about the CDDA flag, Z80 return address, and the same info found in some emulator sources (bios call with command in D0), but that doesn't work.
     
  6. tails92

    tails92 Spirited Member

    Joined:
    Sep 29, 2008
    Messages:
    197
    Likes Received:
    3
    Interesting. Now is there a solid homebrew and open source title that would be good to port on another platform?
     
  7. Piratero

    Piratero Peppy Member

    Joined:
    Feb 28, 2009
    Messages:
    367
    Likes Received:
    8
    Thank you!
     
  8. Azazel

    Azazel Newly Registered

    Joined:
    Apr 6, 2011
    Messages:
    3
    Likes Received:
    0
    Thanks, and questions about getting started in Neo Geo dev

    Hi, thank you neogeocdworld and furtek for creating this fantastic wiki!

    I am currently trying to get started in Neo Geo development and have many, many questions. It's very difficult to find sites which are still maintained, or even forums where one can ask questions regarding this. I would like to write my most pressing questions here, and would be very happy if someone could answer. I'm pretty much stuck at the beginning.

    First about my background:

    My goal is to realize a specific project for the Neo Geo, coding in assembler.

    Near term goal: setting up a toolchain for cross-assembly and tools for sprite-creation etc.

    Long Term goal: I want to rival NG:DEV.TEAM ;-)

    I have programming experience, used to code lots of stuff in Java/C++ and more obscure languages like Prolog, though I am programming mostly Perl/R nowadays, I have some previous exposure to assembly programming but not much.

    I do have some background in M68K assembler, this was for some class during my C.S. master's (10 years back); we assembled on a Sun Sparcstation and sent the program to an attached box which basically had a M68K with some RAM in it and not much else. So it was possible to load the "pure" object code into the CPU.

    What I want to do is: code in assembler, cross-assemble on my PC and then load the executable code into either an Neo Geo emulator for quick testing, and then later burn it on CD for use on an actual Neo Geo CD.

    I have studied the Neo Geo Dev docs by Alexander Stante, and am re-reading my old M68K notes and docs.

    My questions:

    1.) Which assembler is good for this? I was thinking about 'as', the GNU Assembler, would this work and is it a good choice?

    2.) How do I create an executable file from the object code??? This is something where I am really stuck. What I do not understand about the Neo Geo is into which "format" I have to put the assembled code.

    I.e. if I have assembled a program which I wrote in 68K assembly, how can I make it so that the emulator thinks it is a ROM-Image, or how can I build a CD which a physical Neo Geo CD (or CDZ, for that matter) will accept?

    Does it check for file names, or magic headers?! So my question is, how to I get the assembled object-code into the right "file-format"?! (sorry I don't even know if that's the right word for it).

    3.) Is there a good emulator for developing purposes, which one?

    I would be very happy if someone could help me here. I think that after I put up a minimal toolchain so that I can cross-assembleand produce loadable files, the rest will become much easier. I would like to contribute to the wiki after I know more.

    I am also interested in getting into contact with other guys developing for Neo Geo.
     
    Last edited: Apr 6, 2011
  9. furrtek

    furrtek Member

    Joined:
    Feb 9, 2011
    Messages:
    5
    Likes Received:
    0
    Great to hear about you and your projects :)

    The guys that really deserve thankings for the wiki are Smkdan, Kyuusaku, NTF, Channelmaniac and the other few that did quite a lot of experimenting with the NG hardware. They're the ones (along with Charles McDonald) who discovered the important things and led to such detailed information.

    I've mostly reformated already existing documents to make them more "graphical", and adding some of the stuff I did and understood.
    I honestly don't have that much of a solid base for coding since I never had any classes about it, but I'm around bits and bytes for a few years and been writing a few little things for Z80 and 68K based machines, along with classic C (and VB :rolleyes:) tools for PC. Oh and electronics too, I'm supposed to know about it but... Being curious is probably the only thing I can do well.

    Anyways, it'd be great to have another contributor and developer for our beloved Neogeo !

    1) Honeslty, I didn't spend enough time to find the best assembler for the 68K, so I'm just stuck with JAS for now (it has a lot of frustrating quirks which doesn't make it very practical at some times, but it gets the job done).

    There's a short list of tools and assemblers on the wiki if you want to take a look: http://neogeodev.wikkii.com/wiki/Development_tools

    2) The NeoGeo CD simply runs raw 68K binaries, the AES and MVS need byteswapped ones. Having them to boot is just a matter of setting up the interrupt vectors and the ROM header correctly.

    There's also two small pages about this on the wiki:
    http://neogeodev.wikkii.com/wiki/68k_program_header
    http://neogeodev.wikkii.com/wiki/68k_vector_table

    Smkdan recently posted a demo for playing PCM samples with minimal code, which can probably be used as a template:
    http://neogeodev.wikkii.com/wiki/Playing_sound_samples

    3) My favorites emulators are Kawaks for cart systems, and Nebula for CD systems. They all have their advantages and drawbacks, so according to the situation you may have to switch from one to another.

    Here another small wiki page with their capabilities:
    http://neogeodev.wikkii.com/wiki/Emulators

    Some for example only do frame-based emulation, so raster effects don't work. Some are less regarding when considering BIOS calls, so your program will often work on emulators, and crash/reset the real system... The CD system is also often inaccurately emulated (due to the lack of info about some chips)., but it's way enough to run games and programs that don't access system registers directly.

    If you have an msn client or whatever, you can add me: furrtek at hotmail.com or if you happen to be on IRC, I'd be glad to join :)
     
    Last edited: Apr 7, 2011
  10. neogeocdworld

    neogeocdworld Spirited Member

    Joined:
    Apr 15, 2009
    Messages:
    161
    Likes Received:
    0
    thanks to your interest and i will happy to see your project
    Just an correction i am not in fondation of dev wiki, because i am not programmer just an fan so i do a little html page on the neogeo cd

    i contact furrtek for all you demand

    For the neogeo cd image boot,
    you could look inside the VIP 2 of Fabrice Martinez
    http://www.neogeocdworld.info/html/jeux/jeuxamateurs.htm

    For the NeoGeo CD emulation i think neorain are interesting but it's never like original,
    have you an neogeocd console ?
     
  11. Azazel

    Azazel Newly Registered

    Joined:
    Apr 6, 2011
    Messages:
    3
    Likes Received:
    0
    Hi, first, thank you very much for your answers! Happy that I found knowledgeable people to discuss with :)

    I took a look at the sound example from Smkdan. I believe the idea here is to make emulators believe that this is another game rom (Sengoku) so that they can load it... it looks like there are several different files which are binaries, which I don't understand, I thought a ROM has no internal file structure, or is this for different banks?!

    Anyway I also downloaded the ISO of blut engel from http://www.neogeocdworld.info/html/jeux/jeuxamateurs.htm. (extremely cool demo btw).

    With blut engel, it looks like the object code is basically one big file. I wonder how does the Neo Geo CD know that it should boot from this particular one, especially when there are more files? Does this work by file extension, i.e. it tries to boot *.PRG not *.TXT (there are also text files on the disc).

    I could load the blut engel ISO with Nebula; my Neo Geo CDZ does not boot it though.

    I'm not writing the above because I expect you to answer all this; I am just trying to describe which problems I face and I think these and similar questions might be typical for those who are trying to get started.

    So, what I think would be a really cool addition to the Wiki would be an entry where you have an absolute minimal assembler program, spelling out in detail how to assemble it (assembler used, command line parameters), how to build the full CD ISO and which files also need to be included if any, and how to burn it so that it runs on a physical console. Just a suggestion. Please don't get me wrong, I'm absolutely not saying that the Neo Geo Dev Wiki should spell out everything; there is also no need to assume that the readers are utter & complete noobs about programming. However, as the whole topic of developing for Neo Geo is rather obscure, and the available tools are few and are very sparsely documented, I think such a doc would make life much easier. I hope the "CD Hello World" linked to from http://neogeodev.wikkii.com/wiki/Category:HowTo will maybe be like that.

    Getting started is always the hardest part.

    neogeocdworld, yes I own a physical console: Neo Geo CDZ. This is also my target platform.
     
    Last edited: Apr 11, 2011
  12. furrtek

    furrtek Member

    Joined:
    Feb 9, 2011
    Messages:
    5
    Likes Received:
    0
    Oops, I missed an important part in my last reply. As you said, if you want to try AES/MVS programs, you'll have to make a fake romset out of your files to trick the emulators into thinking it's the original game.
    What you want to do is to take a game known to have no protections and big ROMs, because some emulators aren't happy when file sizes in romsets aren't correct. When I use Kawaks with the Super Sidekicks romset for example, I have to pad my P1 file to 512k otherwise it'll crash...

    Also, I don't know if you're familiar with romsets but simply put, they aren't more than zipped packs of ROMs. Since the Neogeo uses separate ones for the 68k code, z80 code, sprites, text, and sound, you always end up with at least 6 files (sprite ROMs go by pairs).

    It's a bit easier when dealing with the Neogeo CD since it can handle a simple filesystem. ROM files end up being almost the same (just a matter of flipping bytes and moving a few addresses). There's always a file named IPL.TXT, which tells the NGCD which files to load first before launching the game. A few details: http://neogeodev.wikkii.com/wiki/IPL_file
    You can always download some early games ISOs to see how they were made, there's also a few other text files which have to be present for the CD to be recognized (ABS.TXT, BIB.TXT...), but that's just to comply with legal stuff, they don't hold useful data.

    Once the game runs, it can ask the BIOS to load/overwrite data from other files. There's no article for that on the wiki for now, but it isn't very complicated.
    The main problem with the NGCD is that there's a very limited amount of memory for loading files: http://neogeodev.wikkii.com/wiki/DRAM
    Most of the time, games need to load SPR, PCM and PRG files (especially for tilemaps).

    About Blut Engel not running on your CDZ: I can't test it for now but it's maybe because of copy protection. The CDZ had additionnal functions for that which the CD1 and 2 models didn't have. Not sure how they work though, some say that it checks if unused sectors are blanked out correctly.

    It's a shame wikis aren't very practical for writing step by step guides, but we'll get a "getting starting" series of articles done someday :) I remember when I first wanted to try making games for the NG... got totally discouraged in a bout a week.
     
    Last edited: Apr 12, 2011
  13. neogeocdworld

    neogeocdworld Spirited Member

    Joined:
    Apr 15, 2009
    Messages:
    161
    Likes Received:
    0
    Hello

    the iso of Blue Engel could be use in NeoGeo CDZ (i test on it), so it's may be a speed burn problem (use the quick less option) or a CD problem (dont' use CDRW)
     
    Last edited: Apr 13, 2011
  14. Azazel

    Azazel Newly Registered

    Joined:
    Apr 6, 2011
    Messages:
    3
    Likes Received:
    0
    Hi, I tried a couple of CD-Rs without success. One burned CD worked when I run it with Nebula, though, but not in the actual CDZ.

    Which software do use for burning? And does it matter if you choose DAO-SAO, RAW SAO, RAW SAO + SUB, TAO?

    I use Alcohol v7, on Windows 7.
     
  15. neogeocdworld

    neogeocdworld Spirited Member

    Joined:
    Apr 15, 2009
    Messages:
    161
    Likes Received:
    0
    i use Nero with an image burn
     
  16. cdoty

    cdoty Gutsy Member

    Joined:
    Mar 23, 2005
    Messages:
    413
    Likes Received:
    2
    Wow, amazing work. The layout is nice, and the technical descriptions are well done.
     
  17. cdoty

    cdoty Gutsy Member

    Joined:
    Mar 23, 2005
    Messages:
    413
    Likes Received:
    2
    1) Yes, the GNU 68k toolchain works nicely for Neo Geo development.

    2) Here's a couple of links to get started with http://frogfeast.rastersoft.net/NeoGeoSrc.html and http://frogfeast.rastersoft.net/NeoGeoCDSrc.html

    3) Mame or Mess, with the debugger compiled in, is a great way to debug Neo Geo projects. Mame supports MVS Mess supports AES and should one day support Neo Geo CD.
     
sonicdude10
Draft saved Draft deleted
Insert every image as a...
  1.  0%

Share This Page