library(-ish) and utils for programming the Neo-Geo
Assembly C++ Makefile Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
cdfiles
doc
examples
src_68k
src_z80
tools
.editorconfig
.gitignore
.gitmodules
CONTRIBUTING.md
LICENSE
README.md

README.md

freemlib for Neo-Geo

The freemlib for Neo-Geo is a set of functions and tools for those who want to develop for the system in assembly language. Adapting the functions into a library for use with C is planned, but I won't be doing so myself until the codebase is better developed and battle tested.

Status

The primary goal right now is to get the library coded, as well as provide examples that use the library. Overall, the tasks can be broken down as follows:

(All percentage completions are estimates as of 2015/11/13. No project is ever truly finished. πŸ˜‰)

Library

These elements form the core of the freemlib for Neo-Geo.

  • Animation – Sprite animation. 0%.
  • Backgrounds – Routines for background sprites. 0%.
  • Collision – Most every game needs some sort of collision. 0%.
  • Fix – Fix layer functionality. Still needs work, ~23%?
  • Memory Card – Handle Memory Cards (also Neo-Geo CD Backup Memory). 5%, needs testing.
  • Palette – Palette functionality. ~10%.
  • Sound – Fully-featured (FM, SSG, both ADPCM types, CD/DA) Z80 sound engine. 4%.
  • Sprites – General sprite functionality. ~15%?, with restructuring to come.
  • System – Various system functions. 1%.

Am I missing anything? Please let me know. (Input routines for non-standard controllers and for other purposes might be provided later.)

Tools

Various tools to help you produce content for the Neo-Geo. Special consideration should be made for Linux (and OS X) compatibility whenever possible.

Available and/or Finished

WIP

  • FM Studio – On-console utility for testing and developing FM sounds. 1% (earliest stages of development)
  • NeoGeoTracker – On-console tracker and sound driver testbench. 0% (mockups and planning stage, might take a while)
  • and others not listed here...
    • A tool for Fix layer layout, similar to Shiru's NES Screen Tool. 0%
    • A tool for animation data (various tools exist already, I'm aware.) 0%
    • A tool for converting Tiled map data. 0%
    • PC version of NeoGeoTracker. 0%
    • Various sound tools (ADPCM-A/B conversion; tools exist, but need unification.) ?%

Documentation

The black sheep of any programming project, but also necessary because who the hell is going to read a bunch of ASM to figure out the library? My main problem is that I only really want to write it once.

  • Library Docs (text) – The straight dope. See doc/ folder.
  • Library Docs (HTML) – The pretty version. Still very WIP.
  • Neo-Geo Programming Guide – think of the Nerdy Nights (NES) tutorials, but for Neo-Geo. The examples kind of cover this, but aren't nearly as accessible...

Navigation

  • cdfiles/ – Files required for Neo-Geo CD games (aside from IPL.TXT)
  • doc/ – Documentation (both general and freemlib related)
  • examples/ – freemlib Usage Examples
  • src_68k/ – Main freemlib library code.
  • src_z80/ – freemlib sound engine code.
  • tools/ – Various tools.

You should read doc/usage.txt for how to setup a project with the freemlib.

Filing Bugs/Issues

Please use the GitHub bug tracker to file any errors, issues, and/or feature requests.

License

The freemlib for Neo-Geo is licensed under the ISC License. Full terms may be found in the "LICENSE" file. Tools may be licensed differently from the main library, see each project for licensing details.

Contact

The best way to reach me about this project is via IRC:

  • chat.freenode.org – #neogeodev
  • irc.clearimagery.net – #ssc

but if IRC isn't your thing, you might want to try one (or more) of these options:

  • Yaronet forums
  • via e-mail: ajk187 at gmail (bad for attachments; contact me first without them if you want to send any)