62 lines
2.5 KiB
C
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
|