int main(int argc, char **argv) { char Name = 'M'; std::string taq = "TaquinA5_2.txt"; if (argc == 3) { std::ifstream infile; infile.open(argv[2]); if (!infile.is_open()) { std::cout << "Error: file <" << argv[2] << ">" << " not found" << std::endl; return (-1); } infile.close(); taq = argv[2]; FileLoader F; std::string S; Puzzle P; SolutionGenerator SG; short unsigned int** Tab; clock_t timeDeb, timeEnd; std::list<Puzzle> OpenedList, ClosedList; int x = 0, y = 0, fg = -42; timeDeb = clock(); DisplayLogo(); F.LoadFile(taq.c_str(), S); std::istringstream In(S); P.SetAlgo(Name); Tab = P.CreatePuzzle(S); std::list<Puzzle>::iterator FirstPuzzle; OpenedList.push_back(P); while (fg != 0 && !OpenedList.empty()) { FirstPuzzle = OpenedList.begin(); fg = Resume(FirstPuzzle, OpenedList, ClosedList, timeEnd); ProcessUp(FirstPuzzle, OpenedList, ClosedList); ProcessDown(FirstPuzzle, OpenedList, ClosedList); ProcessRight(FirstPuzzle, OpenedList, ClosedList); ProcessLeft(FirstPuzzle, OpenedList, ClosedList); (*FirstPuzzle).ClearListTab(); ClosedList.push_back(*FirstPuzzle); OpenedList.erase(FirstPuzzle); } if (fg != 0) std::cout << "NO SOLUTION FOR THIS TAQUIN!!!" << std::endl; std::cout << "CLOSED LIST NUMBER OF CONTENTS : \t\t[" << ClosedList.size() << "]"<< std::endl; std::cout << "TIME ELAPSED : \t\t[" << static_cast<double>(timeEnd - timeDeb) << "] ms." << std::endl; ShowNbMoves(); std::cout << "Cleaning..." << std::endl; Clean(OpenedList, ClosedList); std::cout << "Clean done" << std::endl; } return (0); }
//--------------------------------------------------------------- // void DisplayChannelLogo( int svcNum, byte svcType ) { dword x_coord = 0, y_coord = 0; char buffer2 [256]; x_coord = (((svcNum % MAX_CHANNELS_PER_PAGE) % NUM_LOGO_ON_X_AXIS) * LOGO_SPACE_X) + BASE_X; // calculate x, and y coord for the logo y_coord = (((svcNum % MAX_CHANNELS_PER_PAGE) / NUM_LOGO_ON_X_AXIS) * LOGO_SPACE_Y) + BASE_Y; //if (svcNum >=MAX_CHANNELS_PER_PAGE) //{ //TAP_SPrint(buffer2, "%d %d",x_coord,y_coord); //DisplayMessageWindow(buffer2, "Press OK", "", &dummy); //} if ( svcNum == selectedLogo ) TAP_Osd_FillBox( rgn, x_coord-5, y_coord-5, 70, 49, COLOR_Yellow ); // highlight in yellow else TAP_Osd_FillBox( rgn, x_coord-5, y_coord-5, 70, 49, FILL_COLOUR ); // otherwise clear the space around the logo (remove any highlight) DisplayLogo( rgn, x_coord, y_coord, svcNum, svcType ); // draw the logo }
void Initialize(void){ int i; if(!isEepromFormatted()) FormatEeprom(); cli(); //InitSoundPort(); //ramp-up sound to avoid click #if SOUND_MIXER == MIXER_TYPE_VSYNC //Initialize the mixer buffer //ramp up to avoid initial click for(int j=0;j<MIX_BANK_SIZE*2;j++){ mix_buf[j]=0x80;//(i<128?i:128); } mix_pos=mix_buf; mix_bank=0; #endif #if MIXER_CHAN4_TYPE == 0 //initialize LFSR tr4_barrel_lo=1; tr4_barrel_hi=1; tr4_params=0b00000001; //15 bits no divider (1) #endif #if UART_RX_BUFFER == 1 uart_rx_buf_start=0; uart_rx_buf_end=0; #endif #if SNES_MOUSE == 1 snesMouseEnabled=false; #endif //silence all sound channels for(i=0;i<CHANNELS;i++){ mixer.channels.all[i].volume=0; } //set sync parameters. starts at odd field, in pre-eq pulses, line 1, vsync flag cleared sync_phase=0; sync_flags=0; sync_pulse=SYNC_PRE_EQ_PULSES+SYNC_EQ_PULSES+SYNC_POST_EQ_PULSES; //set rendering parameters render_lines_count_tmp=FRAME_LINES; render_lines_count=FRAME_LINES; first_render_line_tmp=FIRST_RENDER_LINE; first_render_line=FIRST_RENDER_LINE; joypad1_status_hi=0; joypad2_status_hi=0; sound_enabled=1; InitializeVideoMode(); //Initialize I/O registers u16 val; u8 *ptr; for(u8 j=0;j<(sizeof(io_table)>>1);j++){ val=pgm_read_word(&io_table[j]); ptr=(u8*)(val&0xff); *ptr=val>>8; } sei(); DisplayLogo(); }
void Initialize(void){ int i; if(!isEepromFormatted()) FormatEeprom(); cli(); //Initialize the mixer buffer for(i=0;i<MIX_BANK_SIZE*2;i++){ mix_buf[i]=0x80; } mix_pos=mix_buf; mix_bank=0; for(i=0;i<CHANNELS;i++){ mixer.channels.all[i].volume=0; } #if MIXER_CHAN4_TYPE == 0 //initialize LFSR tr4_barrel_lo=1; tr4_barrel_hi=1; tr4_params=0b00000001; //15 bits no divider (1) #endif #if UART_RX_BUFFER == 1 uart_rx_buf_start=0; uart_rx_buf_end=0; #endif #if MIDI_IN == 1 UCSR0B=(1<<RXEN0); //set UART for MIDI in UCSR0C=(1<<UCSZ01)+(1<<UCSZ00); UBRR0L=56; //31250 bauds (.5% error) #endif //stop timers TCCR1B=0; TCCR0B=0; //set ports DDRC=0xff; //video dac DDRB=0xff; //h-sync for ad725 DDRD=(1<<PD7)+(1<<PD4); //audio-out + led PORTD|=(1<<PD4)+(1<<PD3)+(1<<PD2); //turn on led & activate pull-ups for soft-power switches //setup port A for joypads DDRA =0b00001100; //set only control lines as outputs PORTA=0b11111011; //activate pullups on the data lines //PORTD=0; //set sync parameters. starts at odd field, in pre-eq pulses, line 1 sync_phase=SYNC_PHASE_PRE_EQ; sync_pulse=SYNC_PRE_EQ_PULSES; //set rendering parameters render_lines_count_tmp=FRAME_LINES; first_render_line_tmp=FIRST_RENDER_LINE; //clear timers TCNT1H=0; TCNT1L=0; //set sync generator counter on TIMER1 OCR1AH=HDRIVE_CL_TWICE>>8; OCR1AL=HDRIVE_CL_TWICE&0xff; TCCR1B=(1<<WGM12)+(1<<CS10);//CTC mode, use OCR1A for match TIMSK1=(1<<OCIE1A); //generate interrupt on match //set clock divider counter for AD725 on TIMER0 //outputs 14.31818Mhz (4FSC) TCCR0A=(1<<COM0A0)+(1<<WGM01); //toggle on compare match + CTC OCR0A=0; //divide main clock by 2 TCCR0B=(1<<CS00); //enable timer, no pre-scaler //set sound PWM on TIMER2 TCCR2A=(1<<COM2A1)+(1<<WGM21)+(1<<WGM20); //Fast PWM OCR2A=0; //duty cycle (amplitude) TCCR2B=(1<<CS20); //enable timer, no pre-scaler SYNC_PORT=(1<<SYNC_PIN)|(1<<VIDEOCE_PIN); //set sync & chip enable line to hi burstOffset=0; curr_frame=0; vsync_phase=0; joypad1_status_hi=0; joypad2_status_hi=0; snesMouseEnabled=false; sound_enabled=1; //enable color correction ReadButtons(); if(ReadJoypad(0)&BTN_B){ SetColorBurstOffset(4); } InitializeVideoMode(); sei(); DisplayLogo(); }
//***************************************************************************** // // The main code for the application. It sets up the peripherals, displays the // splash screens, and then manages the interaction between the game and the // screen saver. // //***************************************************************************** int main(void) { // // If running on Rev A2 silicon, turn the LDO voltage up to 2.75V. This is // a workaround to allow the PLL to operate reliably. // if(REVISION_IS_A2) { SysCtlLDOSet(SYSCTL_LDO_2_75V); } // // Set the clocking to run at 50MHz from the PLL. // SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ); SysCtlPWMClockSet(SYSCTL_PWMDIV_8); // // Get the system clock speed. // g_ulSystemClock = SysCtlClockGet(); // // Enable the peripherals used by the application. // SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0); SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); // // Configure the GPIOs used to read the state of the on-board push buttons. // GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3); GPIOPadConfigSet(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU); GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_1); GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU); // // Configure the LED, speaker, and UART GPIOs as required. // GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); GPIOPinTypePWM(GPIO_PORTD_BASE, GPIO_PIN_1); GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0); GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0, 0); // // Intialize the Ethernet Controller and TCP/IP Stack. // EnetInit(); // // Configure the first UART for 115,200, 8-N-1 operation. // UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 115200, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE)); UARTEnable(UART0_BASE); // // Send a welcome message to the UART. // UARTCharPut(UART0_BASE, 'W'); UARTCharPut(UART0_BASE, 'e'); UARTCharPut(UART0_BASE, 'l'); UARTCharPut(UART0_BASE, 'c'); UARTCharPut(UART0_BASE, 'o'); UARTCharPut(UART0_BASE, 'm'); UARTCharPut(UART0_BASE, 'e'); UARTCharPut(UART0_BASE, '\r'); UARTCharPut(UART0_BASE, '\n'); // // Initialize the OSRAM OLED display. // RIT128x96x4Init(3500000); // // Initialize the PWM for generating music and sound effects. // AudioOn(); // // Configure SysTick to periodically interrupt. // SysTickPeriodSet(g_ulSystemClock / CLOCK_RATE); SysTickIntEnable(); SysTickEnable(); // // Delay for a bit to allow the initial display flash to subside. // Delay(CLOCK_RATE / 4); // // Play the intro music. // AudioPlaySong(g_pusIntro, sizeof(g_pusIntro) / 2); // // Display the Texas Instruments logo for five seconds (or twelve seconds // if built using gcc). // #if defined(gcc) DisplayLogo(g_pucTILogo, 120, 42, 12 * CLOCK_RATE); #else DisplayLogo(g_pucTILogo, 120, 42, 5 * CLOCK_RATE); #endif // // Display the Code Composer Studio logo for five seconds. // #if defined(ccs) DisplayLogo(g_pucCodeComposer, 128, 34, 5 * CLOCK_RATE); #endif // // Display the Keil/ARM logo for five seconds. // #if defined(rvmdk) || defined(__ARMCC_VERSION) DisplayLogo(g_pucKeilLogo, 128, 40, 5 * CLOCK_RATE); #endif // // Display the IAR logo for five seconds. // #if defined(ewarm) DisplayLogo(g_pucIarLogo, 102, 61, 5 * CLOCK_RATE); #endif // // Display the CodeSourcery logo for five seconds. // #if defined(sourcerygxx) DisplayLogo(g_pucCodeSourceryLogo, 128, 34, 5 * CLOCK_RATE); #endif // // Display the CodeRed logo for five seconds. // #if defined(codered) DisplayLogo(g_pucCodeRedLogo, 128, 32, 5 * CLOCK_RATE); #endif // // Throw away any button presses that may have occurred while the splash // screens were being displayed. // HWREGBITW(&g_ulFlags, FLAG_BUTTON_PRESS) = 0; // // Loop forever. // while(1) { // // Display the main screen. // if(MainScreen()) { // // The button was pressed, so start the game. // PlayGame(); } else { // // The button was not pressed during the timeout period, so start // the screen saver. // ScreenSaver(); } } }