source-readme.txt
This file is a simple attempt at explaining some subtleties of the NeoPop source code. It will eventually turn into a sort of FAQ.
If you feel I have omitted something that isn't as obvious as I thought it was then let me know! It's difficult to see this project from the point of view of an outsider...
1. Additional Include paths
In order to simplify the core layout and readability, I have chosen to define some additional include paths. These are (for all builds):
Core\,
Core\TLCS900h\,
Core\Z80\
2. The Debugger
A build including the debugger is activated by defining 'NEOPOP_DEBUG' globally. In the Windows port this is done using the project settings, but GCC can use the -D command line option (IIRC).
I don't expect many people to bother porting the Windows debugger - it would require a complete re-write. I'm not sure this is to anyone's advantage because I don't believe there are many people that use it... I may be wrong.
I have tried to make it as easy as possible to remove the debugger from the code base - simply remove the Debugger folder. The "#ifdef NEOPOP_DEBUG" directives will prevent any debugging code from being compiled.
3. ZIP Support
ZIP support (provided by zLIB 1.1.4) can optionally be omitted by changing a #define in 'system_rom.h' and removing the 'zLIB' folder.
4. Flash Support
Flash support can be omitted initially by just returning 'false' when reading and 'true' when writing - this will keep the core happy. I hope that porters can manage the unpredictably long flash files - only an issue for consoles, i'd say. I guess they could be padded out to a fixed 2 / 4 / 8 kb if need be. Or they could be zipped, this crushes the "Sonic" data from 6168 bytes to 309!
5. Porting and Core Consistency
The source code for the O/S specific wrapper should be put into a folder called 'SYSTEM_xxx', where xxx is the name of the system. For example "SYSTEM_LINUX-SDL", "SYSTEM_DC", "SYSTEM_MACOS", etc...
My aim is to have only one commmon core code for all ports. To facilitate this the predefined symbol 'SYSTEM_xxx' should be used to mark out any core componenets that only apply to a single system. Hopefully these can be kept to a minimum, but there may be cause for this approach on some systems.
Makefiles should indicate the port system in their file extension. For example the DreamCast port would have a makefile called: "makefile.dc".
THE CORE IS SUBJECT TO CHANGE AT ANY TIME! The only file to rely on is 'neopop.h', this is the only core file that should be included by a system file. If there is something missing from this file, please e-mail me.
