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.
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.
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.)
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
- NeoFixFormat – Fix format tiles plugin for YY-CHR.NET. 100%, unless a bug comes up.
- Sailor VROM – V ROM/.PCM file builder and manager. 25%, but usable. (https://github.com/freem/freemlib-neogeo/tree/master/tools/sailorvrom/lua)
- 4BPP SMS/GG/WSC to Neo-Geo ".c0" Format tool – 100% for the time being. (https://github.com/freem/NeoSpriteConv)
- 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.) ?%
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
- 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...
cdfiles/– Files required for Neo-Geo CD games (aside from
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.
Please use the GitHub bug tracker to file any errors, issues, and/or feature requests.
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.
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)