2020-02-02 18:17:31 +00:00
|
|
|
#ifndef _SCROLLING_H
|
|
|
|
#define _SCROLLING_H
|
|
|
|
|
|
|
|
#include "common.h"
|
|
|
|
|
|
|
|
// drawable screen area (only shows 38 x 24)
|
|
|
|
#define COLS 40
|
|
|
|
#define ROWS 25
|
|
|
|
|
|
|
|
extern sbyte scroll_fine_x; // X fine scroll (pixels)
|
|
|
|
extern sbyte scroll_fine_y; // Y fine scroll (pixels)
|
|
|
|
extern byte origin_x; // X scroll origin (columns)
|
|
|
|
extern byte origin_y; // Y scroll origin (rows)
|
|
|
|
extern byte* hidbuf; // hidden screen buffer(s)
|
|
|
|
extern byte* visbuf; // visible screen buffer(s)
|
2020-02-04 17:58:46 +00:00
|
|
|
extern byte colorbuf[COLS*ROWS]; // color RAM buffer
|
2020-02-02 18:17:31 +00:00
|
|
|
extern byte swap_needed; // TRUE if scroll_update() swaps
|
|
|
|
|
|
|
|
// call this at start of program
|
|
|
|
void scroll_setup(void);
|
|
|
|
|
|
|
|
// scroll in X or Y directions
|
2022-08-25 20:52:04 +00:00
|
|
|
void scroll_xy(sbyte delta_x, sbyte delta_y);
|
2020-02-02 18:17:31 +00:00
|
|
|
void scroll_horiz(sbyte delta_x);
|
|
|
|
void scroll_vert(sbyte delta_y);
|
|
|
|
|
2022-07-20 19:32:47 +00:00
|
|
|
// call this right after vblank
|
2020-02-02 18:17:31 +00:00
|
|
|
void scroll_update(void);
|
|
|
|
|
|
|
|
// caller must implement these two
|
|
|
|
void scroll_draw_column(byte col);
|
|
|
|
void scroll_draw_row(byte row);
|
|
|
|
|
2022-08-09 14:47:55 +00:00
|
|
|
|
|
|
|
/* incremental scrolling library */
|
|
|
|
extern int pixofs_x; // X scroll pixel offset
|
|
|
|
extern int pixofs_y; // Y scroll pixel offset
|
2022-08-11 20:27:20 +00:00
|
|
|
extern sbyte fine_correct_x;
|
|
|
|
extern sbyte fine_correct_y;
|
2022-08-09 14:47:55 +00:00
|
|
|
|
|
|
|
void scroll_start(byte dir);
|
|
|
|
void scroll_finish(void);
|
|
|
|
void scroll_refresh(void);
|
|
|
|
|
|
|
|
#define SCROLL_LEFT 1
|
|
|
|
#define SCROLL_RIGHT 2
|
|
|
|
#define SCROLL_UP 4
|
|
|
|
#define SCROLL_DOWN 8
|
|
|
|
|
|
|
|
|
2020-02-02 18:17:31 +00:00
|
|
|
#endif
|