예제 #1
0
파일: gfx.c 프로젝트: bentley/puNES
void gfx_cursor_init(void) {
#if defined (__WIN32__)
	gui_cursor_init();
	gui_cursor_set();
#else
	memset(&cursor, 0x00, sizeof(cursor));

	cursor.org = SDL_GetCursor();

	if ((cursor.target = init_system_cursor(target_32x32_xpm)) == NULL) {
	//if ((cursor = init_system_cursor(target_48x48_xpm)) == NULL) {
		cursor.target = cursor.org;
		printf("SDL_Init failed: %s\n", SDL_GetError());
	}

	gfx_cursor_set();
#endif
}
예제 #2
0
파일: input.c 프로젝트: punesemu/puNES
void input_init(BYTE set_cursor) {
	BYTE a;

	r4016.value = 0;

	for (a = PORT1; a <= PORT2; a++) {
		memset(&four_score[a], 0x00, sizeof(_four_score));
	}

	if (vs_system.enabled == TRUE) {
		SET_WR_REG(input_wr_reg_vs);
	} else {
		switch (cfg->input.controller_mode) {
			case CTRL_MODE_NES:
			case CTRL_MODE_FAMICOM:
				SET_WR_REG(input_wr_reg_standard);
				break;
			case CTRL_MODE_FOUR_SCORE:
				SET_WR_REG(input_wr_reg_four_score);
				break;
		}
	}

	for (a = PORT1; a < PORT_MAX; a++) {
		if (vs_system.enabled == TRUE) {
			if (info.extra_from_db & VSZAPPER) {
				if (a == PORT1) {
					input_decode_event[a] = NULL;
					input_add_event[a] = NULL;
					SET_RD_REG(a, input_rd_reg_vs_zapper);
				} else if (a == PORT2) {
					SET_DECODE_EVENT(a, input_decode_event_standard);
					SET_ADD_EVENT(a, input_add_event_standard);
					SET_RD_REG(a, input_rd_reg_vs_standard);
				}
			} else {
				if (a <= PORT2) {
					SET_DECODE_EVENT(a, input_decode_event_standard);
					SET_ADD_EVENT(a, input_add_event_standard);
					SET_RD_REG(a, input_rd_reg_vs_standard);
				}
			}
		} else {
			switch (port[a].type) {
				case CTRL_DISABLED:
				default:
					input_decode_event[a] = NULL;
					input_add_event[a] = NULL;
					if (a <= PORT2) {
						SET_RD_REG(a, input_rd_reg_disabled);
					}
					break;
				case CTRL_STANDARD:
					SET_DECODE_EVENT(a, input_decode_event_standard);
					SET_ADD_EVENT(a, input_add_event_standard);
					if (a <= PORT2) {
						switch (cfg->input.controller_mode) {
							case CTRL_MODE_NES:
								SET_RD_REG(a, input_rd_reg_standard);
								break;
							case CTRL_MODE_FAMICOM:
								SET_RD_REG(a, input_rd_reg_famicon_expansion);
								break;
							case CTRL_MODE_FOUR_SCORE:
								SET_RD_REG(a, input_rd_reg_four_score);
								break;
						}
					}
					break;
				case CTRL_ZAPPER:
					input_decode_event[a] = NULL;
					input_add_event[a] = NULL;
					if (a <= PORT2) {
						SET_RD_REG(a, input_rd_reg_zapper);
					}
					break;
			}
		}

		port[a].index = port[a].zapper = 0;

		{
			BYTE b, state = RELEASED;

			if (((port[a].type_pad == CTRL_PAD_AUTO) && (machine.type != DENDY))
					|| (port[a].type_pad == CTRL_PAD_ORIGINAL)) {
				state = PRESSED;
			}

			for (b = 0; b < 24; b++) {
				if (b < 8) {
					port[a].data[b] = RELEASED;
				} else {
					port[a].data[b] = state;
				}
			}
		}
	}

	if (set_cursor == TRUE) {
		gfx_cursor_set();
	}
}