Open Fabrizio-Caruso opened 1 year ago
Thank you for your interest in this project.
I plan to integrate this project into CC65 at some point in the future, but as of now, I'm afraid it's not yet stable enough.
Original documentation for ORAO is severely lacking in details and has a lot of errors, so I've resorted to disassembling ROM images, and mapping entrypoints, which is a slow and tedious process.
ORAO has 2 different ROMs v.102 and v.103 which are incompatible (routines have different addresses). I'm not sure how popular is v.102, because company (PEL Varaždin) offered free replacement to v.103.
ORAO has no graphics chips, so all graphics and text drawing routines are implemented in software.
All ORAO text routines expect 0x04 at the end of string, while C uses 0x00. (puts.s) I've solved this by writing _orao_puts
in C which uses 0x00 as terminating character, but calls original ORAO_SYS_PUTC
in ROM.
Upon inspection of ROM disassembly of drawing routines, I've found that they are unoptimized and slow (character drawing inner loop even contains noops??). But I don't have access to real hardware, so I cannot exclude that these noops are really necessary because of some hardware timing issue.
At this point I'm not sure which route to take:
@shokre I understand your point. I would suggest that you do not wait for the perfect work because if you ever integrate your work into CC65, I would be able (after some work on how to do input/output) to compile all my Cross-Lib games (currently 6 + 1 to be released soon) for the ORAO and more people would be interested into trying it out on possibly the real hardware.
Hi again @shokre, I invite you again to integrate a very minimal version into cc65. cc65 already contains targets with a minimal library with almost no input/output routines (e.g. Supervision, Atari 2600, etc.) and other people have been motivated to improve/debug them. In any case, you will probably get feed-back from other people. For instance I would be able to use it more easily because I am already using cc65 and I am not sure how to use standard cc65 with your fork at the same time in my Cross-Lib project.
I agree. It seems that I should integrate a minimum viable implementation. I just need to get myself familiar with cc65 requirements for a platform merge request.
As to your question on how to use it with existing cc65: this is not actually a fork of cc65 - this works alongside existing cc65 install by using custom config and orao.lib
binary to link against (see: https://github.com/shokre/orao-cc65/blob/master/examples/shared.mk)
Custom config is also tailored for creating .prg files which can be used (and only used, AFAICT) by my modified Orao emulator: https://github.com/shokre/OraoPy
Hi again! If this already works with the latest cc65, what makes the full integration hard to implement?
Hi, I would like to use your work in my project (https://github.com/Fabrizio-Caruso/CROSS-LIB), which uses the very latest versions of CC65. Since Cross-Lib supports the most up to date CC65 versions, it would be more convenient for me to use the official CC65 versions.
Could you please integrate your work in CC65?