Hi Tari! In the interim, I've pushed my commits to PrizmSDK using your latest, with NESizm and Prizoop working with it.
I did encounter a number of issues I had to work around:
1) There is a pretty big bug related to the memcpy builtin I think. If you revert
my change to imageDraw.cpp in my latest commit to NESizm, this image blit function that uses memcpy fails at O2 and Os but does not fail at O3. I prefer O2 for the rest of the application performance so I committed this work around until we can figure it out. There's another memcpy fixed in that commit but it was a bug with loading settings that was much more subtle, appears to be the same issue though.
2) In the
Prizoop makefile for my latest commit, if I don't add -std=c++11 to my C++ compiler flags, it outputs a linker error on the delete() intrinsic (I'm not entirely sure, just a hunch) due to a simple struct delete I am doing in cgbCleanup() in cgb.cpp. So I'm guessing the default C++ std needs some additional library or defined function to always work properly.
3) I'm still not clear on why malloc() and free() do not work with the new SDK. Both projects are defining malloc as sys_malloc and free as sys_free. This isn't ideal and fairly non-portable IMO. Am I missing something? See either project's
change to platform.h
4) With the way RM is being defined per platform, rm and rmdir would cause make to fail pretty easily on a second build attempt, because these calls toss an error if the file doesn't exist and halts the makefile. See my changes to prizm_rules to those defined functions for something that works, but I don't think is ideal.
5) The
Bfile_GetBlockAddress sys call is vital to file system performance in real time applications and should be included in the SDK.
6)
This commit is a simple CG-20 crash fix for sprite routines for any project built against the SDK. 0xA8000000 hard coding should be highly discouraged.