a2bejwld/a2bejwld/dbllores.h

59 lines
2.0 KiB
C

//
// dbllores.h
// a2bejwld
//
// Created by Jeremy Rand on 2016-07-20.
// Copyright © 2016 Jeremy Rand. All rights reserved.
//
#ifndef __a2bejwld__dbllores__
#define __a2bejwld__dbllores__
#include "types.h"
// API
extern void __fastcall__ showDblLoRes(void);
extern void __fastcall__ clearDblLoRes(void);
extern void __fastcall__ unshowDblLoRes(void);
extern void __fastcall__ mixedTextMode(void);
// The Apple //e card does not implement double lores correctly. The colours
// used on the aux bank need to be shifted but the //e card expects unshifted
// colour values (ie the same as those on the main. This function is called
// when the game detects it is not running on a //c or //gs. I would like to
// get_ostype() from the cc65 runtime but it doesn't work reliably for detecting
// the //e card. So I put in my own detection based on the technote. If the
// function detects it is runing on a //e card, it causes the graphics
// routines to use the same colours in the main and aux banks.
extern void __fastcall__ setBuggyDblLoRes(void);
extern void __fastcall__ drawBgSquare(tSquare square);
extern void __fastcall__ drawGem(tSquare square);
extern void __fastcall__ explodeGemFrame1(tSquare square);
extern void __fastcall__ explodeGemFrame2(tSquare square);
extern void __fastcall__ explodeGemFrame3(tSquare square);
extern void __fastcall__ explodeGemFrame4(tSquare square);
extern void __fastcall__ explodeGemFrame5(tSquare square);
extern void __fastcall__ explodeGemFrame6(tSquare square);
extern void __fastcall__ starGem(tSquare square);
extern void __fastcall__ selectSquare(tSquare square);
extern void __fastcall__ drawScore(uint8_t score);
// The following functions take the Y position (0-23) as
// their first argument. The X position (0-39) should
// be in the X register. The gem type should be in the
// Y register.
extern void __fastcall__ drawGemAtXY(uint8_t y);
extern void __fastcall__ drawAndStarGemAtXY(uint8_t y);
#endif /* defined(__a2bejwld__dbllores__) */