-
Notifications
You must be signed in to change notification settings - Fork 3
/
test_3eplus.c
58 lines (50 loc) · 1.25 KB
/
test_3eplus.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include "3eplus.h"
#include "vcs.h"
unsigned char Y;
#ifdef PAL
#define BLANK 48
#define KERNAL (192 + 36)
#define OVERSCAN 36
#else
#define BLANK 40
#define KERNAL 192
#define OVERSCAN 30
#endif
// bank1 tells that this is a variable stored on cartridge in second RAM bank
// With 3E+ bankswitching scheme, each RAM bank is 512 bytes large
bank1 unsigned char color;
// Just to test bankswitching
bank2 void init()
{
}
void main()
{
init();
while(1) {
*VBLANK = 2; // Enable VBLANK
*VSYNC = 2; // Set VSYNC
strobe(WSYNC); // Hold it for 3 scanlines
strobe(WSYNC);
strobe(WSYNC);
*VSYNC = 0; // Turn VSYNC Off
// Blank
*TIM64T = ((BLANK - 3) * 76 + 13) / 64;
// Do some logic here
select_ram(1); // Select the RAM bank so that color variable gets accessible
color = 0;
while (*INTIM);
strobe(WSYNC);
*VBLANK = 0;
// Image
// Do some logic here
for (Y = KERNAL + 1; Y != 0; Y--) {
strobe(WSYNC);
*COLUBK = ++color;
}
// Overscan
*VBLANK = 2; // Enable VBLANK
*TIM64T = (OVERSCAN * 76 + 13) / 64;
// Do some logic here
while (*INTIM);
}
}