First Commit

This commit is contained in:
Arne van Iterson 2020-10-11 12:45:50 +02:00
commit 6758d0d946
23 changed files with 5838 additions and 0 deletions

31
autotester.json Normal file
View File

@ -0,0 +1,31 @@
{
"rom": "84pce_515.rom",
"transfer_files": [
"bin/DEMO.8xp"
],
"target": {
"name": "DEMO",
"isASM": true
},
"sequence": [
"action|launch",
"hashWait|1",
"key|clear",
"hashWait|2"
],
"hashes": {
"1": {
"description": "Make sure the sprite is displayed",
"start": "vram_start",
"size": "vram_8_size",
"expected_CRCs": [ "F9825FDD" ]
},
"2": {
"description": "Back to the home screen (exit check)",
"start": "vram_start",
"size": "vram_16_size",
"expected_CRCs": [ "FFAF89BA", "101734A5", "9DA19F44" ]
}
}
}

BIN
bin/DVDASM.8xp Normal file

Binary file not shown.

BIN
bin/DVDASM.bin Normal file

Binary file not shown.

48
bin/DVDASM.map Normal file
View File

@ -0,0 +1,48 @@
Segment Base Top High Length
-------- ------ ------ ------ -------
icon D1A882 D1A882 0h
launcher D1A882 D1A8DA 58h
libs D1A8DA D1A917 3Dh
startup D1A917 D1A956 3Fh
cleanup D1A956 D1A96A 14h
exit D1A96A D1A970 6h
code D1A970 D1AB9C 22Ch
data D1AB9C D1BB40 FA4h
strsect D1BB40 D1BB40 0h
text D1BB40 D1BB42 2h
bss D031F6 D031F6 D13FD6 0h
header D1A87F D1A882 3h
Label Value
------------------------- ------
_os_DisableHomeTextBuffer = D1A970
_os_EnableHomeTextBuffer = D1A982
_random = D1A994
__state = D1AB9C
__frameset0 = D1A9EB
__frameset = D1A9F6
__irems = 00016C
__icmpzero = 000138
__setflag = 000218
_rand = D1AA04
__findlibload = D1A882
__ccleanup = D1A956
_errno = D008DC
_init = D1A882
_exit = D1A96C
__exit = D1A945
__exitsp = D1A945
__errsp = D1A945
_dvd_data = D1ABCE
_logo_gfx_pal = D1BB20
_main = D1AA5E
_random_palette = D1AA38
_draw_sprite = D1AA11
_gfx_Begin = D1A8ED
_gfx_End = D1A8F1
_gfx_SetPalette = D1A8F5
_gfx_FillScreen = D1A8F9
_gfx_SetDraw = D1A8FD
_gfx_Blit = D1A901
_gfx_Sprite = D1A905
_kb_Scan = D1A913

15
makefile Normal file
View File

@ -0,0 +1,15 @@
# ----------------------------
# Set NAME to the program name
# Set ICON to the png icon file name
# Set DESCRIPTION to display within a compatible shell
# Set COMPRESSED to "YES" to create a compressed program
# ----------------------------
NAME ?= DVDASM
COMPRESSED ?= NO
ICON ?= iconc.png
DESCRIPTION ?= "C SDK Demo"
# ----------------------------
include $(CEDEV)/include/.makefile

26
obj/gfx/colour.src Normal file
View File

