Made the old C64 version C64.chr and created a new graphical interface version for the C64 and the Commander X16. Also changed the Oric to be called the atmos since that works better with the build system.
Implementation notes:
- General display uses the Apple II hires mode accessed via custom asm functions.
- Menu display uses the 4 line bottom text option of the Apple II hires mode via cc65 CONIO functions.
- All hires access is byte aligned, therefore the horizontal resolution is 40 (bytes).
- Hires access is done via simple (binary) ROPs (raster operations) by using actual 6502 (immediate) opcodes.
The C64 and Curses implementation both make heavy use of colors while Apple II implementation mustn't depend on (but may benefit from) colors. Therefore the user-operated cursor inverts the border of the current field. It's hard to find a compromise between making the cursor visible well and showing the piece "under" the cursor well. Additionally it is desirable to show different cursor states (empty, invalid, valid). The approach chosen is to have different thicknesses of the inverted border:
- Valid: Thin
- Invalid: Medium
- Empty: Thick
When it comes to showing attackers/defenders (via the keys 'a'/'d') there's no alternative to resorting to colors:
- Attackers: Red
- Defenders: Green
So the only field display variant left is the piece selected for moving. Instead of introducing a third type of highlighting (beside border inversion and coloring) it is simply colored Magenta. The reasoning:
- On a monochrome display the user won't have much fun showing attackers/defenders anyway. And without showing those the selected piece is the only colored (aka striped) piece making it clearly visible.
- On a color display a third color (beside attackers/defenders) works just fine.
As the Apple II doesn't have cursor-up and cursor-down keys the keys 'o' and 'l' work as alternatives to the those cursor keys.
Notes:
- The color isn't usable for this distinction as HCOLOR_ATTACK is used for both scenarios.
- This change doesn't make use of the new distinction on the C64. One option would be to use different brackets for the two scenarios.
Unfortunately cc65 linker configurations tend to need adjustments when upgrading to later cc65 versions. With this change the linker config works with cc65 V2.18.