joeylib2/examples/spacetaxi/stC64Data.h

62 lines
2.5 KiB
C

// Generated by assets/genC64Data.py from stuff/spacetaxi/raw.bin.
// Do not hand-edit; re-run the generator.
#ifndef ST_C64_DATA_H
#define ST_C64_DATA_H
#include <stdint.h>
// The game's custom character set ($2800-$2FFF): 256 glyphs x 8 rows,
// bit 7 = leftmost pixel. Used to paint the screen AND for the
// sprite-to-background collision test (a set bit is background data).
#define ST_CHARSET_CHARS 256u
extern const uint8_t kStCharset[ST_CHARSET_CHARS][8];
// Standard sprite bitmaps (VIC bank 0, block ptr * 64). 21 rows x 3
// bytes. Index = ptr - ST_SPRITE_PTR_FIRST.
#define ST_SPRITE_PTR_FIRST 0xC0u
#define ST_SPRITE_PTR_LAST 0xECu
#define ST_SPRITE_COUNT 45u
#define ST_SPRITE_BYTES 63u
extern const uint8_t kStSpriteBitmaps[ST_SPRITE_COUNT][ST_SPRITE_BYTES];
// Demo-mode RNG lookup ($446A): rnd = table[t1] + t2 (see stSim.c).
#define ST_RNG_TABLE_SIZE 64u
extern const uint8_t kStRngTable[ST_RNG_TABLE_SIZE];
// SID SFX programs, 9 bytes each, in $42E9 order: freq lo, freq hi,
// pulse lo, pulse hi, control, AD, SR, release ticks, voice index.
typedef enum {
ST_SFX_GEAR, // $6410 landing gear toggle ($63DD)
ST_SFX_CASH, // $6DBB refuel ka-ching ($6E5B)
ST_SFX_FUEL_LOW, // $6DC4 fuel below 3 cells ($6EBD)
ST_SFX_FUEL_FULL, // $6DCD tank full ($6E9E)
ST_SFX_LAND_HARD, // $6DD6 hard landing ($6520)
ST_SFX_IMPACT, // $6DDF wreck hits the floor ($6AE1)
ST_SFX_LAND_SOFT, // $6DE8 soft landing ($650F)
ST_SFX_CRASH, // $6DF1 crash start ($6A56)
ST_SFX_COUNT
} StSfxE;
#define ST_SFX_PROGRAM_BYTES 9u
extern const uint8_t kStSfxPrograms[ST_SFX_COUNT][ST_SFX_PROGRAM_BYTES];
// Engine-flame cel pointer by direction mask ($6DB0, 1=UP 2=DOWN 4=LEFT
// 8=RIGHT); 0 = no cel for that combination.
extern const uint8_t kStFlameCelByDirMask[16];
// Level-intro star velocities per sprite 0..6 ($450C / $4513).
extern const int8_t kStIntroStarDx[7];
extern const int8_t kStIntroStarDy[7];
// Cross-segment-safe accessors (see stC64Data.c): reach the tables above
// by an inter-segment call on the IIgs, where a direct 2-byte data
// reference from another bank is not relocatable.
const uint8_t *stC64Charset(void);
const uint8_t *stC64SpriteBitmap(uint8_t idx);
uint8_t stC64RngByte(uint8_t idx);
const uint8_t *stC64SfxProgram(uint8_t idx);
uint8_t stC64FlameCel(uint8_t dirMask);
int8_t stC64IntroStarDx(uint8_t idx);
int8_t stC64IntroStarDy(uint8_t idx);
#endif