@ -0,0 +1,26 @@
; Zilog eZ80 ANSI C Compiler Release 3.4
; -optsize -noreduceopt -nomodsect -peephole -globalopt
; -localcse -const=ROM
FILE "SRC\GFX\COLOUR.C"
.assume ADL=1
SEGMENT DATA
_colour_data:
DB 3
DB 3
DB 34
DB 40
DB 38
DB 37
DB 41
DB 35
DB 39
DB 36
DB 0
XDEF _colour_data
; 1 // convpng v7.2
; 2 #include <stdint.h>
; 3 #include "logo_gfx.h"
; 4
; 5 // 8 bpp image
; 6 uint8_t colour_data[11] = {
END

3937
obj/gfx/dvd.src Normal file

File diff suppressed because it is too large Load Diff

30
obj/gfx/logo_gfx.src Normal file
View File

@ -0,0 +1,30 @@
; Zilog eZ80 ANSI C Compiler Release 3.4
; -optsize -noreduceopt -nomodsect -peephole -globalopt
; -localcse -const=ROM
FILE "SRC\GFX\LOGO_GFX.C"
.assume ADL=1
SEGMENT DATA
_logo_gfx_pal:
DW 65535
DW 0
DW 60609
DW 0
DW 32356
DW 0
DW 345
DW 0
DW 53943
DW 0
DW 33291
DW 0
DW 43285
DW 0
DW 663
DW 0
XDEF _logo_gfx_pal
; 1 // convpng v7.2
; 2 #include <stdint.h>
; 3 #include "logo_gfx.h"
; 4
; 5 uint16_t logo_gfx_pal[8][2] = {
END

1041
obj/gfx/ubuntu.src Normal file

File diff suppressed because it is too large Load Diff

372
obj/main.src Normal file
View File

@ -0,0 +1,372 @@
; Zilog eZ80 ANSI C Compiler Release 3.4
; -optsize -noreduceopt -nomodsect -peephole -globalopt
; -localcse -const=ROM
FILE "SRC\MAIN.C"
.assume ADL=1
SEGMENT CODE
; 1 #include <stdbool.h>
; 2 #include <stddef.h>
; 3 #include <stdint.h>
; 4 #include <tice.h>
; 5
; 6 #include <math.h>
; 7 #include <stdio.h>
; 8 #include <stdlib.h>
; 9 #include <string.h>
; 10
; 11 #include <graphx.h>
; 12 #include <keypadc.h>
; 13
; 14 /* Include the sprite data */
; 15 #include "gfx/logo_gfx.h"
; 16
; 17 /* Function for drawing the main sprite */
; 18 void draw_sprite(int x, int y)
; 19 {
_draw_sprite:
CALL __frameset0
; 20 /* Fill the screen with color index 0
; 21 /* Note that this is a super inefficient way to
; 22 /* redraw, but it demonstrates a simple way of clearing past data */
; 23 // gfx_FillScreen(0xFF);
; 24
; 25 /* Draw a bunch of different styled sprites on the screen */
; 26
; 27 gfx_Sprite(dvd, x, y);
LD BC,(IX+9)
PUSH BC
LD BC,(IX+6)
PUSH BC
LD BC,_dvd_data
PUSH BC
CALL _gfx_Sprite
POP BC
POP BC
POP BC
; 28
; 29 /* Copy the buffer to the screen */
; 30 gfx_BlitBuffer(); // This is the same as gfx_Blit(gfx_buffer)
LD BC,1
PUSH BC
CALL _gfx_Blit
POP BC
; 31 }
LD SP,IX
POP IX
RET
;**************************** _draw_sprite ***************************
;Name Addr/Register Size Type
;_gfx_Blit IMPORT ----- function
;_dvd_data IMPORT 3922 variable
;_gfx_Sprite IMPORT ----- function
;y IX+9 3 parameter
;x IX+6 3 parameter
; Stack Frame Size: 12 (bytes)
; Spill Code: 0 (instruction)
; 32
; 33 void random_palette() {
_random_palette:
; 34 gfx_SetPalette(logo_gfx_pal[(rand() % (7 - 0 + 1))], sizeof_logo_gfx_pal, 0);
LD BC,0
PUSH BC
LD BC,86
PUSH BC
CALL _rand
LD BC,8
CALL __irems
ADD HL,HL
ADD HL,HL
LD BC,_logo_gfx_pal
ADD HL,BC
PUSH HL
CALL _gfx_SetPalette
POP BC
POP BC
POP BC
; 35 }
RET
;**************************** _random_palette ***************************
;Name Addr/Register Size Type
;_rand IMPORT ----- function
;_logo_gfx_pal IMPORT 32 variable
;_gfx_SetPalette IMPORT ----- function
; Stack Frame Size: 6 (bytes)
; Spill Code: 0 (instruction)
; 36
; 37 void main(void)
; 38 {
_main:
LD HL,-11
CALL __frameset
; 39 /* Coordinates used for the sprite */
; 40 int x, y;
; 41 bool gravity[2] = {
; 42 true,
; 43 true
; 44 };
LEA DE,IX+-8
LD HL,_0temp2
LD BC,2
LDIR
; 45 float angle;
; 46
; 47 /* Initialize the 8bpp graphics */
; 48 gfx_Begin();
CALL _gfx_Begin
; 49
; 50 /* Set up the palette for our sprites */
; 51 random_palette();
CALL _random_palette
; 52
; 53 /* Start at 0, 0 */
; 54 x = 0;
LD BC,0
LD (IX+-6),BC
; 55 y = (rand() % (LCD_HEIGHT - 0 + 1));
CALL _rand
LD BC,241
CALL __irems
LD (IX+-3),HL
; 56
; 57 gfx_SetDrawBuffer();
LD BC,1
PUSH BC
CALL _gfx_SetDraw
POP BC
; 58
; 59 gfx_FillScreen(1);
LD BC,1
PUSH BC
CALL _gfx_FillScreen
POP BC
; 60
; 61 draw_sprite(x, y);
LD BC,(IX+-3)
PUSH BC
LD BC,0
PUSH BC
CALL _draw_sprite
POP BC
POP BC
; 62
; 63 do
L_27:
; 64 {
; 65 /* Scan the keypad to update kb_Data */
; 66 kb_Scan();
CALL _kb_Scan
; 67
; 68 if ((x + dvd_width) <= LCD_WIDTH && x >= 0)
LD IY,(IX+-6)
LEA BC,IY+80
LD HL,320
OR A,A
SBC HL,BC
CALL __setflag
JP M,L_13
LD HL,(IX+-6)
CALL __icmpzero
CALL __setflag
JP M,L_13
; 69 {
; 70 if (gravity[0])
LD A,(IX+-8)
OR A,A
JR Z,L_7
; 71 {
; 72 x++;
LD BC,(IX+-6)
INC BC
LD (IX+-6),BC
; 73 }
; 74 else
JR L_25
L_7:
; 75 {
; 76 x--;
LD BC,(IX+-6)
DEC BC
LD (IX+-6),BC
; 77 }
; 78 }
; 79 else
JR L_25
L_13:
; 80 {
; 81 random_palette();
CALL _random_palette
; 82 if (gravity[0])
LD A,(IX+-8)
OR A,A
JR Z,L_11
; 83 {
; 84 gravity[0] = false;
LD (IX+-8),0
; 85 x--;
LD BC,(IX+-6)
DEC BC
LD (IX+-6),BC
; 86 }
; 87 else
JR L_25
L_11:
; 88 {
; 89 gravity[0] = true;
LD (IX+-8),1
; 90 x++;
LD BC,(IX+-6)
INC BC
LD (IX+-6),BC
; 91 }
; 92 }
L_25:
; 93
; 94 if ((y + dvd_height) <= LCD_HEIGHT && y >= 0)
LD IY,(IX+-3)
LEA BC,IY+49
LD HL,240
OR A,A
SBC HL,BC
JP M,L_24
LD HL,(IX+-3)
CALL __icmpzero
CALL __setflag
JP M,L_24
; 95 {
; 96 if (gravity[1])
LEA HL,IX+-8
INC HL
LD A,(HL)
OR A,A
JR Z,L_18
; 97 {
; 98 y++;
LD BC,(IX+-3)
INC BC
LD (IX+-3),BC
; 99 }
; 100 else
JR L_26
L_18:
; 101 {
; 102 y--;
LD BC,(IX+-3)
DEC BC
LD (IX+-3),BC
; 103 }
; 104 }
; 105 else
JR L_26
L_24:
; 106 {
; 107 random_palette();
CALL _random_palette
; 108 if (gravity[1])
LEA BC,IX+-8
INC BC
LD (IX+-11),BC
LD HL,BC
LD A,(HL)
OR A,A
JR Z,L_22
; 109 {
; 110 gravity[1] = false;
LD HL,(IX+-11)
LD (HL),0
; 111 y--;
LD BC,(IX+-3)
DEC BC
LD (IX+-3),BC
; 112 }
; 113 else
JR L_26
L_22:
; 114 {
; 115 gravity[1] = true;
LD HL,(IX+-11)
LD (HL),1
; 116 y++;
LD BC,(IX+-3)
INC BC
LD (IX+-3),BC
; 117 }
; 118 }
L_26:
; 119
; 120 draw_sprite(x, y);
LD BC,(IX+-3)
PUSH BC
LD BC,(IX+-6)
PUSH BC
CALL _draw_sprite
POP BC
POP BC
; 121 } while (kb_Data[6] != kb_Clear);
LD A,(16056348)
CP A,64
JR NZ,L_27
; 122
; 123 /* Close the graphics */
; 124 gfx_End();
CALL _gfx_End
; 125 }
LD SP,IX
POP IX
RET
;**************************** _main ***************************
;Name Addr/Register Size Type
;_gfx_End IMPORT ----- function
;_kb_Scan IMPORT ----- function
;_gfx_FillScreen IMPORT ----- function
;_gfx_SetDraw IMPORT ----- function
;_rand IMPORT ----- function
;_gfx_Begin IMPORT ----- function
;_0temp2 STATIC 2 variable
;G_0 IX-11 3 variable
;gravity IX-8 2 variable
;x IX-6 3 variable
;y IX-3 3 variable
; Stack Frame Size: 17 (bytes)
; Spill Code: 0 (instruction)
SEGMENT TEXT
_0temp2:
DB 1
DB 1
XREF _logo_gfx_pal:ROM
XREF _dvd_data:ROM
XREF _kb_Scan:ROM
XREF _gfx_Sprite:ROM
XREF _gfx_Blit:ROM
XREF _gfx_SetDraw:ROM
XREF _gfx_FillScreen:ROM
XREF _gfx_SetPalette:ROM
XREF _gfx_End:ROM
XREF _gfx_Begin:ROM
XREF _rand:ROM
XREF __irems:ROM
XREF __frameset0:ROM
XREF __frameset:ROM
XREF __setflag:ROM
XREF __icmpzero:ROM
XDEF _main
XDEF _random_palette
XDEF _draw_sprite
END

10
readme.md Normal file
View File

@ -0,0 +1,10 @@
### GraphX/KeypadC Sprite with Keys
Demonstrates using the GraphX and KeypadC library together to move a sprite
![Screenshot](screenshot.gif)
---
This demo is a part of the C SDK Toolchain for use on the CE.

BIN
screenshot.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

11
src/gfx/colour.c Normal file
View File

@ -0,0 +1,11 @@
// convpng v7.2
#include <stdint.h>
#include "logo_gfx.h"
// 8 bpp image
uint8_t colour_data[11] = {
3,3, // width,height
0x22,0x28,0x26,
0x25,0x29,0x23,
0x27,0x24,0x00,
};

BIN
src/gfx/colour.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 B

5
src/gfx/convpng.ini Normal file
View File

@ -0,0 +1,5 @@
#GroupC : logo_gfx
#TransparentColor : 255,255,255
#PNGImages :
dvd
colour

15
src/gfx/convpng.log Normal file
View File

@ -0,0 +1,15 @@
opened convpng.ini
--- logo_gfx (C) ---
building palette with [256] available indices ...
built palette with [43] indices.
palette quality : 100.00%
transparent color index : 0
transparent color : 0xFFFF
2:
dvd : 100.00%
colour : 100.00%
converted in 0 s
finished!

57
src/gfx/dvd.c Normal file
View File

@ -0,0 +1,57 @@
// convpng v7.2
#include <stdint.h>
#include "logo_gfx.h"
// 8 bpp image
uint8_t dvd_data[3922] = {
80,49, // width,height
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x01,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x17,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x15,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x14,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x16,0x1D,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x01,0x01,0x01,0x01,0x10,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x06,0x01,0x00,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x13,0x07,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x01,0x00,0x00,0x01,0x00,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x05,0x00,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
};

BIN
src/gfx/dvd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 958 B

53
src/gfx/logo_gfx.c Normal file
View File

@ -0,0 +1,53 @@
// convpng v7.2
#include <stdint.h>
#include "logo_gfx.h"
uint16_t logo_gfx_pal[8][2] = {
{
// White
0xFFFF, // 33 :: rgb(255,255,255)
0x0000, // 42 :: rgb(0,0,0)}
},
{
0xECC1, // 33 :: rgb(255,255,255)
0x0000, // 42 :: rgb(0,0,0)}
},
{
0x7E64, // 33 :: rgb(255,255,255)
0x0000, // 42 :: rgb(0,0,0)}
},
{
0x0159, // 33 :: rgb(255,255,255)
0x0000, // 42 :: rgb(0,0,0)}
},
{
0xD2B7, // 33 :: rgb(255,255,255)
0x0000, // 42 :: rgb(0,0,0)}
},
{
0x820B, // 33 :: rgb(255,255,255)
0x0000, // 42 :: rgb(0,0,0)}
},
{
0xA915, // 33 :: rgb(255,255,255)
0x0000, // 42 :: rgb(0,0,0)}
},
{
0x0297, // 33 :: rgb(255,255,255)
0x0000, // 42 :: rgb(0,0,0)}
},
};
// uint16_t logo_gfx_pal[2] = {
// 0xFFFF, // 33 :: rgb(255,255,255)
// 0x0000, // 42 :: rgb(0,0,0)
// };
// 0xECC1, // 34 :: rgb(222,53,11)
// 0x0000, // 35 :: rgb(0,0,0)
// 0x7E64, // 36 :: rgb(255,153,31)
// 0x0159, // 37 :: rgb(0,82,204)
// 0xD2B7, // 38 :: rgb(165,173,186)
// 0x820B, // 39 :: rgb(0,135,90)
// 0xA915, // 40 :: rgb(82,67,170)
// 0x0297, // 41 :: rgb(0,163,191)

22
src/gfx/logo_gfx.h Normal file
View File

@ -0,0 +1,22 @@
// convpng v7.2
// this file contains all the graphics sources for easy inclusion in a project
#ifndef __logo_gfx__
#define __logo_gfx__
#include <stdint.h>
#define logo_gfx_transparent_color_index 0
#define dvd_width 80
#define dvd_height 49
#define dvd_size 3922
extern uint8_t dvd_data[3922];
#define dvd ((gfx_sprite_t*)dvd_data)
#define colour_width 3
#define colour_height 3
#define colour_size 11
extern uint8_t colour_data[11];
#define colour ((gfx_sprite_t*)colour_data)
#define sizeof_logo_gfx_pal 86
extern uint16_t logo_gfx_pal[8][2];
#endif

40
src/gfx/ubuntu.c Normal file
View File

@ -0,0 +1,40 @@
// convpng v7.2
#include <stdint.h>
#include "logo_gfx.h"
// 8 bpp image
uint8_t ubuntu_data[1026] = {
32,32, // width,height
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2B,0x66,0x48,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x33,0x22,0x22,0x27,0x40,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x80,0x61,0x6E,0x2E,0xB0,0x34,0xC4,0x22,0x22,0x22,0x22,0x47,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA2,0x30,0x24,0x24,0x24,0x24,0x24,0xC2,0xC7,0x22,0x22,0x22,0x22,0x67,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA4,0x00,0xA6,0x35,0x24,0x24,0x24,0x24,0x24,0xBE,0x25,0xBC,0x22,0x22,0xB1,0x79,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA7,0xA5,0x2F,0x00,0xA9,0x24,0x24,0x24,0x24,0x24,0x35,0xC3,0xC0,0xC6,0xBF,0xB5,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x29,0x23,0x2C,0x00,0xAB,0xA1,0x95,0xAD,0xB3,0x3A,0x24,0xC5,0xBB,0xC8,0xB6,0x31,0x7A,0x25,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x72,0x23,0x23,0x28,0x36,0x00,0x9D,0x7E,0x00,0x00,0xB4,0xC1,0xBD,0x24,0x24,0xAE,0x24,0x24,0x5C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB9,0x23,0x23,0x23,0x23,0xA8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0xB2,0xAF,0x24,0x24,0x24,0x75,0x69,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCD,0x29,0x23,0x23,0x23,0x84,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x24,0x24,0x24,0x24,0x2E,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xDB,0x23,0x23,0x23,0x28,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x74,0x24,0x24,0x24,0x30,0x25,0x00,0x00,
0x00,0x00,0x00,0xAC,0xCB,0xCC,0xDC,0x00,0x37,0x23,0x23,0xBA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x24,0x24,0x24,0x24,0x34,0x00,0x00,
0x00,0x00,0x2D,0xCA,0x24,0x24,0xD5,0x39,0xD1,0xD7,0x23,0xCF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x91,0x99,0x8B,0x9C,0x90,0x81,0x00,0x00,
0x00,0x00,0xA3,0x24,0x24,0x24,0x24,0xDD,0x00,0xD3,0x23,0xD4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x31,0x24,0x24,0x24,0x24,0xD8,0x00,0xD0,0x23,0xC9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x93,0x86,0x98,0x7D,0x76,0x00,0x00,
0x00,0x00,0x25,0xAA,0x24,0x24,0x3A,0xDA,0xD9,0xD6,0x23,0xB7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x68,0x22,0x22,0x22,0x22,0x6D,0x00,0x00,
0x00,0x00,0x00,0x2D,0x39,0xB8,0xCE,0x38,0xD2,0x23,0x23,0xA0,0x6A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x22,0x22,0x22,0x6F,0x2B,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x23,0x23,0x23,0x23,0x4E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x26,0x22,0x22,0x22,0x65,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x25,0x9F,0x23,0x23,0x23,0x23,0x56,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9A,0x70,0x22,0x22,0x22,0x49,0x44,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0x23,0x23,0x23,0x23,0x55,0x00,0x5B,0x25,0x00,0x00,0x00,0x32,0x92,0x27,0x22,0x22,0x22,0x22,0x41,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x57,0x23,0x23,0x4D,0x25,0x5A,0x52,0x63,0x6B,0x77,0x8F,0x9E,0x22,0x22,0x26,0x27,0x22,0x5E,0x42,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x2C,0x2A,0x4F,0x00,0x58,0x22,0x22,0x22,0x22,0x22,0x22,0x85,0x83,0x32,0x8C,0x8E,0x60,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x53,0x00,0x54,0x59,0x22,0x22,0x22,0x22,0x22,0x87,0x97,0x9B,0x96,0x89,0x71,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x51,0x26,0x22,0x22,0x22,0x22,0x22,0x94,0x25,0x8D,0x23,0x23,0x29,0x4A,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x46,0x4B,0x5D,0x62,0x33,0x7B,0x8A,0x23,0x23,0x23,0x23,0x43,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2F,0x28,0x23,0x23,0x23,0x3C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x23,0x23,0x2A,0x3D,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x45,0x3B,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

BIN
src/gfx/ubuntu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

125
src/main.c Normal file
View File

@ -0,0 +1,125 @@
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <tice.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <graphx.h>
#include <keypadc.h>
/* Include the sprite data */
#include "gfx/logo_gfx.h"
/* Function for drawing the main sprite */
void draw_sprite(int x, int y)
{
/* Fill the screen with color index 0
/* Note that this is a super inefficient way to
/* redraw, but it demonstrates a simple way of clearing past data */
// gfx_FillScreen(0xFF);
/* Draw a bunch of different styled sprites on the screen */
gfx_Sprite(dvd, x, y);
/* Copy the buffer to the screen */
gfx_BlitBuffer(); // This is the same as gfx_Blit(gfx_buffer)
}
void random_palette() {
gfx_SetPalette(logo_gfx_pal[(rand() % (7 - 0 + 1))], sizeof_logo_gfx_pal, 0);
}
void main(void)
{
/* Coordinates used for the sprite */
int x, y;
bool gravity[2] = {
true,
true
};
float angle;
/* Initialize the 8bpp graphics */
gfx_Begin();
/* Set up the palette for our sprites */
random_palette();
/* Start at 0, 0 */
x = 0;
y = (rand() % (LCD_HEIGHT - 0 + 1));
gfx_SetDrawBuffer();
gfx_FillScreen(1);
draw_sprite(x, y);
do
{
/* Scan the keypad to update kb_Data */
kb_Scan();
if ((x + dvd_width) <= LCD_WIDTH && x >= 0)
{
if (gravity[0])
{
x++;
}
else
{
x--;
}
}
else
{
random_palette();
if (gravity[0])
{
gravity[0] = false;
x--;
}
else
{
gravity[0] = true;
x++;
}
}
if ((y + dvd_height) <= LCD_HEIGHT && y >= 0)
{
if (gravity[1])
{
y++;
}
else
{
y--;
}
}
else
{
random_palette();
if (gravity[1])
{
gravity[1] = false;
y--;
}
else
{
gravity[1] = true;
y++;
}
}
draw_sprite(x, y);
} while (kb_Data[6] != kb_Clear);
/* Close the graphics */
gfx_End();
}