⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 the test file for GP32 gameboy hack
💻 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 + -