int get_joypad() { int res = 0; /*#define KEYS_CUR (( ((~REG_KEYINPUT)&0x3ff) | (((~IPC->buttons)&3)<<10) | \ (((~IPC->buttons)<<6) & (KEY_TOUCH|KEY_LID) ))^KEY_LID) keys = KEYS_CUR;*/ //scanKeys(); keys = keysCurrent(); #if 0 if( (keys & KEY_L)) { if ((keys & KEY_UP)) { APU_MAX++; } if ((keys & KEY_DOWN)) { APU_MAX--; if (APU_MAX < 100) APU_MAX = 100; } if ((keys & KEY_LEFT)) { APU_printLog(); } if ((keys & KEY_RIGHT)) { LOG("%04x %04x %02x %02x %04x %04x\n", CPU.PC, (uint32)((sint32)PCptr+(sint32)SnesPCOffset), PORT_SNES_TO_SPC[1], PORT_SPC_TO_SNES[1], (*(uint32*)memUncached(0x2FE0000)) & 0xFFFF, *(uint16 *)(APU_RAM_ADDRESS+0x18)); //PORT_SNES_TO_SPC[1] = 0x44; } } #endif if ((keys & KEY_L) && ( keys & KEY_R ) && ( keys & KEY_START)) { if (keys & KEY_LEFT) { if (joypad_conf_mode) return 0; CFG.mouse ^= 1; /* lcdSwap(); if (GUI.hide) setBacklight(CFG.mouse ? PM_BACKLIGHT_BOTTOM : PM_BACKLIGHT_TOP);*/ myLCDSwap(); joypad_conf_mode = 1; return 0; } if (keys & KEY_RIGHT) { if (joypad_conf_mode) return 0; CFG.mouse = 0; /* lcdSwap(); if (GUI.hide) setBacklight(CFG.mouse ? PM_BACKLIGHT_BOTTOM : PM_BACKLIGHT_TOP);*/ myLCDSwap(); joypad_conf_mode = 1; return 0; } if (keys & KEY_UP) { if (joypad_conf_mode) return 0; PPU_ChangeLayerConf(CFG.LayersConf+1); joypad_conf_mode = 1; return 0; } if (keys & KEY_DOWN) { if (joypad_conf_mode) return 0; PPU_ChangeLayerConf(0); joypad_conf_mode = 1; return 0; } joypad_conf_mode = 0; return 0; } #if 0 if ((keys & KEY_L) && ( keys & KEY_R ) && ( keys & KEY_SELECT)) { if (keys & KEY_LEFT) { if (joypad_conf_mode) return 0; CFG.BG_priority ^= 1; LOG("BG_pri = %d\n", CFG.BG_priority); joypad_conf_mode = 1; return 0; } if (keys & KEY_RIGHT) { if (joypad_conf_mode) return 0; CFG.Debug ^= 1; if (CFG.Debug) showDebugMenu(); joypad_conf_mode = 1; return 0; } if (keys & KEY_UP) { if (joypad_conf_mode) return 0; CFG.Debug2 --; LOG("Debug = %d\n", CFG.Debug); return 0; } if (keys & KEY_DOWN) { if (joypad_conf_mode) return 0; CFG.Debug2 ++; LOG("Debug = %d\n", CFG.Debug); return 0; } joypad_conf_mode = 0; return 0; } #endif /* scanKeys(); keys = keysHeld();*/ if( keys & KEY_B ) res |= 0x8000; if( keys & KEY_Y ) res |= 0x4000; if( keys & KEY_SELECT ) res |= 0x2000; if( keys & KEY_START ) res |= 0x1000; if( keys & KEY_UP ) res |= 0x0800; if( keys & KEY_DOWN ) res |= 0x0400; if( keys & KEY_LEFT ) res |= 0x0200; if( keys & KEY_RIGHT ) res |= 0x0100; if( keys & KEY_A ) res |= 0x0080; if( keys & KEY_X ) res |= 0x0040; if( keys & KEY_L ) res |= 0x0020; if( keys & KEY_R ) res |= 0x0010; if (CFG.mouse) { if((keys & KEY_LEFT) || (keys & KEY_Y)) mouse_cur_b = 1; if((keys & KEY_RIGHT) || (keys & KEY_A)) mouse_cur_b = 2; if( ( !(keys & KEY_L) && (keys & KEY_DOWN) ) || ( !(keys & KEY_R) && (keys & KEY_B) )) mouse_cur_b = 0; if (keys & KEY_SELECT) PPU_reset(); if( (keys & KEY_L) || (keys & KEY_R) ) { if (((keys & KEY_UP) || (keys & KEY_X)) && GFX.YScroll > 0) { GFX.YScroll--; GFX.BG3YScroll = GFX.YScroll; } if (((keys & KEY_DOWN) || (keys & KEY_B)) && GFX.YScroll < 32) { GFX.YScroll++; GFX.BG3YScroll = GFX.YScroll; } } touchPosition touchXY; touchRead(&touchXY); if (keys & KEY_TOUCH) { int tx=0, ty=0; tx = touchXY.px; if (CFG.Scaled == 0) // No scaling ty = touchXY.py+GFX.YScroll; else if (CFG.Scaled == 1) // Half scaling ty = touchXY.py*208/192+12; // FIXME else if (CFG.Scaled == 2) // Full screen ty = touchXY.py*224/192; if (CFG.MouseMode == 0) { SNES.mouse_x = tx; SNES.mouse_x = ty; } else if (CFG.MouseMode == 1) { SNESC.RAM[CFG.MouseXAddr] = tx+CFG.MouseXOffset; SNESC.RAM[CFG.MouseYAddr] = ty+CFG.MouseYOffset; } if (CFG.MouseMode == 2) { *(uint16 *)(&SNESC.RAM[CFG.MouseXAddr]) = tx*2; *(uint16 *)(&SNESC.RAM[CFG.MouseYAddr]) = ty*2; } if( (!(keys & KEY_L) && (keys & KEY_UP)) || (!(keys & KEY_R) && (keys & KEY_X)) ) { SNES.prev_mouse_x = SNES.mouse_x; SNES.prev_mouse_y = SNES.mouse_y; SNES.mouse_b = 0; } else SNES.mouse_b = mouse_cur_b; } else SNES.mouse_b = 0; } return res; }
RenderWidget::RenderWidget() { /// DEBUG DRAW m_draw_debug_button = new QPushButton("Debug Gizmos"); m_draw_debug_menu = new QMenu(); m_draw_debug = m_draw_debug_menu->addAction("draw gizmos"); m_draw_debug->setCheckable(true); m_draw_debug->setChecked(RENDER_MANAGER.getDrawDebug()); m_draw_debug_menu->addSeparator(); RenderManager::DebugGizmosFilter filter = RENDER_MANAGER.getDrawDebugFilter(); m_draw_transforms = m_draw_debug_menu->addAction("transforms"); m_draw_transforms->setCheckable(true); m_draw_transforms->setChecked(filter.draw_transforms); m_draw_lights = m_draw_debug_menu->addAction("lights"); m_draw_lights->setCheckable(true); m_draw_lights->setChecked(filter.draw_lights); m_draw_cameras = m_draw_debug_menu->addAction("cameras"); m_draw_cameras->setCheckable(true); m_draw_cameras->setChecked(filter.draw_cameras); m_draw_skeletons = m_draw_debug_menu->addAction("skeletons"); m_draw_skeletons->setCheckable(true); m_draw_skeletons->setChecked(filter.draw_skeletons); m_draw_colliders = m_draw_debug_menu->addAction("colliders"); m_draw_colliders->setCheckable(true); m_draw_colliders->setChecked(filter.draw_colliders); /// OPTIONS m_options_button = new QPushButton("Options"); m_options_menu = new QMenu(); m_options_shadows = m_options_menu->addAction("shadows"); m_options_shadows->setCheckable(true); m_options_shadows->setChecked(RENDER_MANAGER.getShadowsEnabled()); m_options_bloom = m_options_menu->addAction("bloom"); m_options_bloom->setCheckable(true); m_options_bloom->setChecked(RENDER_MANAGER.getBloomEnabled()); m_options_sss = m_options_menu->addAction("SSS"); m_options_sss->setCheckable(true); m_options_sss->setChecked(RENDER_MANAGER.getSSSEnabled()); m_options_lightscattering = m_options_menu->addAction("LightScattering"); m_options_lightscattering->setCheckable(true); m_options_lightscattering->setChecked(RENDER_MANAGER.getLightScatteringEnabled()); m_options_normalmapping = m_options_menu->addAction("Normal mapping"); m_options_normalmapping->setCheckable(true); m_options_normalmapping->setChecked(RENDER_MANAGER.getNormalMappingEnabled()); m_options_specularmapping = m_options_menu->addAction("Specular mapping"); m_options_specularmapping->setCheckable(true); m_options_specularmapping->setChecked(RENDER_MANAGER.getSpecularMappingEnabled()); m_options_forward_pipeline = m_options_menu->addAction("Forward pipeline"); m_options_forward_pipeline->setCheckable(true); m_options_deferred_pipeline = m_options_menu->addAction("Deferred pipeline"); m_options_deferred_pipeline->setCheckable(true); QActionGroup* pipelinesGroup = new QActionGroup(m_options_menu); pipelinesGroup->addAction(m_options_forward_pipeline); pipelinesGroup->addAction(m_options_deferred_pipeline); if(RENDER_MANAGER.getRenderPipeline() == RenderManager::FORWARD_PIPELINE) m_options_forward_pipeline->setChecked(true); else m_options_deferred_pipeline->setChecked(true); /// CAMERAS m_cameras_combo = new QComboBox(); m_cameras_combo->setModel(CAMERA_MANAGER.getDebugModel()); m_cameras_combo->setView(CAMERA_MANAGER.getDebugView()); QHBoxLayout* layout = new QHBoxLayout; layout->addWidget(m_draw_debug_button); layout->addWidget(m_options_button); layout->addWidget(m_cameras_combo); //layout->addStretch(1); setLayout(layout); setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Maximum); connect(m_draw_debug_button, SIGNAL(clicked()), this, SLOT(showDebugMenu())); connect(m_draw_debug, SIGNAL(triggered()), this, SLOT(drawDebugChanged())); connect(m_draw_colliders, SIGNAL(triggered()), this, SLOT(drawDebugFilterChanged())); connect(m_draw_cameras, SIGNAL(triggered()), this, SLOT(drawDebugFilterChanged())); connect(m_draw_transforms, SIGNAL(triggered()), this, SLOT(drawDebugFilterChanged())); connect(m_draw_lights, SIGNAL(triggered()), this, SLOT(drawDebugFilterChanged())); connect(m_draw_skeletons, SIGNAL(triggered()), this, SLOT(drawDebugFilterChanged())); connect(m_options_button, SIGNAL(clicked()), this, SLOT(showOptionsMenu())); connect(m_options_shadows, SIGNAL(triggered()), this, SLOT(optionShadowsChanged())); connect(m_options_bloom, SIGNAL(triggered()), this, SLOT(optionBloomChanged())); connect(m_options_sss, SIGNAL(triggered()), this, SLOT(optionSSSChanged())); connect(m_options_lightscattering, SIGNAL(triggered()), this, SLOT(optionLightScatteringChanged())); connect(m_options_normalmapping, SIGNAL(triggered()), this, SLOT(optionNormalMappingChanged())); connect(m_options_specularmapping, SIGNAL(triggered()), this, SLOT(optionSpecularMappingChanged())); connect(m_options_forward_pipeline, SIGNAL(triggered()), this, SLOT(optionPipelineToForward())); connect(m_options_deferred_pipeline, SIGNAL(triggered()), this, SLOT(optionPipelineToDeferred())); }