📄 main.cpp
字号:
//////////////////////////////////////////////////////////////////////////////// main.cpp //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Includes ////////////////////////////////////////////////////////////////////////////////#include "GP32.h"#include "smf_fat.h" // smInit()#include <stdio.h> // file i/o#include <sys/unistd.h> // chdir//////////////////////////////////////////////////////////////////////////////// Typedefs ////////////////////////////////////////////////////////////////////////////////typedef unsigned short Screen[320][240];//////////////////////////////////////////////////////////////////////////////// Variables ////////////////////////////////////////////////////////////////////////////////extern const unsigned short font8x8[8][256][8];Screen &screen = *(Screen *)0xC7B4000; // 0x0C800000 - 320*240*2*2 - 0x1000 = 0xC7B4000int _wherex=0, _wherey=0;//////////////////////////////////////////////////////////////////////////////// Print ////////////////////////////////////////////////////////////////////////////////void Print(const char *s){ _wherex = 0; while (*s) { for (int x=0; x<8; x++) { for (int y=0; y<8; y++) { screen[8*_wherex + x][8*(29-_wherey) + y] = font8x8[x][255 - *s][y]; } } _wherex++; s++; } _wherey++;}//////////////////////////////////////////////////////////////////////////////// Init ////////////////////////////////////////////////////////////////////////////////int Init(){ // init some registers // uhh... crashes?? oh whatever... /*{ CLKCON clkcon; clkcon.STOP_BIT = 0; clkcon.SL_IDLE = 0; clkcon.IDLE_BIT = 0; clkcon.LCDC = 1; clkcon.USB_host = 1; clkcon.USB_device = 1; clkcon.PWMTIMER = 1; clkcon.MMC = 1; clkcon.UART0 = 1; clkcon.UART1 = 1; clkcon.GPIO = 1; clkcon.RTC = 1; clkcon.ADC = 1; clkcon.IIC = 1; clkcon.IIS = 1; clkcon.SPI = 1; rCLKCON = *(unsigned int *)&clkcon; }*/ // init some more registers { LCDCON1 lcdcon1; lcdcon1.BPPMODE = 12; // 16 bits mode lcdcon1.CLKVAL = 3; lcdcon1.ENVID = 1; lcdcon1.MMODE = 0; lcdcon1.PNRMODE = 3; rLCDCON1 = *(unsigned int *)&lcdcon1; } { LCDCON2 lcdcon2; lcdcon2.LINEVAL = 320-1; lcdcon2.VBPD = 1; lcdcon2.VFPD = 2; lcdcon2.VSPW = 1; rLCDCON2 = *(unsigned int *)&lcdcon2; } { LCDCON3 lcdcon3; lcdcon3.HBPD = 6; lcdcon3.HFPD = 2; lcdcon3.HOZVAL = 240-1; rLCDCON3 = *(unsigned int *)&lcdcon3; } { LCDCON4 lcdcon4; lcdcon4.ADDVAL = 0; lcdcon4.HSPW = 4; lcdcon4.PALADDEN = 0; rLCDCON4 = *(unsigned int *)&lcdcon4; } { LCDCON5 lcdcon5; lcdcon5.BSWP = 0; lcdcon5.ENLEND = 0; lcdcon5.HSTATUS = 2; lcdcon5.HWSWP = 1; lcdcon5.INVENDLINE = 0; lcdcon5.INVVCLK = 1; lcdcon5.INVVD = 0; lcdcon5.INVVDEN = 0; lcdcon5.INVVFRAME = 1; lcdcon5.INVVLINE = 1; lcdcon5.VSTATUS = 2; lcdcon5.RESERVED4 = 0; rLCDCON5 = *(unsigned int *)&lcdcon5; } { LCDSADDR1 lcdsaddr1; LCDSADDR2 lcdsaddr2; LCDSADDR3 lcdsaddr3; lcdsaddr1.LCDBANK = (unsigned int)&screen >> 22; // bank lcdsaddr1.LCDBASEU = ((unsigned int)&screen & 0x3FFFFF) >> 1; // begin offset (per 16 bits) lcdsaddr2.LCDBASEL = lcdsaddr1.LCDBASEU + 320*240; // end offset (per 16 bits) lcdsaddr3.OFFSIZE = 0; lcdsaddr3.PAGEWIDTH = 240; rLCDSADDR1 = *(unsigned int *)&lcdsaddr1; rLCDSADDR2 = *(unsigned int *)&lcdsaddr2; rLCDSADDR3 = *(unsigned int *)&lcdsaddr3; } if (smInit()) { Print("smInit error"); return -1; } //if (smMountVol(0, "dev0")) { Print("smMountVol error"); return -1 } // not needed return 0;}//////////////////////////////////////////////////////////////////////////////// main ////////////////////////////////////////////////////////////////////////////////int main(int argc, char *argv[]){ if (Init()) { while (1); } // fill display { for (int x=0; x<320; x++) { for (int y=0; y<240; y++) { screen[x][y] = (31)<<11 | (31)<<6 | (y*32/240)<<1; } } } Print("Little test..."); char s[256]; if (chdir("GAME")) { Print("chdir error"); while (1); } if (chdir("..")) { Print("chdir error"); while (1); } FILE *f = fopen("/GAME/./../test.txt", "rt"); if (!f) { Print("fopen error"); while (1); } fgets(s, 256, f); Print(s); if (fclose(f)) { Print("fclose error"); while (1); } while (1); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -