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

📄 video.c

📁 gameboy 模拟器的源代码
💻 C
字号:

#include <stdlib.h>
#include "fb.h"
#include "input.h"
#include <stdio.h>
#include "pcm.h"


struct fb fb;
int swapButtons;

struct pcm pcmaudio;


extern void gb_vidset(unsigned char*);
extern void gb_setbuttons(int aSettings);
extern int gb_getbuttons();

void vid_init()
	{
	fb.ptr = (unsigned char*)gb_malloc(144*160*2);
	memset(fb.ptr, 0, (144*160*2));
	fb.pitch = 320;
	fb.w = 160;
	fb.h = 144;
	fb.dirty = 1;
	fb.enabled = 2;
	fb.yuv = 0;

	fb.indexed = 0;
	fb.cc[0].r = fb.cc[1].r = fb.cc[2].r = 4;
	fb.cc[0].l = 8;
	fb.cc[1].l = 4;
	fb.cc[2].l = 0;

	fb.pelsize = 2;

	gb_vidset(fb.ptr);
	}


void vid_close()
	{
	gb_free(fb.ptr);
	gb_free(pcmaudio.buf);
	}


int vid_toggle_enable()
	{
	fb.enabled--;
	if (fb.enabled < 0)
		{
		fb.enabled = 2;
		}
	return (fb.enabled != 0);
	}

unsigned char* vidptr()
	{
	return fb.ptr;
	}



void PostEvent(int aScancode, int aDown)
{
	if (aScancode)
	{
		event_t ev;
		ev.type = aDown ?  EV_PRESS : EV_RELEASE;
		ev.code = aScancode;
		ev_postevent(&ev);
	}
}

void doSaveState(char *name)
	{
	FILE* f;

	swapButtons = gb_getbuttons();

	if ((f = fopen(name, "wb")))
		{
			savestate(f);
			fclose(f);
		}
	}

void doLoadState(char *name)
	{
	FILE* f;

	if ((f = fopen(name, "rb")))
	{
		loadstate(f);
		fclose(f);
		vram_dirty();
		pal_dirty();
		sound_dirty();
		mem_updatemap();
	}

	gb_setbuttons(swapButtons);
	}


 void pcm_init()
	{
	int a;
	a = &pcmaudio;

	pcmaudio.hz = PCM_HZ;
	pcmaudio.len = 4096;
	pcmaudio.buf = (signed short*)gb_malloc(pcmaudio.len * 2);
	pcmaudio.pos = 0;

	sound_reset();

	}


 void pcm_submit()
	{
	int a;
//	a = pcmaudio.pos;

	gb_submitsound(pcmaudio.buf, pcmaudio.pos);
	pcmaudio.pos = 0;
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -