Z-Pocket Game Pro(ZPG Pro)
sdltest
main.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdint.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <string.h>
#include <linux/fb.h>
#include <SDL.h>
#include <SDL_image.h>
#include <SDL_ttf.h>
int main(int argc, char* args[])
{
SDL_Window *sdlWindow;
SDL_Renderer *sdlRenderer;
SDL_Init(SDL_INIT_VIDEO);
SDL_CreateWindowAndRenderer(480, 320, SDL_WINDOW_SHOWN, &sdlWindow, &sdlRenderer);
SDL_Surface *screen = SDL_CreateRGBSurface(SDL_SWSURFACE, 480, 320, 16, 0, 0, 0, 0);
SDL_Texture *sdlTexture = SDL_CreateTexture(sdlRenderer, SDL_PIXELFORMAT_RGB565, SDL_TEXTUREACCESS_STREAMING, 480, 320);
int col=0xf800;
int x, y, z=600;
while(z--){
uint16_t *s = screen->pixels;
for(y=0; y<320; y++){
for(x=0; x<480; x++){
*s++ = col;
}
}
SDL_UpdateTexture(sdlTexture, NULL, screen->pixels, screen->pitch);
SDL_RenderClear(sdlRenderer);
SDL_RenderCopy(sdlRenderer, sdlTexture, NULL, NULL);
SDL_RenderPresent(sdlRenderer);
switch(col){
case 0xf800:
col = 0x7e0;
break;
case 0x7e0:
col = 0x1f;
break;
case 0x1f:
col = 0xf800;
break;
}
SDL_Delay(1000/60);
}
SDL_FreeSurface(screen);
SDL_DestroyTexture(sdlTexture);
SDL_DestroyRenderer(sdlRenderer);
SDL_DestroyWindow(sdlWindow);
SDL_Quit();
return 0;
}
編譯
$ cd $ wget https://github.com/steward-fu/zpg-pro/releases/download/v1.0/toolchain-x64.tar.gz $ tar xvf toolchain-x64.tar.gz $ sudo mv gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu /opt/zpg-sdk $ export PATH=$PATH:/opt/zpg-sdk/bin $ /opt/zpg-sdk/bin/aarch64-none-linux-gnu-gcc main.c -o sdltest -lSDL2 -I/opt/zpg-sdk/aarch64-none-linux-gnu/include/SDL2 -Wl,-rpath-link=/opt/zpg-sdk/aarch64-none-linux-gnu/lib -Wl,-rpath-link=/opt/zpg-sdk/aarch64-none-linux-gnu/lib/pulseaudio