Sponsored Links

Sponsored Links

Page 25 of 68 FirstFirst ... 15232425262735 ... LastLast
Results 241 to 250 of 680



  1. #241
    Senior Member Fr33m4n's Avatar
    Join Date
    Dec 2007
    Posts
    104
    Sponsored Links
    Sponsored Links
    Just installed it and have tested a few roms. The impression is that most games indeed does work better however my Zelda rom is now no longer working. If I try to load it the system just crashes. Very strange.

  2. #242
    Senior Member squarepusher2's Avatar
    Join Date
    Sep 2010
    Posts
    157
    Sponsored Links
    Sponsored Links
    Quote Originally Posted by Fr33m4n View Post
    Just installed it and have tested a few roms. The impression is that most games indeed does work better however my Zelda rom is now no longer working. If I try to load it the system just crashes. Very strange.
    Legend of Zelda: A Link To The Past (U) you mean? That is totally working - have been playing it for myself on the latest build.

    I suppose a lot of bad dumps are out there on the Internet. It's not my fault, the porter's problem or SNES9x's problem if it doesn't run them.

    The only game that has been found to be incompatible so far is Ms. Pac-Man, and that is a SNES9x 1.52 issue - so nothing I can do about it personally. Wait for a bSNES port perhaps - when Ver Greeneyes is done backporting the latest version to C++98.

    For everything else, SNES9x runs about all mainstream games you can find. If a certain game doesn't work, it's because your ROM is either bad or because SNES9x 1.52 itself doesn't support it.
    Last edited by squarepusher2; 10-02-2010 at 01:14 PM

  3. #243
    Banned User byuusan's Avatar
    Join Date
    Sep 2010
    Posts
    6
    Sponsored Links
    Sponsored Links
    Hi squarepusher,

    You probably already know, but Ver Greeneyes' port now compiles with C++98.

    So long as you're willing, I'll help you with any explanations needed. And thanks in advance for your considering this
    Attached Files Attached Files
    Last edited by byuusan; 10-03-2010 at 01:20 AM

  4. #244
    Junior Member rumblpak's Avatar
    Join Date
    Feb 2007
    Posts
    28
    Sponsored Links
    Sponsored Links
    Hey square,

    thanks for all the great work you are doing but have you thought about forking the original snes9x code (i mean its obvious the original code is not anywhere near as good) and putting your own github up? It'd be much easier to contribute. Plus with the port of bsnes now out I'm sure you're gonna want some help porting it.

    --Ryan

  5. #245
    Senior Member squarepusher2's Avatar
    Join Date
    Sep 2010
    Posts
    157
    Quote Originally Posted by rumblpak View Post
    Hey square,

    thanks for all the great work you are doing but have you thought about forking the original snes9x code (i mean its obvious the original code is not anywhere near as good) and putting your own github up? It'd be much easier to contribute. Plus with the port of bsnes now out I'm sure you're gonna want some help porting it.

    --Ryan
    Yep, pretty much.

    I don't know what happened to eiz or whether he's still around, but yeah - nobody should really have to bother anymore with the initial version, since we're well past that stage by now. And his github repository appears to be read-only, so yeah, perhaps put up a fork for the moment.
    Quote Originally Posted by byuusan View Post
    Hi squarepusher,

    You probably already know, but Ver Greeneyes' port now compiles with C++98.

    So long as you're willing, I'll help you with any explanations needed. And thanks in advance for your considering this
    Thanks byuu. Your suggestions already helped me get the audio/video synchronization totally right with this SNES9x port, and I definitely want to see bSNES on PS3 - it was the first thing that came to mind back when news broke of the PS3 being jailbroken.

    Looking at the already great performance of SNES9x using the latest build (and how I didn't have to do any optimizations of any sort), I'm extremely interested in how well bSNES is going to perform.

    At the moment SNES9x renders directly to frame buffer without any scaling done - I'm going to see if I can hack up a really quick port of bSNES - it will basically have the same bare-bones ROM menu as the SNES9x port but run bSNES instead.

    The goal eventually is to merge the two emulators into one binary and being able to load bSNES or SNES9x in and out. But I'm currently wrestling with some memory allocation/deallocation problems with SNES9x so I think this is too presumptuous for now - best create a separate bSNES port for now.

    Also, I don't know whether you realized this or not, but the fact that you can basically play ANY game (including homebrew apps) with HID-compliant USB joypads means you can play SNES9x right now with these SNES-to-USB joypad converters. Surely as good a reason as any to start contemplating buying a PS3 just as a SNES box
    Last edited by squarepusher2; 10-03-2010 at 05:07 AM Reason: Automerged Doublepost

  6. #246
    Registered User gundamwfan's Avatar
    Join Date
    Sep 2010
    Posts
    2
    Lol. You're the man square, you're the man. I had linux on my PS3 for just this purpose using ZeroGame, but the interface and convenience will eventually be much better due to your work. I just wonder when stores will begin stocking PS3's with firmware 3.42 and above? Scares me every time I think about getting my gf a PS3 for Christmas.

  7. #247
    Senior Member squarepusher2's Avatar
    Join Date
    Sep 2010
    Posts
    157
    OK folks, I finally think I got rid of the crashing issue. It's about bloody time...

    Previously what I did was deinitialize SNES9x whenever you triggered the 'Quit ROM' shortcut (R3+L3) - so it did Memory.Deinit(), Memory.DeinitGraphics(), Memory.DeinitAPU, and so on.

    This caused it to crash every so often when it was getting ready to pass another ROM to the emulator through Memory.LoadROM.

    So what I do now is - when you press L3+R3, the emulator doesn't get exited - it simply pauses itself (S9xSetSoundMute(TRUE)), then when you load a new ROM, at each point where it initializes SNES9x, it checks if SNES9x is already loaded, and if so, will do a 'deinit' first and then a Init function call.

    This apparently gets rid of this major issue. Here is what the main loop looks like now:

    Code:
    int main (void) {
    	cellSysmoduleLoadModule(CELL_SYSMODULE_FS);
    	cellSysmoduleLoadModule(CELL_SYSMODULE_IO);
    	cellSysmoduleLoadModule(CELL_SYSMODULE_AUDIO);
    
    	cellSysutilRegisterCallback(0, sysutil_exit_callback, NULL);
    
    	cellPadUtilPadInit();
    	init_display();
    	init_shader();
    	init_display2();
    	init_sound();
    
    	while(1)
    	{
    		switch(mode_switch)
    		{
    			case 0:
    				rom_menu();
    				break;
    			case 1:
    				//start SNES9x in NTSC mode
    				//init_display();
    				//init_shader();
    				//init_display2();
    				start_snes9x();
    				//deallocate GFX.Screen from memory, and set to NULL
    				//free(GFX.Screen);
    				//GFX.Screen = NULL;
    				break;
    			case 3:
    				cellSysmoduleUnloadModule(CELL_SYSMODULE_FS);
    				cellSysmoduleUnloadModule(CELL_SYSMODULE_IO);
    				cellSysmoduleUnloadModule(CELL_SYSMODULE_AUDIO);
    				cellSysutilUnregisterCallback(0);
    				return 0;
    		}
    	}
    
    	return 0;
    }
    start_snes9x:

    Code:
    	if(load_settings)
    	{
    		init_settings();
    		load_settings = false;
    	}
    
    	if(load_rom)
    	{
    		if (!(snes9x_loaded = init_snes9x())) Settings.Paused = TRUE;
    	}
    
    	//unused variable, delete?
    	//int count = 0;
    	
    	S9xSetSoundMute(FALSE);
    
    	memset(display, 0, color_buf[0].height * color_buf[0].pitch);
    	memset(display_back, 0, color_buf[0].height * color_buf[0].pitch);
    
    	while (is_running) {
    		read_pad();
    
    		if (!Settings.Paused) {
    			make_noise();
    			if (S9xSyncSound())
    				S9xMainLoop();
    		}
    
    		/*
    		if (debug_text)
    			debugOutStr(100, 100, debug_text);
    			*/
    
    		render(false);
    	}
    
    
    	if (snes9x_loaded)
    		Memory.SaveSRAM(S9xGetFilename(".srm", SRAM_DIR));
    	S9xSetSoundMute(TRUE);
    	//snes9x_loaded = false;
    	is_running = true;
    
    }
    init_settings (This is only run once for the entire duration of the time the emulator is running - you'll notice I splitted up all the stuff where it loads the ROM and initializes the graphics and sound and moved that to init_snes9x)

    Code:
    bool init_settings () {
    	ZeroMemory(&Settings, sizeof(Settings));
    
    	Settings.MouseMaster = TRUE;
    	Settings.SuperScopeMaster = TRUE;
    	Settings.JustifierMaster = TRUE;
    	Settings.MultiPlayer5Master = TRUE;
    	Settings.FrameTimePAL = 20000;
    	Settings.FrameTimeNTSC = 16667;
    	Settings.SixteenBitSound = TRUE;
    	Settings.Stereo = TRUE;
    	Settings.SoundPlaybackRate = 48000;
    	//Settings.SoundInputRate = 31942;
    	Settings.SoundInputRate = 31960;
    	Settings.SoundSync = TRUE;
    	Settings.SupportHiRes = TRUE;
    	Settings.Transparency = TRUE;
    	Settings.AutoDisplayMessages = TRUE;
    	Settings.InitialInfoStringTimeout = 120;
    	Settings.HDMATimingHack = 100;
    	Settings.BlockInvalidVRAMAccessMaster = TRUE;
    	Settings.StopEmulation = TRUE;
    	Settings.WrongMovieStateProtection = TRUE;
    	Settings.DumpStreamsMaxFrames = -1;
    	Settings.StretchScreenshots = 1;
    	Settings.SnapshotScreenshots = TRUE;
    	Settings.SkipFrames = AUTO_FRAMERATE;
    	Settings.TurboSkipFrames = 15;
    	Settings.CartAName[0] = 0;
    	Settings.CartBName[0] = 0;
    	Settings.AutoSaveDelay = 0;
    	//Settings.DisplayFrameRate = TRUE;
    
    	CPU.Flags = 0;
    
    }
    init_snes9x (Here you can see the current deinitialisation calls if the global boolean variable snes9x_loaded happens to be 'true':

    Code:
    bool init_snes9x()
    {
    	if(snes9x_loaded)
    	{
    		Memory.Deinit();
    	}
    	Memory.Init();
    
    	if(snes9x_loaded)
    	{
    		S9xDeinitAPU();
    	}
    	S9xInitAPU();
    
    	S9xInitSound(100, 25);
    
    	S9xSetSoundMute(TRUE);
    	S9xSetRenderPixelFormat(RGB565);
    
    	if (!Memory.LoadROM(rom_path)) {
    		debug_text = "load rom failed";
    		return false;
    	}
    
    	Memory.LoadSRAM(S9xGetFilename(".srm", SRAM_DIR));
    
    	GFX.Pitch = 1024;
    	GFX.Screen = (uint16_t *)memalign(1024, 1024 * 478);
    
    	if(snes9x_loaded)
    	{
    		S9xGraphicsDeinit();
    	}
    	S9xGraphicsInit();
    
    	// Controller initialization
    	switch(controller_settings)
    	{
    		case TWO_JOYSTICKS:
    			S9xSetController(0, CTL_JOYPAD, 0, 0, 0, 0);
    			S9xSetController(1, CTL_JOYPAD, 1, 0, 0, 0);
    			break;
    		case MULTITAP:
    			S9xSetController(0, CTL_JOYPAD,	0,0,0,0);
    			S9xSetController(1, CTL_MP5,	1,2,3,4);
    			break;
    	}
    
    	S9xUnmapAllControls();
    
    #define MAP_BUTTON(id, name) S9xMapButton((id), S9xGetCommandT((name)), false)
    
    	MAP_BUTTON(MAKE_BUTTON(PAD_1, BTN_A), "Joypad1 A");
    	MAP_BUTTON(MAKE_BUTTON(PAD_1, BTN_B), "Joypad1 B");
    	MAP_BUTTON(MAKE_BUTTON(PAD_1, BTN_X), "Joypad1 X");
    	MAP_BUTTON(MAKE_BUTTON(PAD_1, BTN_Y), "Joypad1 Y");
    	MAP_BUTTON(MAKE_BUTTON(PAD_1, BTN_SELECT), "Joypad1 Select");
    	MAP_BUTTON(MAKE_BUTTON(PAD_1, BTN_START), "Joypad1 Start");
    	MAP_BUTTON(MAKE_BUTTON(PAD_1, BTN_L), "Joypad1 L");
    	MAP_BUTTON(MAKE_BUTTON(PAD_1, BTN_R), "Joypad1 R");
    	MAP_BUTTON(MAKE_BUTTON(PAD_1, BTN_LEFT), "Joypad1 Left");
    	MAP_BUTTON(MAKE_BUTTON(PAD_1, BTN_RIGHT), "Joypad1 Right");
    	MAP_BUTTON(MAKE_BUTTON(PAD_1, BTN_UP), "Joypad1 Up");
    	MAP_BUTTON(MAKE_BUTTON(PAD_1, BTN_DOWN), "Joypad1 Down");
    	//MAP_BUTTON(MAKE_BUTTON(PAD_1, BTN_QUICKSAVE), "QuickSave010");
    	//MAP_BUTTON(MAKE_BUTTON(PAD_1, BTN_QUICKLOAD), "QuickLoad010");
    	MAP_BUTTON(MAKE_BUTTON(PAD_2, BTN_A), "Joypad2 A");
    	MAP_BUTTON(MAKE_BUTTON(PAD_2, BTN_B), "Joypad2 B");
    	MAP_BUTTON(MAKE_BUTTON(PAD_2, BTN_X), "Joypad2 X");
    	MAP_BUTTON(MAKE_BUTTON(PAD_2, BTN_Y), "Joypad2 Y");
    	MAP_BUTTON(MAKE_BUTTON(PAD_2, BTN_SELECT), "Joypad2 Select");
    	MAP_BUTTON(MAKE_BUTTON(PAD_2, BTN_START), "Joypad2 Start");
    	MAP_BUTTON(MAKE_BUTTON(PAD_2, BTN_L), "Joypad2 L");
    	MAP_BUTTON(MAKE_BUTTON(PAD_2, BTN_R), "Joypad2 R");
    	MAP_BUTTON(MAKE_BUTTON(PAD_2, BTN_LEFT), "Joypad2 Left");
    	MAP_BUTTON(MAKE_BUTTON(PAD_2, BTN_RIGHT), "Joypad2 Right");
    	MAP_BUTTON(MAKE_BUTTON(PAD_2, BTN_UP), "Joypad2 Up");
    	MAP_BUTTON(MAKE_BUTTON(PAD_2, BTN_DOWN), "Joypad2 Down");
    	switch(controller_settings)
    	{
    		case MULTITAP:
    			//player 3 - for multitap
    			MAP_BUTTON(MAKE_BUTTON(PAD_3, BTN_A), "Joypad3 A");
    			MAP_BUTTON(MAKE_BUTTON(PAD_3, BTN_B), "Joypad3 B");
    			MAP_BUTTON(MAKE_BUTTON(PAD_3, BTN_X), "Joypad3 X");
    			MAP_BUTTON(MAKE_BUTTON(PAD_3, BTN_Y), "Joypad3 Y");
    			MAP_BUTTON(MAKE_BUTTON(PAD_3, BTN_SELECT), "Joypad3 Select");
    			MAP_BUTTON(MAKE_BUTTON(PAD_3, BTN_START), "Joypad3 Start");
    			MAP_BUTTON(MAKE_BUTTON(PAD_3, BTN_L), "Joypad3 L");
    			MAP_BUTTON(MAKE_BUTTON(PAD_3, BTN_R), "Joypad3 R");
    			MAP_BUTTON(MAKE_BUTTON(PAD_3, BTN_LEFT), "Joypad3 Left");
    			MAP_BUTTON(MAKE_BUTTON(PAD_3, BTN_RIGHT), "Joypad3 Right");
    			MAP_BUTTON(MAKE_BUTTON(PAD_3, BTN_UP), "Joypad3 Up");
    			MAP_BUTTON(MAKE_BUTTON(PAD_3, BTN_DOWN), "Joypad3 Down");
    			//player 4 - for multitap
    			MAP_BUTTON(MAKE_BUTTON(PAD_4, BTN_A), "Joypad4 A");
    			MAP_BUTTON(MAKE_BUTTON(PAD_4, BTN_B), "Joypad4 B");
    			MAP_BUTTON(MAKE_BUTTON(PAD_4, BTN_X), "Joypad4 X");
    			MAP_BUTTON(MAKE_BUTTON(PAD_4, BTN_Y), "Joypad4 Y");
    			MAP_BUTTON(MAKE_BUTTON(PAD_4, BTN_SELECT), "Joypad4 Select");
    			MAP_BUTTON(MAKE_BUTTON(PAD_4, BTN_START), "Joypad4 Start");
    			MAP_BUTTON(MAKE_BUTTON(PAD_4, BTN_L), "Joypad4 L");
    			MAP_BUTTON(MAKE_BUTTON(PAD_4, BTN_R), "Joypad4 R");
    			MAP_BUTTON(MAKE_BUTTON(PAD_4, BTN_LEFT), "Joypad4 Left");
    			MAP_BUTTON(MAKE_BUTTON(PAD_4, BTN_RIGHT), "Joypad4 Right");
    			MAP_BUTTON(MAKE_BUTTON(PAD_4, BTN_UP), "Joypad4 Up");
    			MAP_BUTTON(MAKE_BUTTON(PAD_4, BTN_DOWN), "Joypad4 Down");
    			break;
    	}
    	
    	return true;
    }
    So this seems to take care of it. Of course, never say never, but by this time it would have already crashed, and it doesn't appear to be doing so - so I think I'm going to put out a new release now - at the very least it won't bring you back to the XMB after having loaded four more ROMs.

    Also, I have set up a fork of SNES9x PS3, but I'm having a bit of trouble doing a 'git clone' at the moment of my fork - I think it's Mingw related, I had Cygwin and Mingw running side by side - I think I'm going to setup Mingw again and remove Cygwin and see if I can get past the error that occurs.

  8. #248
    Senior Member squarepusher2's Avatar
    Join Date
    Sep 2010
    Posts
    157
    OK, this is a pretty major release - because it appears the ROM crashing bug is now totally gone. Couldn't trigger a single crash in about an hour of testing's worth - playing games, then going back to the ROM browser, then loading another ROM. Perhaps someone wants to put it through even more rigorous testing, but I don't think you'll be able to crash it now.

    SNES9x PS3 - Square - Build 4.3.4 (w/ Source)

    Code:
    CHANGELOG
    =========
    Build 4.3.4 (3-10-2010):
    ------------------------
    * Removed the hack that caused the emulator to exit to the XMB after loading the fourth ROM - this was to disguise a really bad crashing bug. This hack no longer seems to be needed.
    * If you exit a ROM with L3+R3, you can return back to the game while inside the ROM Browser menu by pressing L2+R2 simultaneously.
    Attached Files Attached Files

  9. #249
    Registered User hungryduck's Avatar
    Join Date
    Sep 2010
    Posts
    7
    Thanks Squarepusher.

  10. #250
    Registered User PARDES's Avatar
    Join Date
    Jan 2010
    Posts
    36
    Does this suport HIGH DEF ?

 

Sponsored Links

Page 25 of 68 FirstFirst ... 15232425262735 ... LastLast
Affiliates - Contact Us - PS3 Downloads - Privacy Statement - Site Rules - Top - © 2014 PlayStation 3 News