2015-02-28 01:51:53 +00:00
|
|
|
auto Program::loadMedia(string location) -> void {
|
|
|
|
location.transform("\\", "/");
|
2015-03-03 10:14:49 +00:00
|
|
|
if(!location.endsWith("/")) location.append("/");
|
2015-02-28 01:51:53 +00:00
|
|
|
if(!directory::exists(location)) return;
|
|
|
|
|
2015-07-14 09:32:43 +00:00
|
|
|
string type = suffixname(location).ltrim(".", 1L);
|
2015-02-28 01:51:53 +00:00
|
|
|
for(auto& emulator : emulators) {
|
|
|
|
for(auto& media : emulator->media) {
|
|
|
|
if(media.bootable == false) continue;
|
|
|
|
if(media.type != type) continue;
|
|
|
|
return loadMedia(*emulator, media, location);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-07-14 09:32:43 +00:00
|
|
|
auto Program::loadMedia(Emulator::Interface& emulator_, Emulator::Interface::Media& media, const string& location) -> void {
|
2015-03-02 09:13:28 +00:00
|
|
|
unloadMedia();
|
|
|
|
|
Update to v096r07 release.
byuu says:
Changelog:
- configuration files are now stored in localpath() instead of configpath()
- Video gamma/saturation/luminance sliders are gone now, sorry
- added Video Filter->Blur Emulation [1]
- added Video Filter->Scanline Emulation [2]
- improvements to GBA audio emulation (fixes Minish Cap) [Jonas Quinn]
[1] For the Famicom, this does nothing. For the Super Famicom, this
performs horizontal blending for proper pseudo-hires translucency. For
the Game Boy, Game Boy Color, and Game Boy Advance, this performs
interframe blending (each frame is the average of the current and
previous frame), which is important for things like the GBVideoPlayer.
[2] Right now, this only applies to the Super Famicom, but it'll come to
the Famicom in the future. For the Super Famicom, this option doesn't
just add scanlines, it simulates the phosphor decay that's visible in
interlace mode. If you observe an interlaced game like RPM Racing on
a real SNES, you'll notice that even on perfectly still screens, the
image appears to shake. This option emulates that effect.
Note 1: the buffering right now is a little sub-optimal, so there will
be a slight speed hit with this new support. Since the core is now
generating native ARGB8888 colors, it might as well call out to the
interface to lock/unlock/refresh the video, that way it can render
directly to the screen. Although ... that might not be such a hot idea,
since the GBx interframe blending reads from the target buffer, and that
tends to be a catastrophic option for performance.
Note 2: the balanced and performance profiles for the SNES are
completely busted again. This WIP took 6 1/2 hours, and I'm exhausted.
Very much not looking forward to working on those, since those two have
all kinds of fucked up speedup tricks for non-interlaced and/or
non-hires video modes.
Note 3: if you're on Windows and you saved your system folders somewhere
else, now'd be a good time to move them to %localappdata%/higan
2016-01-15 10:06:51 +00:00
|
|
|
mediaPaths(0) = locate({localpath(), "higan/"}, {media.name, ".sys/"});
|
2015-02-28 01:51:53 +00:00
|
|
|
mediaPaths(media.id) = location;
|
2015-04-13 11:16:33 +00:00
|
|
|
folderPaths.append(location);
|
2015-02-28 01:51:53 +00:00
|
|
|
|
2015-07-14 09:32:43 +00:00
|
|
|
emulator = &emulator_;
|
2015-04-21 11:51:57 +00:00
|
|
|
emulator->load(media.id);
|
Update to v094r20 release.
byuu says:
Main reason for this WIP was because of all the added lines to hiro for
selective component disabling. May as well get all the diff-noise apart
from code changes.
It also merges something I've been talking to Cydrak about ... making
nall::string::(integer,decimal) do built-in binary,octal,hex decoding
instead of just failing on those. This will have fun little side effects
all over the place, like being able to view a topic on my forum via
"forum.byuu.org/topic/0b10010110", heh.
There are two small changes to higan itself, though. First up, I fixed
the resampler ratio when loading non-SNES games. Tested and I can play
Game Boy games fine now. Second, I hooked up menu option hiding for
reset and controller selection. Right now, this works like higan v094,
but I'm thinking I might want to show the "Device -> Controller" even if
that's all that's there. It kind of jives nicer with the input settings
window to see the labels there, I think. And if we ever do add more
stuff, it'll be nice that people already always expect that menu there.
Remaining issues:
* add slotted cart loader (SGB, BSX, ST)
* add DIP switch selection window (NSS)
* add timing configuration (video/audio sync)
2015-05-23 05:37:08 +00:00
|
|
|
dsp.setFrequency(emulator->audioFrequency());
|
2015-04-21 11:51:57 +00:00
|
|
|
emulator->power();
|
2015-02-28 01:51:53 +00:00
|
|
|
|
2015-03-03 10:14:49 +00:00
|
|
|
presentation->resizeViewport();
|
2015-04-21 11:51:57 +00:00
|
|
|
presentation->setTitle(emulator->title());
|
2015-08-24 09:42:11 +00:00
|
|
|
presentation->systemMenu.setText(media.name).setVisible(true);
|
Update to v094r13 release.
byuu says:
This version polishes up the input dialogue (reset, erase, disable
button when item not focused, split device ID from mapping name), adds
color emulation toggle, and add dummy menu items for remaining features
(to be filled in later.)
Also, it now compiles cleanly on Windows with GTK.
I didn't test with TDM-GCC-32, because for god knows what reason, the
32-bit version ships with headers from Windows 95 OSR2 only. So I built
with TDM-GCC-64 with arch=x86.
And uh, apparently, moving or resizing a window causes a Visual C++
runtime exception in the GTK+ DLLs. This doesn't happen with trance or
renshuu built with TDM-GCC-32. So, yeah, like I said, don't use -m32.
2015-03-07 10:21:47 +00:00
|
|
|
presentation->toolsMenu.setVisible(true);
|
2015-05-23 05:29:18 +00:00
|
|
|
presentation->updateEmulator();
|
2015-04-21 11:58:59 +00:00
|
|
|
toolsManager->cheatEditor.loadCheats();
|
2015-04-21 11:51:57 +00:00
|
|
|
toolsManager->stateManager.doRefresh();
|
Update to higan and icarus v095r15 release.
r13 and r14 weren't posted as individual releases, but their changelogs
were posted.
byuu says about r13:
I'm not going to be posting WIPs for r13 and above for a while.
The reason is that I'm working on the major manifest overhaul I've
discussed previously on the icarus subforum.
I'm recreating my boards database from scratch using the map files
and the new map analyzer. The only games that will load are ones
I've created board definitions for, and updated
sfc/cartridge/markup.cpp to parse. Once I've finished all the
boards, then I'll update the heuristics.
Then finally, I'll sync the syntax changes over to the fc, gb, gba
cores.
Once that's done, I'll start posting WIPs again, along with a new
build of icarus.
But I'll still post changelogs as I work through things.
Changelog (r13):
- preservation: created new database-builder tool (merges
region-specific databases with boards)
- icarus: support new, external database format
(~/.config/icarus/Database/(Super Famicom.bml, ...)
- added 1A3B-(10,11,12); 1A3B-20
byuu says about r14:
r14 work:
I successfully created mappings for every board used in the US set.
I also updated icarus' heuristics to use the new mappings, and
created ones there for the boards that are only in the JP set.
Then I patched icarus to support pulling games out of the database
when it's used on a game folder to generate a manifest file.
Then I updated a lot of code in higan/sfc to support the new mapping
syntax. sfc/cartridge/markup.cpp is about half the size it used to
be with the new mappings, and I was able to kill off both map/id and
map/select entirely.
Then I updated all four emulated systems (and both subsystems) to
use "board" as the root node, and harmonized their syntax (made them
all more consistent with each other.)
Then I added a manifest viewer to the tools window+menu. It's kind
of an advanced user feature, but oh well. No reason to coddle people
when the feature is very useful for developers. The viewer will show
all manifests in order when you load multi-cart games as well.
Still not going to call any syntax 100% done right now, but
thankfully with the new manifest-free folders, nobody will have to
do anything to use the new format. Just download the new version and
go.
The Super Famicom Event stuff is currently broken (CC92/PF94
boards). That's gonna be fun to support.
byuu says about r15:
EDIT: small bug in icarus with heuristics. Edit
core/super-famicom.cpp line 27:
if(/*auto*/ markup = cartridge.markup) {
Gotta remove that "auto" so that it returns valid markup.
Resolved the final concerns I had with the new manifest format.
Right now there are two things that are definitely broken: MCC (BS-X
Town cart) and Event (CC '92 and PF'94).
And there are a few things that are untested: SPC7110, EpsonRTC,
SharpRTC, SDD1+RAM, SufamiTurbo, BS-X slotted carts.
2015-12-19 08:52:34 +00:00
|
|
|
toolsManager->manifestViewer.doRefresh();
|
2015-03-02 09:13:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
auto Program::unloadMedia() -> void {
|
2015-04-21 11:51:57 +00:00
|
|
|
if(!emulator) return;
|
|
|
|
|
2015-04-21 11:58:59 +00:00
|
|
|
toolsManager->cheatEditor.saveCheats();
|
2015-04-21 11:51:57 +00:00
|
|
|
emulator->unload();
|
|
|
|
emulator = nullptr;
|
2015-03-02 09:13:28 +00:00
|
|
|
|
2015-04-13 11:16:33 +00:00
|
|
|
mediaPaths.reset();
|
|
|
|
folderPaths.reset();
|
2015-03-02 09:13:28 +00:00
|
|
|
|
2015-07-14 09:32:43 +00:00
|
|
|
presentation->setTitle({"higan v", Emulator::Version});
|
2015-03-02 09:13:28 +00:00
|
|
|
presentation->systemMenu.setVisible(false);
|
Update to v094r13 release.
byuu says:
This version polishes up the input dialogue (reset, erase, disable
button when item not focused, split device ID from mapping name), adds
color emulation toggle, and add dummy menu items for remaining features
(to be filled in later.)
Also, it now compiles cleanly on Windows with GTK.
I didn't test with TDM-GCC-32, because for god knows what reason, the
32-bit version ships with headers from Windows 95 OSR2 only. So I built
with TDM-GCC-64 with arch=x86.
And uh, apparently, moving or resizing a window causes a Visual C++
runtime exception in the GTK+ DLLs. This doesn't happen with trance or
renshuu built with TDM-GCC-32. So, yeah, like I said, don't use -m32.
2015-03-07 10:21:47 +00:00
|
|
|
presentation->toolsMenu.setVisible(false);
|
2015-04-21 11:58:59 +00:00
|
|
|
toolsManager->setVisible(false);
|
2015-02-28 01:51:53 +00:00
|
|
|
}
|